コンテンツにスキップ

changeノード

changeノード

概要

changeノードは、フロー内で受け取ったデータの値を変更・追加・削除・移動するためのノードです。

ロボシュタインのフローでは、各ノードの間で msg というデータが受け渡されます。changeノードを使用すると、msg.payload や msg.topic などの値を書き換えたり、新しいプロパティを追加したり、不要なプロパティを削除したりできます。

例えば、受信したアラートメールの本文を後続のノードで扱いやすい形に整形したり、通知用のメッセージ本文をセットしたりする場合に使用します。

functionノードのようにJavaScriptを記述しなくても、画面上の設定だけでデータの加工ができるため、簡単な値の変更や置換を行う場合に便利です。

changeノード設定画面

具体的な活用例(アラートメール本文の整形と通知への応用)

実務で特によくある「受信したアラートメールの内容を整形し、後続の通知ノードへ渡すフロー」を例に、changeノードの役割を見ていきましょう。

フローのイメージ図

changeノードのフローイメージ

① changeノードで値を整形する

メール本文に不要な文字列が含まれている場合、changeノードの「値の置換」を使用して文字列を置換できます。

例:msg.payload.text に含まれる「CRITICAL」を「重要アラート」に置換する

これにより、後続の通知文やチケット本文で、より分かりやすい表現に整形できます。

また、「値の代入」を使用して、後続のtemplateノードやメール送信ノードで扱いやすいように、以下のような新しいプロパティを追加することもできます。

msg.alertLevel = "重要"
msg.systemType = "サーバ"

② 後続ノードへ渡す

changeノードで整形した値は、後続のtemplateノードやメール送信ノード、Slack送信ノードなどで利用できます。

例えば、changeノードで msg.alertLevel を追加しておくことで、templateノード側では以下のように通知文へ埋め込むことができます。

アラートレベル:{{alertLevel}}

このように、changeノードは後続ノードで使いやすいようにデータを整える役割を持ちます。

設定項目一覧

必須 項目名 説明
名前 フローエディター上で表示されるノードの名前を任意で指定できます。
◯ ルール 実行する処理内容を設定します。「値の代入」「値の置換」「値の削除」「値の移動」から選択します。

changeノードでは、1つのノード内に複数のルールを設定できます。ルールは「追加」ボタンで増やすことができ、複数のルールを設定した場合は上から順番に処理されます。

ルールについて

changeノードでは、以下の4種類のルールを使用できます。

ルール 内容
値の代入 指定したプロパティに値を設定します。
値の置換 指定したプロパティ内の文字列を検索し、別の文字列に置換します。
値の削除 指定したプロパティを削除します。
値の移動 指定したプロパティの値を、別のプロパティへ移動します。

① 値の代入

指定したプロパティに値を設定します。 例えば、後続のノードで利用するために、新しいプロパティを追加したい場合に使用します。

  • 設定例 msg.alertLevel に「重要」(文字列)を代入する
  • 実行後のイメージ
    {
      "alertLevel": "重要"
    }
    

このように設定しておくと、後続のtemplateノードやswitchノードで msg.alertLevel を参照できます。

  • よくある利用例
    • メール送信ノードへ渡す件名を msg.subject に設定する
    • アラートレベルを msg.alertLevel に設定する
    • 後続ノードで使いやすいように、固定値を追加する
    • msg.payload に通知本文をセットする

② 値の置換

指定したプロパティ内の文字列を検索し、別の文字列に置換します。 例えば、監視ツールから届いたメール本文内の表記を、通知先の担当者に分かりやすい表現へ変換する場合に使用します。

  • 設定例 msg.payload.text 内の「CRITICAL」を「重要アラート」に置換する
  • 実行前
    CRITICAL: Webサーバで異常を検知しました。
    
  • 実行後
    重要アラート: Webサーバで異常を検知しました。
    

検索する文字列が複数含まれている場合は、すべて置換されます。

  • よくある利用例
    • 監視ツール固有の表記を分かりやすい文言に置き換える
    • 置換後の文字列を空にして、不要な文字列を削除する
    • 改行や区切り文字を置換して、後続処理で扱いやすくする(検索する文字列の種類に「正規表現」を指定します)
    • メール本文中の表記ゆれを揃える

③ 値の削除

指定したプロパティを削除します。 後続のノードへ渡す必要がない情報や、不要なデータを取り除きたい場合に使用します。

  • 設定例 msg.payload.rawData を削除する
  • よくある利用例
    • 不要な一時データを削除する
    • 後続ノードへ渡したくない情報を削除する
    • debugノードで確認しやすいように、不要なプロパティを整理する

④ 値の移動

指定したプロパティの値を、別のプロパティへ移動します。移動元のプロパティは削除されます。 元のプロパティ名では分かりにくい場合や、後続ノードで参照しやすい名前に変更したい場合に使用します。

  • 設定例 msg.payload.subject を msg.mailSubject に移動する
  • 実行前
    {
      "payload": {
        "subject": "サーバーアラート通知"
      }
    }
    
  • 実行後
    {
      "payload": {},
      "mailSubject": "サーバーアラート通知"
    }
    
  • よくある利用例
    • メール件名を msg.mailSubject など分かりやすい名前に移動する
    • 後続ノードで使う値を、扱いやすいプロパティ名に整理する
    • 複雑なオブジェクト内の値を、上位のプロパティへ取り出す

値の種類について

「値の代入」で設定する値は、入力欄左側のプルダウンから種類を選択できます。

種類 内容
msg. 他の msg プロパティの値を使用します。
flow. フローコンテキストの値を使用します。
global. グローバルコンテキストの値を使用します。
文字列 任意の文字列を設定します。
数値 数値を設定します。
真偽 true または false を設定します。
JSON JSON形式のデータを設定します。
バッファ バイナリデータ(バッファ)を設定します。
日時 実行時点の日時(タイムスタンプ)を設定します。
JSONata式 JSONataを使用して、値の抽出や加工を行います。
環境変数 環境変数の値を使用します。

「値の置換」の「検索する文字列」では、上記のうち msg./flow./global./文字列/数値/真偽/環境変数 に加えて、正規表現 を指定できます。

通常の利用では、まずは「文字列」「数値」「真偽」「msg.」を使用することが多いです。複雑な加工が必要な場合は、JSONata式やfunctionノードの利用も検討してください。

利用例

例1:メール送信用の件名を設定する

メール送信ノードへ渡す件名を、changeノードで設定します。

例1:メール送信用の件名を設定する

msg.subject = "【ロボシュタイン通知】サーバーアラートを検知しました"

メール送信ノードは、ノードの「件名」が空欄の場合に msg.subject を件名として使用します。詳しくはメール送信ノードをご確認ください。

例2:メール本文中の表記を置換する

監視ツールから届いたメール本文を、分かりやすい表現へ変換します。

例2:メール本文中の表記を置換する

msg.payload.text 内の「WARNING」を「警告」に置換する

置換後の値をtemplateノードやメール送信ノードで利用することで、通知内容を読みやすくできます。

例3:判定用の値を追加する

switchノードで条件分岐しやすいように、判定用の値を追加します。

例3:判定用の値を追加する

msg.alertType = "server"

後続のswitchノードで msg.alertType を条件にすることで、本文全体を毎回判定するよりも分かりやすいフローにできます。

例4:不要なデータを削除する

後続ノードへ渡す必要がないデータを削除します。

例4:不要なデータを削除する

msg.payload.rawData を削除する

データ量が多い場合や、debugノードで確認する際に見づらい場合に便利です。

注意点

ルールは上から順番に実行される

changeノードに複数のルールを設定した場合、上から順番に処理されます。 例えば、先にプロパティを削除・移動してしまうと、後続のルールでその値を参照できなくなります。複数ルールを設定する場合は、処理の順番に注意してください。ルールの順番は、左端の「≡」をドラッグして入れ替えられます。

対象プロパティの指定ミスに注意する

msg.payload.text を変更したいところを msg.payload と指定してしまうと、想定より広い範囲のデータを書き換えてしまう可能性があります。 必要に応じて、changeノードの前後にdebugノードを接続し、入力値や処理結果を確認してください。

JSON形式の値を設定する場合は書式に注意する

値の種類にJSONを指定する場合、JSONとして正しい形式で記述する必要があります。 例えば、キーや文字列はダブルクォーテーションで囲む必要があります。

{
  "status": "error",
  "level": "critical"
}

JSONの形式が正しくない場合、ノードの設定エラーとなり、正しく動作しません。

複雑な処理はfunctionノードも検討する

changeノードは、値の代入・置換・削除・移動などのシンプルな加工に向いています。 複数条件を組み合わせた複雑な判定や、配列の集計、外部データとの突合などを行う場合は、functionノードを利用した方が分かりやすい場合があります。

関連ノード

  • debugノード:changeノードの前後でデータの中身を確認する場合に使用します。
  • switchノード:changeノードで整えた値をもとに条件分岐する場合に使用します。
  • templateノード:changeノードで整えた値を通知文やメール本文に埋め込む場合に使用します。
  • functionノード:changeノードでは表現しづらい複雑な処理を行う場合に使用します。
  • メール送信ノード:changeノードで作成・整形した件名や本文を送信する場合に使用します。

まとめ

changeノードは、フロー内のデータを後続処理で扱いやすい形に整えるためのノードです。

値の代入、文字列の置換、不要なデータの削除、プロパティの移動などを、JavaScriptを書かずに画面上の設定で行うことができます。

特に、アラートメール本文の整形、通知用メッセージの作成、switchノードで使う判定値の追加、不要データの整理などで活用できます。

フロー作成時は、必要に応じてdebugノードで入力値や処理結果を確認しながら、changeノードで必要な形に整えていくと、後続ノードの設定が分かりやすくなります。


解説動画

基礎編

応用編