cURLを使ってMotionBoardのWeb APIを使いこなそう

#最初に
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>

今回はWeb APIを簡単に扱う方法についてお伝えします。

#Web APIとは
APIは「Application Programming Interface」の略で、システムとシステムをつなぐ窓口という役割を担います。
この機能を使いこなすとMotionBoardに対して、データのアップロードダウンロード、タスクの操作やスナップショットタスクの実行など、MotionBoardのバックグラウンドの幅広い機能を使うことができます。
MotionBoardの管理者の方でしたら、要チェックの内容になります。

しかし、参考情報を見てみると、HTMLのサンプルコードだったりVB Scriptの例だったり、「(。´・ω・)ん?　プログラム？？」と思って敬遠してしまうことがあるかと思います。
実際にぼくもプログラムはあまり得意じゃないので、ちょっと「うぇぇ」と思ってしまっています。

ちなみにMotionBoardはこれだけのAPI機能を備えています。
[公式マニュアル（第3章　Web APIの一覧）](https://cs.wingarc.com/manual/mb/6.1/ja/UUID-fd7a748f-1e12-d72f-318d-8e69e9ea7201.html)
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/f6283257-bbb1-5339-5500-c4fa386a183c.png" width=60%>

すぐに使えそうなのが
・CSVやExcelのダウンロード
・配信タスクの開始
・CSVファイルのスナップショット直接取り込み
あたりですかね。

#cURLはノンプログラマの味方！？
cURL（カール）、こちらはLinuxに含まれるプロトコルを利用するコマンドなのですが、Windows 10では2018年春から標準コマンドとして搭載されました。つまり、Win10で使えるコマンドです。

形式を覚えれば簡単にMotionBoardのWeb APIを使えます。

実際に1行だけコードを書けばプログラム実行できるので、簡単ですね。

#ためしにやってみよう
ここでは共有フォルダへのCSVのアップロードとダウンロードを試してみます。
同じようなことをMotionBoard Agentを使えばできますが、A.csvを検知してA.csvとしてMotionBoardに取り込みます。
そのため、B.csvとC.csvとD.csvをマージして、A.csvにするという加工ができないのが難点です。
プログラムであればこの辺の操作もできるようになりますね。



##CSVをダウンロードする
共有CSVのダウンロードのしかたは[こちらを参照](https://cs.wingarc.com/manual/mb/6.1/ja/UUID-767ccbb7-b1ca-c365-e70f-f5abe325961b.html#UUID-767ccbb7-b1ca-c365-e70f-f5abe325961b_d38915e272611)します。

1行コマンドを書くだけでOKなのですが、今回は構成を３つにわけてみましょう。


###URLのコマンドを書く
いきなりメインのところです。
マニュアルを解読すると、以下のようにURLを書けばいいのです。

```
https://MotionBoardサーバーのアドレス/motionboard/rest/csv/get/shared/zaikoFolder/zaiko.csv?tenant=テナント名&id=ユーザID&pw=パスワード
```


|URLの抜粋|内容
|:---|:---|
|https|クラウドの場合はhttpsになります。オンプレは標準ではhttpです。
|MotionBoardサーバーのアドレス|例）cloud.motionboard.jp　のようにコンピュータ名
|motionboard|ここは共通
|rest/csv/get/shared|共有CSVファイルのダウンロードコマンド
|zaikoFolder/zaiko.csv|共有CSV内のフォルダパス　※１
|tenant=テナント名|使用しているテナント情報　※２
|id=ユーザID|使用しているユーザID　※２
|pw=パスワード|使用しているパスワード　※２

※１　今回使用した環境の共有CSVのフォルダ構成はこちらです
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/3c121c41-c085-645f-66b0-4cf47283aa33.png)

※２　MotionBoardにログインするときに必要な情報です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/b2d77d1e-4a9d-57ed-4aa5-df8ef80a3af7.png)


URLはこれでOK、次にいきましょう。

###ファイルをダウンロードする場所や名前を指定する
アウトプットの引数（-o）を入れて、どのフォルダに何てファイル名でデータを出力するか指定をします。

```
-o C:\Users\xxx\Desktop\test.csv
```

ここはとてもシンプル。
またもしプログラムをいじるのならばこの部分でしょう。
フォルダパスを社内サーバにするとか、CSVの名前に変数を入れるのか、ここは調べつつ作業ができる共います。

###cURLコマンドにする
あとはテキストエディターを開いて、以下のようにコマンドを書きましょう。

```
curl https://MotionBoardサーバーのアドレス/motionboard/rest/csv/get/shared/zaikoFolder/zaiko.csv?tenant=テナント名&id=ユーザID&pw=パスワード -o C:\Users\xxx\Desktop\test.csv
```

一番単純な処理ですが、これでOKです。

作ったテキストファイルを保存するタイミングで拡張子を.batにすると、ダブルクリックしたら処理が開始されます。
今回はコマンドプロンプトで試しましょう。

スタートメニュー → Windowsシステムツール → コマンドプロンプト　をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/dbb56ddc-9f8a-731f-4489-f6e70c9da4c8.png)

コマンドをコピペして、Enterで実行
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/6e9158e1-ad3a-2c11-6712-1df33aab8ee8.png)

お、返ってきました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/45c7d44b-fea4-3456-388c-9c7ac1f34ef6.png)

無事に在庫データをダウンロードできています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/dab8b169-8b08-4a22-e86d-9f6cfe9ea0ee.png)


このバッチをWindowsのタスクマネージャーにセットしておくと、任意のタイミングでデータをダウンロードしておくことができますね。



#おわりに
プログラムと聞くとどうしても敬遠したくなるWeb API。
でもこのようにお手軽にできる手段もあるのです。

勇気をもって、一歩を踏み出してみましょう。