Help us understand the problem. What is going on with this article?

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

More than 3 years have 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で活用できるようになります。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away