LoginSignup
12
4

More than 5 years have passed since last update.

Node-REDのフローをチームで共有するときに心がけるべきこと

Posted at

Node-REDのフローの共有で陥りがちなのが、至る所のノードにURLや固有IDなどの「マジックナンバー」、「マジックストリング」が散らばってしまい、どこを直せばいいのかわからなくなるということがあります:sweat_drops:

Node-REDのフローを業務内で活用すると、プログラミングスキルがまちまちな現場であっても、視覚的にそのフロープログラミング中で何が行われてるか確認できるというメリットがあると思います:sunny:
Node.jsがわからない人、むしろプログラミングがわからない人でも、ノードの中の設定値を少し変えてみるという操作はできるはずです。

initフローを作成する

image.png
このフローは数分周期で、http POSTをするフローです。
POSTするbodyを変更したり、中でidを変えたりして、その時々でhttp requestなどの内容が変わります。
複数のフローに変更箇所がまたがってしまうと、変更に抜けが出てしまうことがあります。
なるべく、人がいじるところは少なくするべきですね。

起動時にフローを走らせる

「各種設定、初期化フロー」で示しているフローはデプロイやnode-redが起動したタイミングで一度だけ起動するようになっています。
injectノードの設定を下記のように設定しましょう。

image.png

設定するノードを1つにまとめる

チームで共有するときには、[config]のノードだけ設定を変更するようにアナウンスしておきます。

image.png

このようにflow変数(またはglobal変数)に設定値を代入しています。

functionノードを用いるときは

functionノード
var hoge = {};
hoge['authorization'] = 'dummyheaders';

flow.set("hoge",headers);

このようにすると、flow.headersに値を代入できます。(flowをglobalにすればglobal contextに保存できます。)
なるべく頻繁にいじるノードは少なくしたいので、一か所にまとめるように心がけましょう。

設定値の使い方

changeノードで、flow contextの値をmsgオブジェクトに代入したり、functionノードで取得しましょう。

image.png

2番目の例のように$flowContext(string)のJsonata関数も用意されているので、もっと凝った書き方もできると思います。

functionで取得するときはflow.get("device")のように指定してflow contextを取得できます。

まとめ

チームで開発ではなく、Node-REDフローを活用する際に気を付けることを書きました。
いろんなノードを適宜いじるようにすると絶対ヒューマンエラーが出るので、なるべく手を入れる箇所は少なくなるようにしましょう。

12
4
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
4