MotionBoardでユーザー情報を取得する方法

## MotionBoardでユーザー属性の情報を画面に表示してみる
MotionBoardにログインしたユーザーの氏名や関連情報を画面に表示したり、検索初期値にしたいことはありませんか？

### イメージ図 ###
![イメージ図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343290/e1338865-c0a6-ba71-95cd-6cab156ed48f.png)


＜ポイント＞
 ①ボードを開いた際にログインユーザーの名前（日本語）が表示される。
 ②ボードを開いた際にログインユーザーの所属部署が検索初期値に設定されている。
<dl>
今回はこんな感じのボードを作ってみようと思います。

### 事前準備 ###
##### マスタの準備 #####
当然ですがユーザー情報のデータを用意する必要があります。
今回は「従業員マスタ」をDr.Sumに用意することにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343290/7c9782d4-9624-3914-ad4a-c045312f9d28.png)
※データはDr.Sumではなく、他のデータベースやCSVでも構いません。

##### MotionBoardのユーザー作成 #####
MotionBoardにユーザーを作成します。
ユーザー作成のポイントは**MotionBoardのユーザーID と マスタの従業員ID を同じにすること**です。
![MBユーザー作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343290/d1c3fbf2-3482-f3f4-f58e-88ac2b3b6c15.png)
今回はわかりやすいようにユーザー名と従業員名を一致させていますが、ここは異なってもDr.Sumから取得するように作るので適当で構いません。
その他の設定も今回は無関係なのでほとんどデフォルトにしています。

### 手順1 ###
それでは早速ボード作成を始めます。
まずは従業員情報の取得元となるデータソースを作成します。

ボード管理画面を開き、データ管理タブで新規データソースを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343290/fcc1f37c-ec58-7b9d-040b-0d8041e189df.png)
ここでは従業員マスタを選択すれば他は何も設定しなくて良いです。OKで保存。

### 手順2 ###
MotionBoardから従業員マスタの値を取得する処理を実装します。
ボタンアイテムをボードに作成しましょう。ちなみにこのボタンは後で見えないように隠すので、まとめて非表示にするためのコンテナを適当に作成してその中にボタンを置くといいでしょう。

こんな感じでボタンを配置して
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343290/424a7a0a-b745-0a92-05c3-dfd24cc22826.png)

ユーザーシステム変数読み込みを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343290/dd138564-c541-7f3a-7472-0c48186afbf5.png)


アクションの中身はこんな感じ
データソース定義は手順1で作成したもの。
「システム変数名」は取得したい項目に対して設定しましょう。今回は従業員名を画面の左上に表示、部と課を検索初期値にしたいのでこの3つに対してシステム変数を作成して設定しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343290/22e7bbb6-ee95-4152-8432-c4f728bcbcea.png)

参考までに作成したシステム変数のサンプルも載せておきます。
今回は全部文字型、上書き許可にします。
カテゴリと変数名は自由、他はデフォルトで構いません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343290/1cb32c0b-469a-04cc-30f9-2bf4a92e7832.png)

このボタンを作成したら試しに実行してみましょう。

といってもシステム変数に値が入っただけで見た目ではわかりません。
先程のシステム変数画面を開いてみると「実行結果」のところに「テスト太郎」が表示されました。

一応成功。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343290/0c42bdfe-f08c-a25a-02d7-a68c34acdd19.png)

これだけだとシステム変数は取得できますが、図形アイテムや検索アイテムの表示までは変数の値に更新されません。
アイテムリロードアクションも追加しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343290/9932ebb7-7daa-6c7e-73ba-581959c1293d.png)

アイテムリロードの中身は以下。
重要なのは「**待ち設定**」。ここを「**全アイテム描画完了を待つ**」に変更します。
こうすることで直前のアクションの完了を確実に待って次の処理に進みます。こうしないとシステム変数の読み込み処理が終わる前にアイテムをリロードしてしまい、エラーや間違った表示をする不安定なボードになってしまいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343290/3a88c94c-cb2a-3fbc-b5c4-e6d2cea47794.png)



ですが！
これは従業員マスタの一番上の行を機械的に取得しているだけです。
ログインユーザー毎に各々の情報を取得するにはもう少し細工する必要があります。

### 手順3 ###
手順1のデータソースをもう一度開きます。
開いたら検索設定を開きましょう。
検索を使って必ずログインユーザーの行のみが絞り込まれるようにします。
そうでないと「ユーザーシステム変数読み込み」アクションは一番上の行を取得するので、ログインユーザー以外の従業員名や組織を取得してしまいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343290/20704190-c5db-c0e9-e160-47d36437e83d.png)

検索項目に設定するのは「従業員ID」。
従業員マスタを作成するときに**MotionBoardのログインIDと一致するよう**に作成したカラムです。
こいつを指定して、検索候補値に${user_id}を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343290/6dba4607-ab36-20cf-c4a4-cd5f597f9ca7.png)

このuser_idというシステム変数はMotionBoardが元々持っている変数で、ログイン時のIDを使えるんですね。
このIDを使って従業員マスタを検索すればtest_taroでログインしたときはテスト太郎さんの行、test_jiroでログインしたときはテスト二郎さんの行だけ絞り込まれます。

これでログインユーザー毎の情報を取得する処理ができたので、ボタンがボードを開いた際に必ず動くようにしましょう。
ボード管理画面を開き、ボード設定＞初期動作　の設定をします。
ボタンアクションで手順2で作成したボタンを指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343290/80b6d142-b528-385f-d183-17248e8955e2.png)

これですべての設定完了！
非表示ボタンコンテナはまるごと非表示にして、ボードを保存してください。

### 動作確認 ###
それでは動きを確認してみましょう。
一度MotionBoardをログアウトしてtest_taroさんでログインし直します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343290/dc441115-b329-b3fa-fd82-323b0806b62c.png)

先程作成したボードを開いてみると・・・
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343290/2c4e15d8-cdec-f313-3c12-9a69c3cd0b65.png)

右上には自分の名前、そして検索アイテムには自分の所属組織が初期値として表示されました！


### さいごに ###
今回は省略しましたが、もし自分の組織で検索したチャートを最初から表示したい場合は隠しボタンのアクションに検索アクションまで追加すればできます。
MotionBoardのシステム変数はめちゃめちゃ強力なので、ぜひ使いこなせるようになってください。