MotionBoard CloudとOffice365を連携してみた


## はじめに
CDataアダプターの提供で、Office365とMotionBoardが連携できるようになりました[^1]。
会議時間や空き時間の占める割合等が可視化できたり、活用シーンはいろいろありそう。

連携に必要な手順を一通りまとめてみました。

![連携イメージ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/705726/17e7b5a9-8fab-432a-1be9-8162745f67ea.png "こんな感じ")

<details><summary>MotionBoardとは</summary>
様々なデータを1つの画面上で統合し分析できるBIツールで、
チャートの種類も多くデータを直感的に把握することができます。
※詳しくはウイングアーク１ｓｔ社のHPを参照
[ウイングアーク１ｓｔ株式会社　MotionBoard](https://www.wingarc.com/product/motionboard/index.html)
</details>

## 使用した環境
連携に必要な環境は以下になります。
Microsoft Azureの方は会社の組織アカウントを利用したため権限的な制約がありました。

+ Microsoft Azure
+ MotionBoard Cloud[^2]

## 設定手順
### ドライバセットアップ（オンプレ版のみ）
MotionBoardオンプレ版を利用している場合はドライバのセットアップが必要です。
Cloud版の場合はこちらの手順はスキップしてください。

[MotionBoard Ver. 6.2 CDataアダプター](https://cs.wingarc.com/ja/system_requirement/000021603)の配布ページにアクセスし、Office365の先行版をダウンロードします。
zipを解凍すると以下のファイルが含まれています。設定方法.txtを参照してセットアップをしてください。

+ jdbc_office365_0.zip
+ リリースノート.txt
+ 設定方法.txt

### Microsoft Azureの設定
#### アプリケーションの登録
MotionBoard Cloudからデータを参照する際には、Office365へのアクセス許可を持ったアプリケーションが必要になります。
アプリケーションの登録はMicrosoft Azure上で行います。
少しわかりにくいところですが、ここさえ乗り越えてしまえばあとは簡単です。

Microsoft Azureの[アプリの登録画面](https://portal.azure.com/#blade/Microsoft_AAD_RegisteredApps/ApplicationsListBlade)で［新規登録］を選択し、画面に沿って設定をします。
リダイレクトURIにはMotionBoard CloudのURLに続けて
`/oauth2/cdata/oauth2callback`
と入力してください。

MotionBoard Cloudを利用した場合、以下のように記述します。

```example.txt
https://cloud.motionboard.jp/motionboard/oauth2/cdata/oauth2callback
```

<details><summary>リダイレクトURIとは</summary>
正常に認証されたあとのユーザーの送信先のこと。
例の場合、認証後にMotionBoard Cloudのページへと誘導します。
</details>

#### アクセス許可の追加
続いて、作成したアプリケーションにアクセス許可を追加し、所定のAPIが使用できる状態にします。
`User.Read`のみだとオブジェクトに対するアクセスができません。
例えばCalendarsオブジェクトを参照できるようにしたい場合、`Calendars.Read`を追加します。

![azure_アクセス許可 .gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/705726/5cc2364c-0b74-745b-affb-6b86a779f5d8.gif "アクセス許可")


アクセス許可には管理者の同意が必要な場合と不要の場合があります。
自分のデータを取得するだけのAPIであれば不要ですが、組織内のほかの人のデータも・・・となると管理者の同意が必要になるようです[^3]。
弊社の方針上ほかの社員のデータ参照がNGのため、とりあえず自分のデータを参照できるように設定してみました。

#### アプリケーションシークレットの設定

アプリケーションシークレットとは、

>トークンの要求時にアプリケーションが自身の ID を証明するために使用する秘密の文字列です。

だそうです。
要するに認証用のパスワードのことです。
MotionBoard Cloud側での設定に必要なので先にやっておきましょう。

![azure_アプリケーションシークレット.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/705726/768795a0-2283-f05b-d4cf-c7545b85b6a9.gif "アプリケーションシークレット")

以上でMicrosoft Azure側の設定が完了しました。

### MotionBoard Cloudの接続設定
作成したアプリケーションとの接続設定をしていきましょう。
管理者権限を持つユーザーでログインし、［管理］＞［システム設定］＞［接続/認証］＞［外部接続］を選択します。
Office365の外部接続設定を新しく作成します。

![新規外部接続作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/705726/066b822f-7c04-3d68-3fa8-4fc18f9c7268.png "新規外部接続作成")

事前に作成したアプリケーションの内容に基づいて、情報を入力していきます。
アプリケーションIDとアプリケーションシークレットは名前の通りなので割愛します。

+ コールバックURL：アプリケーションのリダイレクトURIのこと。
+ パーミッション：アプリケーションのアクセス許可のこと。カンマ区切りで入力します。

![外部接続設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/705726/2ed6d6b3-f10f-1662-9306-7bc6f3b3f16b.png "外部接続設定")

外部接続設定が保存できたらMotionBoard Cloudの設定は完了です。

![連携成功.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/705726/c76ff289-5fa7-bbef-56a9-6a77e2a4d891.png "成功")

データソースの選択画面から選べるようになりました＼( 'ω')／

## おわりに
一通り連携方法をご紹介しました。
ある程度環境は整ったのでここからは分析の世界。
良い感じの活用例が思い浮かんだらまた投稿します！

[^1]: 2021年3月現在、先行版のみのリリースです。
[^2]: 管理者権限を持つユーザーでログインする必要があります。
[^3]: 詳しい内容は[Microsoft Graphのアクセス許可のリファレンス](https://docs.microsoft.com/ja-jp/graph/permissions-reference)に記載されています。