Web APIで何ができる?
この記事でWeb APIを実際に使ってみてどのようなものかをお見せしました。
説明対象のサービスである「Slack」やAPIを使うためのツール「Advanced REST client」の使い方の説明も多くなってしまいましたが、基本的にこの流れの最初の記事で書いた、人間がブラウザでマウスやキーボードを使ってWebアプリケーションを使う代わりにデータのやり取りだけで同じようなことを行うための仕組みだと言うことはわかっていただけたかと思います。
じゃあ、何がうれしいの?
ですよね。
単に人間が画面を操作して同じことができるなら、プログラムにやらせる意味とは?という疑問が出てくるかと思います。
人間とコンピューターの違い。
人間はそのときの状況を判断して動けるし、コンピューターは決まった動作ならとても素早くこなせます。
例えばこういう例を考えてみましょう。
あるチームで仕事をしていて、タスク管理ツールであるRedmineでその日のチームメンバーの予定タスクをチェックし、その一覧を毎朝Slackで全員にリマインドするという習慣があるとします。
人の手でこれをやるとチームメンバーが多くなったり、タスクが溜まってきたりすると担当者の負担は増えますし、漏れが出たりするかもしれません。
RedmineでもSlack同様、Web APIが提供されています。
そしてこの作業は「Redmineにアクセスしてその日のチームメンバーの予定タスクを取得」、「タスク担当者ごとに並び替え」、「見やすいように整形」、「Slackへ投稿」という単純作業の集まりです。
ということはWeb APIを利用することで、この作業をプログラムで実行させることができるため、作業の品質を上げつつ人への負担が減ることになります。
Web APIはこういった「複数サービスにまたがる」、「単純作業(プログラム化可能)」、「処理量が多い」、「正確性が求められる」といった作業に対して効果を発揮します。
便利な反面…
使い方によっては非常に便利な機能なのですが、便利なものは当然悪用することもできてしまいます。
例えば前回紹介したSlackのWeb APIにて利用するトークン。
これが悪意のある第三者に渡ると、そのトークンによって操作できるアプリの権限の範囲であれば所属させたSlackスペースの操作が自由にできることになります。
前回記事ではメッセージの投稿権限しか設定しませんでしたが、それだけでもプログラムを用いて多数のメッセージを送ることで利用の邪魔をしたり、悪意のあるプログラムやURLを投稿するということができます。
もちろん、使う機能によって投稿以外の権限も設定できるので、例えば所属するチャンネルの投稿内容を閲覧できる権限も持っていたらどうでしょう?そしてそのチャンネルでは機密情報がやりとりされるような場だったら?
そう。だからWeb APIには悪用されないためのセキュリティが必要なのです。
つづく
この記事が気に入ったらサポートをしてみませんか?