OpenAPIドキュメント(Swagger)からNode-REDのノードをつくる手順


 こんにちは、(株)日立製作所 研究開発グループ サービスコンピューティング研究部の横井一仁です。

 本ドキュメントでは、ノード開発容易化ツール「Node generator」の使い方をご紹介します。

Node generatorとは

 Node generatorとは、Node-REDのオリジナルノードを自動生成するコマンドラインツールです。

 Swagger Codegenの様にOpenAPIドキュメント(Swagger)からノードのソースコードを生成したり、JavaScriptコードを書いたfunctionノードを共有可能なオリジナルノードに変換したりできます。

 日立が開発し、OSS化した本ツールは、現在OpenJS Foundation (Linux Foundation)管理下のNode-RED公式のサブプロジェクトとなっており、開発コミュニティと協力して機能拡張が行われているOSSになっています。

 本ツールは下記サイトで紹介されている様に、CiscoやIBMなどのNode-RED活用企業でも活用されています。

OpenAPIドキュメントとは

 OpenAPIドキュメントとは、REST APIの仕様を記載するための業界標準のフォーマットです。

 OpenAPIドキュメントには、上の例の様にYAMLやJSONの形式で、サービスのREST APIの説明や、どの様にアクセスすれば良いかが記載されています。

OpenAPIドキュメントからノードを生成

 それでは早速OpenAPIドキュメントからNode-REDのノードの作成してみます。今回は、宇宙ステーションの位置情報を取得するAPIのOpenAPIドキュメントを利用しました。

 本ドキュメントで用いた動作環境は、Node-REDをインストール済のWindows環境です。本ツールはmacOSやLinuxにも対応していますので、その場合は適宜ファイルパス等を変更して試してみてください。

(1) Node generatorをインストール

 管理者モードでコマンドプロンプトを起動し、ビルドツール(Windowsの場合のみ)とNode generatorをインストール

npm install -g node-red-nodegen
npm install -g windows-build-tools    (Windowsの場合のみ)

(2) 管理者モードのコマンドプロンプトを閉じる

(3) OpenAPIドキュメントをダウンロード

https://raw.githubusercontent.com/kazuhitoyokoi/nodegen-handson/master/swagger.yaml からOpenAPIドキュメントをダウンロードし、ホームディレクトリ(例えばC:¥Users¥<ユーザ名>)に保存します。


(4) コマンドプロンプトを開き、ホームディレクトリへ移動

 ユーザモードでコマンドプロンプトを開き直し、cdコマンドを実行してホームディレクトリに移動します。

cd

(5) OpenAPIドキュメントからノードを生成

 Node generatorを用いてOpenAPIドキュメントからノードを生成します。

node-red-nodegen swagger.yaml

 以上の操作でノードの作成ができました。ホームディレクトリにnode-red-contrib-iss-locationというディレクトリが生成されているため、エクスプローラーで中身を見てみます。以下の様に、ノードを構成するファイル群が生成されているはずです。

 次にこのノードをNode-REDから呼び出せるように設定してみます。

(6) 生成されたディレクトリに移動

cd node-red-contrib-iss-location

(7) 依存モジュールのインストール、シンボリック作成の準備

npm link

(8) Node-REDのホームディレクトリに移動

cd
cd .node-red

(9) シンボリックリンク作成

npm link node-red-contrib-iss-location

(10) Node-REDを起動

 node-redコマンドでNode-REDを起動します。もし起動中の場合はCtrl+cで終了し、再度起動してください。

node-red

 上手くいけば、Node-REDフローエディタ( http://<Node-REDのIPアドレス>:<ポート番号> )の左側のパレットに緑色のノードが登場しているはずです。

 本ノードをワークスペースに配置し、ノードプロパティを設定してみます。OpenAPIドキュメントに記載されているエンドポイントがプルダウンメニューで選択できるようになっていますね。

 次に前後にinjectノードとdebugノードをつなぎ、実行してみます。injectノードのボタンをクリックすると、デバッグタブに宇宙ステーションの現在の緯度経度(latitude、longitude)が表示されました。

最後に

 Node generatorを用いることで、OpenAPIドキュメントが公開されているサービスは、少ない工数でサービスに対応したNode-REDのノードを開発できるようになります。

 Node-REDの使い方については、詳細の日本語ドキュメントも公開していますので、ぜひ見てみてください。

 今回作成したノードを用いたフローの開発例は、次の記事でご紹介する予定です。