Node-REDでHello World
いきなり他力本願ですが、Node-REDでの「HelloWorld」は「フローを作成し開発環境で動かしてみる ~ inject・debugノード ~」(約3分)の動画を参考にしてください。簡潔かつ分かりやすいです。
メッセージ(msgオブジェクト)とは何か?
Node-REDのフロー(処理の流れ)は、ノードからノードへメッセージ(msgオブジェクト)を送信することで動作します。
このメッセージはJavaScriptの普通のオブジェクトです。オブジェクト名は「msg」で、キーと値(プロパティのセット)を持っています。
たとえば、こんな形です。
{
"_msgid": "12345",
"payload": "データ本体"
}- payload
- msgオブジェクトの中で一番よく使われる項目で、多くのノードがここを使います。
- _msgid
- Node-RED側で付ける特別なIDで、msgオブジェクトを追跡するのに使えます。
payloadの注意点とコピーの重要性
様々なノードがmsgオブジェクトのpayloadを上書きする可能性があります。
つまり、あるノードが出力したpayloadの情報を、別のノードで上書きされないようにしたい場合にはChangeノードやfunctionノードを使ってコピーを作成しておく必要があります。
例えば、ある処理結果を別のプロパティへ退避させておくなどの使い方が一般的です。 これにより、重要なデータが意図せず失われることを防ぎます。
メッセージの中のデータの型は?
msgオブジェクトのプロパティ値には次のようなJavaScriptの型が使えます。
- Boolean (true / false)
- 数字(整数や小数)
- 文字列(例:"こんにちは")
- 配列(例:[1, 2, 3])
- オブジェクト(例:{"a":1, "b":2})
- Null(空の状態)
メッセージの内容をどうやって確認する?
Node-REDには「debugノード」というノードがあり、msgオブジェクトの内容を途中でキャプチャしてサイドバーに表示できます。
これにより、どんなデータが流れているか視覚的に確認できるので、フロー作成時の強力なノードです。
- デフォルトでは
msg.payloadの値を表示します。 - 対象を「メッセージオブジェクト全体」にすることで、msg全体を表示することも可能です。

サイドバーに内容が表示されます。
以下は、「http requestノード」で「 https://www.google.com/?hl=ja 」にアクセスした時に出力されたmsgオブジェクトを「debugノード」でサイドバーに表示した例です。

最初は折りたたまれていますが、展開することで確認しやすくなります。
メッセージの中のデータを編集するには?
フロー内でmsgオブジェクトの内容を書き換えたり加工したりするには主に以下のノードを使います。
- functionノード
- JavaScriptコードを書いて自由に処理ができる強力なノード。細かな処理ができる反面、JavaScriptの知識が必要です。
- changeノード
- コード不要で簡単にプロパティの値の代入・削除・移動・置換などが行えます。また、フローやグローバルコンテキストも参照可能です。
参考にしたサイト
Node-RED User Group Japanの「メッセージを利用する」を参考にしました。