node-REDはノードを線でつなぐだけで簡単にプログラミングができてしまう優れものです。しかし、初めて触ったときに「ノードを流れる情報」が一体どんなものなのか、なかなかイメージが湧きませんでした。このページでは、ノード間に流れるデータにはどんな意味があるのかを簡単にまとめてみました。
ノード間を流れるメッセージ
ノードの間を流れる情報のことを、node-REDの中ではメッセージと呼びます。メッセージには数値や文字・文字列と、様々な型を持つことができます。(node-REDはjavascriptベースなので厳密な型の宣言や変換処理は不要です)ノードは、前段のノードから送られてきたメッセージを受け取って、何らかの処理をして更に後段に伝達します。基本的に、前段のノードからメッセージが到達した瞬間に処理が実行されます。
メッセージの持つ意味(データとトリガ)
メッセージには2種類の意味があります。
- データとしてのメッセージ・・・数値や文字列など、データそのものに意味があるもの
- トリガとしてのメッセージ・・・メッセージの中身に意味はなく、何らかの情報が「送られた」事実に意味があるもの
1.データとしてのメッセージ
時速(km/h)のデータを入力し、秒速(m/s)に変換して表示するフローがあるとします。このフローの中では、入力されるデータの数値そのものに意味を持ちます。
この例では、text inputノードで入力された数値をfunctionノードで秒速に変換し、textノードで出力しています。「72」という数値そのものに意味があることが明確です。
トリガとしてのメッセージ
ボタンが押されると、画面に”Pushed”と表示するフローがあるとします。このフローでは、「ボタンが押された」という情報が伝達されることに意味があり、それを伝達するデータの中身は重要ではありません。データが「流れたか」「流れていないか」が重要です。
脳細胞の動作に似ている事から、ノードにデータが流れてフローが動作することを「発火」と呼ぶこともあります。
このフローではボタンが押されると「Pushed」と表示されます。 buttonノードからtemplateノードに達するまでに着目すると、データの中身はなんでもよいことが分かります。(templateノードの中には”Pushed”としか書かれていないので、前段からなんからかのデータが到達すると”Pushed”を後段に出力します)