MotionBoardにデータストレージにデータを入れよう〜手動で入れてログをチェックする方法〜

#最初に
MotionBoardは綺麗でわかりやすいグラフや画面を作ることができます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/04c48011-e65b-88dd-f666-a838819636e4.png" width=60%>
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/e777e485-f3d0-3dc7-57e2-ddddd2df8860.png" width=60%>
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/7bc601e7-ace8-cafa-2313-c2d66b9de500.gif" width=60%>
綺麗な上に、動いたりもします。
気になる人は下記リンクをクリックしてください。体験デモもできます。
[MotionBoard　体験デモについて（公式HPより）](https://www.wingarc.com/product/motionboard/demo/index.html)

<details><summary>【MotionBoardとは】</summary><div>
様々なデータソースからデータをあつめ、１つの画面上で統合するMotionBoard。
クラウドサービスとの接続もでき、チャットツール送信もできるのでとてもおもしろいです。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657180/877897e8-35d1-b055-a80c-b9051866bc38.png" width=60%>
※キャプチャはウイングアーク1st社のホームページより抜粋
[ウイングアーク１ｓｔ株式会社　MotionBoard](https://www.wingarc.com/product/motionboard/index.html)
</div></details>


今回はデータストレージに関しての投稿です。
いきなりですが、みなさまはMotionBoard Cloudのデータストレージを使っていますか？

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/63617752-bd72-4c36-c9da-8f5dab98a058.png)

上の図の赤枠で囲んだところです。
MotionBoard Cloudはデータベースやクラウド製品に直接データを取りに行く仕組みの他に、MotionBoard Cloudの中にデータを貯める領域があり、そこをデータストレージと呼んでいます。

このデータストレージは集計に特化したデータベースなので、データを入れると高速集計ができたり、データベース関数が使えるのでやや複雑なロジックが書けるようになるというポイントがあります。

さて、このデータストレージには何パターンかデータを取り込む方法がございます。
✅ スケジュール起動（主に夜中）でクラウドサービスやオンプレDBからデータを入れる
✅ 社内のファイルサーバに入っているExcelやCSVを監視していて、更新が入ったら自動取り込み
✅ 自分のタイミングで手動で取り込み

自動取り込みについてはMotionBoard Agentという機能が役立ちます。
こちらはマニュアルがありますので、こちらを案内します。
[MotionBoard Agentとは](https://cs.wingarc.com/manual/mb/6.1/ja/UUID-248eedd3-ba27-69fd-530d-0d1efbc51c68.html)


今回は自分のタイミングで手動でデータを取り込むときの運用について案内します。
手動だとデータが正常に取り込めたかを確認する必要があるので、下図のような確認用ボードを作る必要があるのですね。
この作り方を見ていきましょう。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/2a36eb57-bebf-7ed3-0bcc-d3dd7766163c.png" width=60%>


#全体の流れ
今回の流れは大きくわけて、4つとなります。

1.なぜ手動にする必要があるのか
2.タスク実行の設定をする
3.ログデータを表示する
4.チャートリフレッシュを自動化する

さっそく見ていきましょう。

##なぜ手動にする必要があるのか
自動の方がいいですよね。
そりゃ人の手を介さない仕組みにするべきです。まずは自動化を考えましょう。

しかし、業務によっては完全に自動化できるものというのは、そう多くありません。
人間の目でデータをチェックした後に取り込む、という仕組みも必要になります。

例えば週報のチェックの場合、MotionBoardにいったんはファイルで取り込んで可視化、ひとりひとりのデータをチェックし、MotionBoard上で修正。
修正したデータをデータストレージに格納して、最終データとする。

ほら、この場合は手動で更新する作業が必要になりますよね？

ではそのやり方について解説をしていきます。

今回解説をする対象はこちらになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/43d6fb79-ede3-4a05-8dfd-ee10d9e6d74d.png)

見映えはこんな感じでOK。
管理者が見るものなので、そこまでこだわりません。
むしろ内部構造に気を配ります。

今回はMotionBoardの共有フォルダに入っているExcelをデータストレージに登録します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/d05e7779-50db-baa2-6018-42f410ca22ac.png)

複雑な形のExcelファイルを読み込んだり、複数Excelを仮想的にひとつに統合する方法につきましては、別記事を案内させてください。
[MotionBoardのExcel読み込み機能を使おう](https://qiita.com/Ryo---san/items/15fb18f1a77975250bc0)

##タスク実行の設定をする
###スナップショット取り込み設定

Excel複数読み込み機能はとても便利です。
このような形でひとつのデータソースとして、読み込むことができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/6dc41a8f-49ce-132e-b254-4fc5c56d237e.png)

そしてデータストレージの設定ですが、繰り返しタイプは「実行しない」でOKです。
手動実行なので、自動の設定は行いません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/74e97e65-9c04-007c-1129-7d996bd0c649.png)

ここまでが下準備です。
データストレージへの登録は手動実行、つまりボタンクリックをしたら取り込むようにします。

ボタンアクションはこのような設定をします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/a42babc6-dafa-b1cc-7522-4fb70b91e33a.png)

✅ 表示非表示切り替え
たいしたことをしていません。
タスク実行中にクリックしたボタンを非表示させているだけです。
タスク実行が終わりましたら、また表示させます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/2897db51-939f-3e54-1f3c-d27312aa33ef.png)


✅ タスク実行
アクション種別を「タスク実行」に、タスク種類を「スナップショット作成」に、タスク名はデータストレージの登録した名前を指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/933534c6-6436-7caa-ba9b-6ff9281d76b1.png)

確認メッセージが作れますので、必要に応じて入れましょう。




✅ 表示非表示切り替え
ひとつめのアクションと逆ですね。
タスク実行の処理が終わったので、ボタンを再表示させます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/2d8ffe55-df8e-70ca-acd8-a6847cf820c6.png)



以上でタスク実行の設定は終了です。

タスクは流れますが、それが終わったのか、成功なのか異常なのかがわかりません。
そのため、次のステップはボタンの右側にログを出すようにしましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/571b7f82-8679-46e9-e3ef-3b04b59b9369.png)



##ログデータを表示する

データストレージには特徴があります。
それは**ログデータをデータベースで保持していることです。**
下図のようにDataStorageの中をのぞいてみると、「・・・_LOG」とあり、こちらがログデータとなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/4d7f5f52-c007-efa7-7561-8dcab6b4287c.png)

この長所を活かしましょう。

ログはこのような内容で表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/529e5360-46b6-2609-75e6-8c2b6373cde8.png)

データストレージの最大履歴数を1より大きくすると、ログの行が増え、SNAPSHOT_NUMも履歴の数だけ増えていきます。
データはInsertで入りますし、キー項目を見て、UPDATEすることもできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/016d5081-62a0-9b98-505f-633ac83a2c6e.png)

逆に最大履歴数を1にすると、全件洗い替えとなります。
その場合、ログは１行となります。

さて、今回はタスク実行の成否を判定すれば良いのです。
なので、このログの最新（SNAPSHOT_NUMの最大）が取得できればOKです。

さぁ、最大値の取得をしてみましょう。

明細表を用意して、データストレージの該当のLOGデータを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/63f79c25-bff8-f60e-8c92-2cdc8f442830.png)

最大値取得のポイントはここです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/9251a33b-1924-d510-6c4d-e9e57eaa41ed.png)
検索候補地を「他データソース定義項目の値」にして、他のデータソース定義は自分自身を選択（別に自分じゃなくてもいいですが）、
項目名（値）はもちろん「SNAPSHOT_NUM」で、初期値に**「!bottom」**

これは何をしているかというと、複数行ある中から１件だけを指定しています。
その指定がSNAPSHOT_NUMのボトム、つまり並べたら一番下に来るもの、つまり最大値というわけです。
これは正直、初見ではわからないです💦

これで最新の1件が常に表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/1b4a711a-72b7-e617-8f28-699bb457d79f.png)



##チャートリフレッシュを自動化する
これで最後です。
いくら最新の1件が表示されるとはいえ、それはデータをリロードしなければ表示されません。
ログデータがいつ更新されるかわからないのに、リロードボタンをカチカチ押し続けるのはイヤですね。

なので、明細表を自動でリロードかけるようにしましょう。

明細表をクリックして「プロパティ」を表示します。
そして「共通」タブからリフレッシュ間隔のチェックを有効にして、たとえば10秒とします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/11274d49-5689-2a22-33d1-629fda3e8248.png)

こうすると10秒に一度、チャートリフレッシュをします。
こちらはグラフにも使えますので、活用の幅は広いです。


#おわりに
さて、このような画面はできましたでしょうか。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/43d6fb79-ede3-4a05-8dfd-ee10d9e6d74d.png)

タスク１を実行すると、しばらくしたらログが書き換わる仕様となります。

MotionBoardはただダッシュボードを綺麗に見せるだけでなく、今回のように運用を意識した作りも重要となります。
これらの技術が、みなさまの会社の中で、使いやすい運用の一助となれば幸いです。