コンテンツにスキップ

templateノード

templateノード

概要

このノードでは、フロー内のデータを利用してお好きなテキストを生成することができます。 Mustache記法を用いて、すでに定義されている変数を文字列に埋め込むことができ、動的なテキスト生成が可能です。 生成されたテキストはmsg.payloadに格納され出力されます。

メイン画像
サブ画像1 サブ画像2 サブ画像3

設定項目一覧

必須 項目名 説明
◯ 名前 「このノードでは何を行うか」をわかりやすくするために、ノードにお好きな名前をつけることができます。
◯ プロパティ ここで指定したプロパティに、このノードでの出力結果が格納されます。
例えば、msg.payloadと指定すると、出力結果はmsg.payloadで参照できます。
◯ テンプレート 実際に出力するためのテンプレートを記述します。特にMustacheのルールに即してテンプレートを作成することで、msgオブジェクトに格納されている変数を埋め込むことができます。
◯ 形式 Mustacheテンプレートか平文かをお選びいただけます。

・Mustacheテンプレート: テンプレート内のMustache記法が書かれた場所が、指定したプロパティの値に置換されて格納されます。
・平文: 置換を行わずにMustache記法をただのテキストとして格納します。
◯ 出力形式 平文、JSON、YAMLからお選びいただけます。
◯ 構文 このプルダウンの中から、出力する際のお好きなテンプレート(言語・フォーマット)を指定できます。選択できる形式の詳細は以下をご確認ください。

構文の詳細

「構文」のプルダウンから選択できる各形式の特徴は以下の通りです。

基本フォーマット・マークアップ言語

  1. Mustache {{}}の中に予め定義しておいたプロパティを指定すると、その箇所がプロパティの値で置換されます。
  2. JSON JSONの値を格納します。JSONは「キー」と「値」というペアで記述された情報をひとまとまりにして管理することができます。※具体的な例は後述の「入力形式の詳細」を参照してください。
  3. Markdown テキストを簡単に書式設定できる軽量マークアップ言語です。見出し、リスト、リンク、強調などを記号を用いて文書構造を簡単に表現できます。
  4. YAML JSONと同じデータ交換フォーマットとしてよく利用されます。構造をインデント(字下げ)で表現するため、人間が理解しやすいフォーマットです。※具体的な例は後述の「入力形式の詳細」を参照してください。

プログラミング言語

💡 補足: コードを記述する際に使用します。必要に応じてお使いください。

  1. HTML HTMLのコードを格納できます。HTMLとはWebサイトを構築するためのマークアップ言語です。
  2. JavaScript JavaScriptのコードを扱う際に利用します。Webサイト構築の際に利用するプログラミング言語で、HTMLやCSSといった言語と組み合わせることで動的なサイトを構築できます。
  3. CSS HTMLで記述されたサイトの文字に色をつけたり、画面のレイアウトを構成するなどの装飾を担当する言語です。
  4. PHP 主にWeb開発に使われるスクリプト言語です。HTML内に埋め込んで動的なウェブページを生成したり、データベースと連携することができます。
  5. SQL リレーショナルデータベースに情報を格納および処理するためのプログラミング言語です。templateノードからデータベースに対してSQLを発行したいときなどにこちらをお選びください。

入力形式の詳細

テキストを生成する際に、あらかじめ定義されている変数の値を利用したい場合があります。 そのような場合に、templateノードを利用することで、変数を埋め込んだテキストを動的に生成することができます。

1. 必要な知識

templateノードを正しく理解し、使いこなすために必要な基本概念です。

① テンプレートエンジン

テンプレートエンジンとは、ある文(テンプレート)の中に後からデータを流し込むことで、自動的にテキストを生成してくれる仕組みです。

  • テンプレートの例
    【アラート通知】サーバー異常を検知しました。
    対象ホスト:{{hostname}}
    発生検知時刻:{{timestamp}}
    エラー内容:{{error_message}}
    
  • 投入するデータ
    hostname: prd-web-server-01
    timestamp: 2026-06-03 15:30:00
    error_message: CPU Utilization Exceeded 95%
    
  • 生成されるテキスト
    【アラート通知】サーバー異常を検知しました。
    対象ホスト:prd-web-server-01
    発生検知時刻:2026-06-03 15:30:00
    error_message:CPU Utilization Exceeded 95%
    

このように、データを変えるだけで同じフォーマットのテキストを量産できる仕組みを指します。

② Mustache(マスタッシュ)

Mustacheは、数あるテンプレートエンジンの中の一つです。特徴は、変数を {{}}(二重の中括弧)で囲むことで、その部分にデータを埋め込めこむことができます。

  • テンプレートの例
    /var/log/backup/{{target_date}}_system.log
    
  • 実行結果(target_date の値が「2026-07-01」の場合)
    /var/log/backup/2026-07-01_system.log
    
    {{target_date}} の部分が、動的に生成された実際の値へと自動的に置き換わります。

③ リスト(配列)

リストとは、複数の要素をひとまとめにして扱うためのデータ形式です。 * リストの例

target_ips = ["192.168.1.10", "192.168.1.11", "192.168.1.12"]
この場合、target_ips という1つの変数の中に「192.168.1.10」「192.168.1.11」「192.168.1.12」という3つの要素(IPアドレス)が含まれている状態になります。

④ true と false(論理値)

プログラミングの世界では、ある条件が正しいかどうかを true(正しい/はい) と false(違う/いいえ) で表します。

💡 補足: 後述の具体例では isAdult(18歳以上なら true、18歳未満なら false になる変数)を条件判定の基準として使用します。

2. templateノードの使い方

2.1. 変数を埋め込んだテキスト生成

Mustache記法を利用して、templateノードより前のフローですでに宣言されている変数(msg オブジェクトに付与されている変数)を埋め込むことができます。

templateノードのフローイメージ(変数の埋め込み)

  • 記述例(msg.hostname の値が prd-web-01 の場合)
    対象サーバー【{{msg.hostname}}】の異常を検知しました。
    
  • 出力結果(msg.payload に格納されるテキスト)
    対象サーバー【prd-web-01】の異常を検知しました。
    

2.2. 条件分岐(データの有無・真偽値による切り替え)

変数の値(true / false)によって、出力するメッセージを切り替えることができます。 たとえば、実行したジョブの成否に応じてメッセージを変えたい場合を考えます。 処理が成功した場合は「ジョブが正常終了しました。」、それ以外(失敗)の場合は「ジョブが異常終了しました。」というメッセージを出力したいとします。 このような場合は、以下のような書き方を利用することで条件分岐を設定することができます。

templateノードのフローイメージ(条件分岐)

  • 記述例(ジョブの成否に応じたメッセージの出し分け)
    • {{#変数名}} ~ {{/変数名}}:変数が true の時に処理される
    • {{^変数名}} ~ {{/変数名}}:変数が false の時に処理される
      {{#isSuccess}}
      【INFO】ジョブが正常終了しました。環境をご確認ください。
      {{/isSuccess}}
      {{^isSuccess}}
      【ERROR】ジョブが異常終了しました。至急ログを確認してください!
      {{/isSuccess}}
      
  • 出力結果(msg.payload への出力)
    • isSuccess が true の場合
      【INFO】ジョブが正常終了しました。環境をご確認ください。
      
    • isSuccess が false の場合
      【ERROR】ジョブが異常終了しました。至急ログを確認してください!
      

2.3. ループ処理(リストの繰り返し展開)

リストの中にある要素を一つずつ取り出して、繰り返し同じフォーマットで表示させることができます。

templateノードのフローイメージ(ループ処理)

  • 記述例(対象サーバーリストの展開)
    【メンテナンス対象一覧】
    {{#servers}}
    ・ホスト名: {{name}}(状態: メンテナンス中)
    {{/servers}}
    
  • 出力結果 対象のリストが servers = [{"name": "web-01"}, {"name": "web-02"}, {"name": "db-01"}] だった場合、以下のように順次取り出されて出力されます。
    【メンテナンス対象一覧】
    ・ホスト名: web-01(状態: メンテナンス中)
    ・ホスト名: web-02(状態: メンテナンス中)
    ・ホスト名: db-01(状態: メンテナンス中)
    

出力形式の詳細

templateノードの出力形式を「JSON」または「YAML」に設定した際の特徴と、それぞれのデータ構造の詳細です。

1. JSON

templateノードの出力形式を「JSON」に設定すると、出力がJSON形式になります。 複数の情報を持つことができ、あるひとまとまりの意味のあるデータの集合を1つのデータとして表現できます。

templateノードのフローイメージ(JSON出力)

  • 構造の特徴

    • key(キー) と value(値) の組み合わせで構成されています。
    • keyには文字列(意味のある名前)を指定します。
    • valueには、数値、文字列、配列(リスト)、オブジェクト(連想配列)などを指定できます。
  • 記述例 以下は、ITSMS(チケット管理システム)と連携する際の「障害インシデントチケット」の情報を表したJSONの例です。

    {
      "ticket_id": "INC-2026-0042",
      "title": "API応答遅延の発生",
      "priority": "High",
      "assignment": {
        "team": "Infrastructure-Group",
        "lead_person": "Sato"
      },
      "impact_services": [
        "Payment-Gateway",
        "User-Dashboard"
      ]
    }
    

2. YAML

templateノードの出力形式を「YAML」に設定すると、出力がYAML形式になります。 YAMLは、データを人間がパッと見て理解しやすい形(可読性の高い形)で表現するためのフォーマットです。

templateノードのフローイメージ(YAML出力)

  • 構造の特徴

    • JSONと同様に、意味のある名前(キー)とその値(値)をセットで表現します。
    • インデント(半角スペースによる字下げ)を使ってデータの階層構造を表現するのが最大の特徴です。
  • 記述例 以下は、上記のJSONと同じ「障害インシデントチケット」の情報をYAML形式で表現した例です。

    ticket_id: INC-2026-0042
    title: API応答遅延の発生
    priority: High
    assignment:
      team: Infrastructure-Group
      lead_person: Sato
    impact_services:
      - Payment-Gateway
      - User-Dashboard
    

関連リンク

Node-REDの、以下の公式ドキュメントもあわせてご参照ください。

解説動画

基礎編

応用編