```mdx
---
title: "変数アサイナー"
description: "チャットフローアプリケーションで永続的な会話変数を管理する"
icon: "pen-to-square"
---

Variable Assignerノードは、会話変数に書き込むことでチャットフローアプリケーション内の永続データを管理します。通常の工作流変数とは異なり、会話変数はチャットセッション全体を通じて持続します。

<Frame caption="変数アサイナーノードの設定">
  <img src="https://assets-docs.dify.ai/2024/11/83d0b9ef4c1fad947b124398d472d656.png" alt="変数アサイナのインターフェース" />
</Frame>

## 会話変数と工作流変数の比較

**工作流変数**は、単一の工作流実行中のみ存在し、工作流が完了するとリセットされます。

**会話変数**は、同じチャットセッション内で複数の会話ターンにわたって持続し、ステートフルなインタラクションとコンテクストメモリを可能にします。

この持続性により、コンテクスト会話、ユーザーのパーソナライズ、ステートフル工作流、および複数のユーザーインタラクションにわたる進捗追跡が可能になります。

## 設定

更新する会話変数を設定し、そのソースデータを指定します。単一のノードで複数の変数をアサインできます。

<Frame caption="変数アサインの設定インターフェース">
  <img src="https://assets-docs.dify.ai/2024/11/ee15dee864107ba5a93b459ebdfc32cf.png" alt="変数アサインの設定" />
</Frame>

**変数** - 書き込む会話変数を選択する

**変数を設定** - 上流の工作流ノードからソースデータを選択する

**操作モード** - 変数をどのように更新するかを決定する（上書き、追加、クリアなど）

## 操作モード

異なる変数タイプは、そのデータ構造に基づいて異なる操作をサポートします：

<Tabs>
  <Tab title="文字列変数">
    **上書き** - 文字列値全体を新しいコンテンツで置き換える
    
    **クリア** - 変数を空にし、nullまたは空白に設定する
    
    **設定** - 固定値を手動で入力する
  </Tab>
  
  <Tab title="数値変数">
    **上書き** - 数値値を完全に置き換える
    
    **クリア** - nullまたは空の状態に設定する
    
    **設定** - 特定の数値値を手動で入力する
    
    **算術** - 現在の値に加算、減算、乗算、または除算を行う
  </Tab>
  
  <Tab title="オブジェクト変数">
    **上書き** - オブジェクト全体を新しいデータで置き換える
    
    **クリア** - オブジェクトを空にし、すべてのプロパティを削除する
    
    **設定** - オブジェクトの構造と値を手動で定義する
  </Tab>
  
  <Tab title="配列変数">
    **上書き** - 配列全体を新しいデータで置き換える
    
    **クリア** - 配列を空にし、すべての要素を削除する
    
    **追加** - 配列の末尾にアイテムを1つ追加する
    
    **拡張** - 他の配列から複数のアイテムを追加する
    
    **削除** - 最初または最後の位置からアイテムを削除する
  </Tab>
</Tabs>

配列操作は、時間とともに成長するメモリシステム、チェックリスト、および会話履歴を構築するのに特に強力です。

## 一般的な実装パターン

### スマートメモリシステム

会話から重要な情報を自動的に検出し保存するチャットボットを構築します：

<Frame caption="スマートメモリシステム工作流">
  <img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/workflow/node/8d0492814b1515f50e87b2900ff400db.png" alt="スマートメモリの実装" />
</Frame>

システムはユーザー入力を分析して記憶に残る事実を抽出し、構造化された情報を抽出して将来の会話で参照するための永続的なメモリ配列に追加します。

### ユーザー設定の保存

言語設定、通知設定、表示オプションなどのユーザー設定を保存します：

<Frame caption="ユーザー設定管理">
  <img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/workflow/node/1867d608a7d009431b73377ed65b427b.png" alt="ユーザー設定工作流" />
</Frame>

ユーザー入力から初期設定をキャプチャするために**上書き**モードを使用し、その後のすべての大型语言模型（LLM）応答で参照してパーソナライズされたインタラクションを実現します。

### 進捗チェックリスト

複数の会話ターンにわたって完了状況を追跡するガイド付き工作流を構築します：

<Frame caption="進捗チェックリストの実装">
  <img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/workflow/node/c4362b01298b12e7d6fcd9e798f3165a.png" alt="進捗チェックリスト工作流" />
</Frame>

配列会話変数を使用して完了した項目を追跡します。Variable Assignerは各ターンでチェックリストを更新し、LLMは残りのタスクをユーザーに案内するためにそれを参考にします。

## ベストプラクティス

**適切なデータ型を選択する** - 成長するコレクションには配列を、構造化データにはオブジェクトを、単一値には単純型を使用します。

**記述的な変数名を使用する** - 会話変数の目的と内容を示すために明確な名前を付けます。

**データの成長を管理する** - 長い会話での過剰なメモリ使用を防ぐために配列とオブジェクトのサイズを監視します。

**変数を初期化する** - 定義されていない動作を防ぐために会話変数に初期値を設定します。

**適切なタイミングでクリアする** - 新しいプロセスやセッションを開始する際に変数をリセットするためのクリア操作を使用します。
```