1分で実装!Node-REDでREST API呼び出し

  • 61
    Like
  • 0
    Comment
More than 1 year has passed since last update.

 Node-REDとは、GUIで処理ノードをつなぐのみで、簡単に一連の処理を実現する開発環境です。各処理ノードでは処理がカプセル化されており、ノードの接続操作とプロパティ設定操作のみで、アプリケーションを短時間で実装できます。今回はNode-REDを用いることで、REST APIの呼び出しをすぐに実装できる点を説明します。

Node-REDの機能を増やす方法

 Nodde-REDでできる処理を増やすには、「コミュニティで開発された処理ノードを追加する方法」と「外部のAPIと連携させる方法」の2つがあります。コミュニティで開発された処理ノードには、SQL ServerDocumentDBAzure IoT Hubと連携するノード等があり、便利に使えそうです。しかし、npmコマンド等でインストールする必要があり、少しだけ手間がかかります。一方、HTTP経由で利用できる外部APIと連携する方法は、Node-REDに標準で用意されているhttp requestノードを用いればよいため、お手軽です。

今回連携させるAPI (Microsoft Web N-gram Services)

 今回は、Microsoft Researchが研究向けに提供しているN-gram検索APIであるMicrosoft Web N-gram Servicesを使用します。本APIは、ウェブをクロールして得た大量(ペタバイトクラス)のテキストデータから生成したN-gramのデータを検索できるAPIです。商用で使えないなど、使用制限は厳しいですが、アプリケーション開発者が、自前で数ペタバイトものテキストデータを加工し、検索できるようにするのは大変ですので、この様なサービスはとても便利です。上記サイトからMicrosoft Researchにトークン発行依頼のメールを出すとトークンが貰え、無料で利用できるようになります。
※注: 2016年10月現在、本APIはAzureで提供されているCognitive ServicesのWeb Language Model APIとなり、商用で使えるようになりました。仕様が変更されたため、本記事の方法はそのまま用いることができませんので、ご注意ください。新しい仕様での使用方法は別記事「2分で実装!Node-REDで認証付きREST API呼び出し」で説明しました。

まずはブラウザからアクセスしてみる

 本APIは単語を引数として与えると、単語の出現確率を返してくれます。問合せに用いるURLは下記のとおりです。

http://weblm.research.microsoft.com/rest.svc/bing-body/2013-12/4/jp?u=<トークン>&p=<単語>&format=json

 <トークン>の部分にMicrosoft Researchから貰ったトークンを入力します。また<単語>の部分には、出現確率を求める英単語を入力します。まずはブラウザ上でアクセスしてみましょう。

msr_bluemix.png

 出現確率は対数値で返ってきますので、マイナスとなり大小が少し分かりにくいですが、値が大きい単語ほど出現確率が高く、値が小さいほど出現確率が低くなります。言い換えると、値が大きいものほどウェブ上でよく現れる単語で、値が小さいほど珍しい単語となります。

Node-REDからREST APIを呼び出す

 Node-RED上で外部APIを呼び出すには、下記の様なURLをhttp requestノードに入れるだけで、利用できます。ポイントは<単語>の部分が{{payload}}となっている点です。{{payload}}には、前の処理ノードから引き継いだ文字列が入る部分となります。

http://weblm.research.microsoft.com/rest.svc/bing-body/2013-12/4/jp?u=<トークン>&p={{payload}}&format=json

httpreq.png

 http requestノードだけでは、処理が実行できませんので、http requestノードの前にinjectノード、後ろにdebugノードを接続します。この時、injectノードには、payloadの値として問合せたい単語を指定します。
 以上で操作は完了です。ブラウザでAPIを試してみた時点から、本作業が完了するまで1分もかからないと思います。ここまでできれば、UI & APIパターンを用いることができるようになりますので、ウェブアプリケーション化も容易です。

最後に

 今回のようにhttp requestノードを用いると、API連携は簡単に実現できます。API呼び出しは複数のサービスをNode-RED上で連携させるために、重要です。例えば、Node-REDのfunctionノードは開発言語としてJavaScriptしか対応していませんが、Javaなど他の開発言語で開発したプログラムもAPI化しておけば、Node-REDで活用できるようになります。