ノード(node)の配置

フローやサブフローを作成後、左側にあるノード一覧より、ノードを配置していきます。ノードの種類や仕様は多岐にわたる為、今回は基本的に私がよく使ったノードの使い方のみを掲載します。その他の使い方は、右側メニューよりノードのマニュアルが見れますので、参照するとだいたいの事はわかります。

※Node-RED(ver0.19.4)

  • 起動トリガー用(inject)

その後、処理を実行する為のトリガーの役目として、上記のノードを追加しています。左側の四角のボタンを押下することで、右側から繋いだノードが実行されます。

※上記のように日時や、繰り返し等も設定できます。

  • 値を設定できるテンプレート(template)

テンプレートもよく使います。node-REDではmsgというオブジェクトを参照渡しで、別のフローの受け渡していきます。また主に、msg.payloadという情報を書き換える事で、情報の受け渡しを行うようになっている為、情報を設定したいという時に、このテンプレート使って内容を、対象のオブジェクトに設定する事ができます。

※上記の設定先が設定したい対象オブジェクトとなります。テンプレートの中身が設定されます。{{}}としている箇所は、その部分がオブジェクト(msg.payloadの中身)である事を意味しています。つまりオブジェクトの中身を別の入れ物に設定することができるという事です。ここで重要な事は、オブジェクトであるmsg.payloadに値渡し(つまり参照アドレスが外れた状態)で値を設定できる事にあります。

  • 値の変更(change)

テンプレートと似ている機能として、値を変更(代入、置換、削除、移動)を行うノードとなります。

上記のプルダウンより、値の取り扱いを設定できます。後にでますファンクション等で、単純にmsg.payload = msg.temp等、オブジェクト代入をしてしまうと、参照渡しとなり、msg.tempの値を変更した場合、msg.payloadも変更されてしまいます。値渡しを行う際に、changeを使っています。

  • 処理を記載するファンクション(function)

ファンクションにいわゆるソースコード(javascript)を記載します。

条件分岐や、代入、日時取得など、javascriptで可能な事は、基本なんでも記載できます。これは私がの事で、node-redとしてはよくない事ですが、templateや、changeは使わなくても、ファンクションでなんでもできてしまう為、複数の情報の代入や処理は、全てファンクションで行っています。どうしても業務処理レベルの難しい仕様をプログラミングしようとすると、templateやchangeが多くなりすぎる為、逆に視覚的に追いにくくなった為です。もちろん値のオブジェクト構成を最終的に見直して、まとめたりすればよいことですが、実際の業務では後か後から仕様変更があり、都度、オブジェクトを暫定で増やすこともあります。例えば、tempには既にST済みで影響を与えたくないので、temp2追加等。この場合に毎回ノードを増やすと管理が大変になってきたので、ファンクションでまとめて代入式を記載して、修正履歴コメントで管理したりしています。もう一度いいますが、node-redとしてはよくないことだと思いますが、一例としてそういう事もあります程度です。

  • 値による分岐(switch)

特定の値の場合に処理を分けたい場合がありますので、その際に利用しています。

条件判定となるオブジェクトをプロパティに設定し、左下の追加ボタンにより分岐処理を追加、真ん中のプルダウンで条件を選択し、対象となる値を右側に入力します。switchノードの後ろから導線がこの条件の数に応じて増えますので、その線を条件に該当するノードに接続することで、分岐ができます。私は、モード切替等で、例えば、デバッグ用、リリース用、テスト工程で大きく処理を分ける等に使っていました。