12
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Node-REDAdvent Calendar 2019

Day 23

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

Last updated at Posted at 2019-12-12

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

 本ドキュメントでは、ノード開発容易化ツール「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アドレス>:<ポート番号> )の左側のパレットに緑色のノードが登場しているはずです。

generatednode2.png

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

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

issflow.png

最後に

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

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

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

12
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?