> ## Documentation Index
> Fetch the complete documentation index at: https://dify-6c0370d8-add-new-agent.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# テンプレート

> Jinja2テンプレートを使用してデータを変換およびフォーマット

<Note> ⚠️ このドキュメントはAIによって自動翻訳されています。不正確な部分がある場合は、[英語版](/en/use-dify/nodes/template)を参照してください。</Note>

テンプレートノードは、Jinja2テンプレートを使用して複数のソースからのデータを構造化されたテキストに変換・フォーマットします。変数の結合、出力のフォーマット、下流のノードやエンドユーザー向けのデータ準備に使用します。

<Frame caption="テンプレートノード設定インターフェース">
  <img src="https://assets-docs.dify.ai/2025/04/0838bb5c7e1d1a58ed30fcd9fc48920f.png" alt="テンプレートノードインターフェース" />
</Frame>

## Jinja2テンプレート

テンプレートノードはJinja2テンプレート構文を使用して、ワークフローデータに基づいて適応する動的コンテンツを作成します。これにより、ループ、条件分岐、フィルターなどのプログラミング的機能を使用した高度なテキスト生成が可能になります。

### 変数の置換

二重波括弧を使用してワークフロー変数を参照します：`{{ variable_name }}`。ドット記法とブラケット構文を使用して、ネストされたオブジェクトプロパティや配列要素にアクセスできます。

```jinja theme={null}
{{ user.name }}
{{ items[0].title }}
{{ data.metrics.score }}
```

### 条件分岐ロジック

if-else文を使用してデータ値に基づいて異なるコンテンツを表示します：

```jinja theme={null}
{% if user.subscription == 'premium' %}
おかえりなさい、プレミアムメンバー様！すべての機能にアクセスできます。
{% else %}
追加機能をご利用いただくため、プレミアムへのアップグレードをご検討ください。
{% endif %}
```

### ループと反復処理

for ループを使用して配列とオブジェクトを処理し、反復的なコンテンツを生成します：

```jinja theme={null}
{% for item in search_results %}
### 結果 {{ loop.index }}
**スコア**: {{ item.score | round(2) }}
{{ item.content }}
---
{% endfor %}
```

<Frame caption="知識検索結果を処理するテンプレート">
  <img src="https://assets-docs.dify.ai/2025/04/0ae3f13cf725cb2c52c72cc354e592ee.png" alt="テンプレートフォーマット例" />
</Frame>

## データフォーマット

### フィルター

Jinja2フィルターはテンプレートレンダリング中にデータを変換します：

```jinja theme={null}
{{ name | upper }}
{{ price | round(2) }}
{{ content | replace('\n', '<br>') }}
{{ timestamp | strftime('%B %d, %Y') }}
{{ score | default('スコア利用不可') }}
```

### エラーハンドリング

デフォルト値と条件チェックを使用して、欠損または無効なデータを適切に処理します：

```jinja theme={null}
{{ user.email | default('メールアドレスが提供されていません') }}
{{ metrics.accuracy | round(2) if metrics.accuracy else '計算されていません' }}
```

## インタラクティブフォーム

テンプレートはチャットインターフェースで構造化データ収集のためのインタラクティブHTMLフォームを生成できます：

```html theme={null}
<form data-format="json">
  <label for="username">ユーザー名:</label>
  <input type="text" name="username" required />
  
  <label for="priority">優先度:</label>
  <input type="select" name="priority" data-options='["low","medium","high"]'/>
  
  <label for="message">メッセージ:</label>
  <textarea name="message" placeholder="メッセージを入力してください"></textarea>
  
  <input type="checkbox" name="variant="primary">送信</button>
</form>
```

<Frame caption="チャットインターフェースでレンダリングされたインタラクティブフォーム">
  <img src="https://assets-docs.dify.ai/2025/04/9d24e9cfa3cdde00e4eee15bd4bbea76.png" alt="インタラクティブフォームのレンダリング" />
</Frame>

ユーザーがフォームを送信すると、レスポンスは下流のワークフローノードで即座に処理できる構造化JSONデータになります。

## 出力制限

テンプレート出力は**80,000文字**に制限されています（`TEMPLATE_TRANSFORM_MAX_LENGTH`で設定可能）。これにより、メモリ問題を防ぎ、大きなテンプレート出力の適切な処理時間を確保します。

## 一般的な使用例

**レポート生成** - 複数のソースからのデータを一貫した構造とスタイリングを持つフォーマットされたレポートに結合します。

**APIレスポンスフォーマット** - 内部データ構造を外部消費用のユーザーフレンドリーなフォーマットに変換します。

**大規模言語モデルプロンプト準備** - 複雑なデータを適切にフォーマットされたプロンプトに構造化し、大規模言語モデルの処理精度を向上させます。

**メールと通知テンプレート** - ユーザーデータとワークフロー結果に基づいて動的コンテンツを含むパーソナライズされたメッセージを生成します。

**データ変換** - 外部システムとの統合のために異なるデータフォーマットと構造間で変換します。

## ベストプラクティス

**分かりやすい変数名を使用する** - 特に複雑なデータ構造を処理する際に、テンプレートを読みやすく保守しやすくします。

**欠損データの処理** - デフォルト値と条件チェックを使用してテンプレートレンダリングエラーを防止します。

**可読性のためのフォーマット** - 適切な間隔、改行、フォーマットを使用して清潔でプロフェッショナルな出力を作成します。

**サンプルデータでテスト** - テンプレートがエッジケースを処理し、異なる入力シナリオで期待される結果を生成することを確認します。
