【Dify】変数スコープ入門|入力変数・会話変数・システム変数の使い分け

ながみえ

Difyでアプリを作っていると、「ちゃんと入力したのに値が空っぽになる」「前に設定したはずの条件が急に消える」「逆に、前の会話の情報が残っていて想定外の出力になる」といった “変数まわりの混乱” に出会うことがあります。

こうしたトラブルの多くは、Difyの操作ミスというよりも「その変数が、どこまで有効なのか(スコープ)」を取り違えているのが原因です。

この記事では、入力変数・会話変数・システム変数を「なんとなく」ではなく、目的に合わせて迷わず選べるように整理していきます。

ワークフローが少し複雑になってもブレない土台を作りましょう。

Dify学習館|生成AIアプリ開発の基礎から実践まで

変数スコープとは?「出どころ」と「寿命」で整理

Difyにおける 変数スコープ は、ひと言でいえば「その変数を、いつ・どこで参照できるか」を決めるルールです。

変数そのものは “値を入れる箱” ですが、スコープは “その箱を使っていい範囲” だと思うと理解しやすいです。

スコープを「難しい概念」として覚えることではありません。実務で迷わないために、次の2つだけで整理できるようにします。

1つ目は、値の出どころです。

ユーザーが入力した値なのか、会話の流れの中で決まった値なのか、あるいはDifyが最初から持っている情報なのか。

出どころが違うと、参照方法も扱い方も変わります。

2つ目は、値の寿命です。

その値は「この1回の実行だけ」で使えればいいのか、それとも「同じ会話の続き」で何度も使いたいのか。

寿命の設計を間違えると、さっきの“あるある”が起きやすくなります。

たとえば、毎回ユーザーに聞きたい項目を会話の途中で固定してしまったり、逆に会話で引き継ぎたい条件が毎回リセットされてしまったり、といったズレです。

このあと登場する入力変数・会話変数・システム変数は、結局のところ「出どころ」と「寿命」が違うだけです。

違いが見えれば、どの変数を使うべきかも自然に決まってきます。

入力変数・会話変数・システム変数の違い

ここからは、Difyでよく使う変数を「3種類」に分けて整理します。

ポイントはシンプルで、先ほどの軸どおり「出どころ」と「寿命」で見れば、だいたい迷わなくなります。

入力変数:ユーザーから受け取る「今回の材料」

入力変数は、ユーザーがフォームに入れた内容や、添付したファイルなど「今回の実行で渡された値」を扱います。

ワークフローの前半で受け取って、後続ノード(LLM、分岐、テンプレートなど)に渡していくイメージです。

たとえば「要約してほしい文章」「ブログ記事のテーマ」「口調(丁寧/カジュアル)」「出力形式(箇条書き/文章)」のように、ユーザーが毎回変えて使う前提の項目は入力変数が向いています。

逆に言うと、ユーザーが入力していないのに“勝手に入っているはず”と期待すると、空欄になって詰まりやすいのがこのタイプです。

あわせて読みたい
【Dify】入力フォーム設計入門|変数・フィールド設計ミニ講座
【Dify】入力フォーム設計入門|変数・フィールド設計ミニ講座

会話変数:同じ会話内で保持したい「決定事項」

会話変数は、チャットのやり取りの中で決まった情報を、同じ会話セッションの続きで使い回したいときに便利です。

たとえば「ユーザーの目的が途中で確定した」「出力のルールを一度合意した」「この会話では常に“短め”で返すと決めた」など、途中で確定した方針を覚えておく用途ですね。

ここで重要なのは、会話変数は“会話の文脈”に属するという点です。

入力変数のように毎回の実行で必ず渡されるとは限りませんし、逆に一度セットすると、その会話の中では残り続けて意図せず影響することもあります。

つまり、便利な反面「いつ更新し、いつ上書きするか」の設計が効いてきます。

あわせて読みたい
【Dify】Lesson4-2:資料のミスチェックアプリを作ろう|会話変数と変数代入ノード
【Dify】Lesson4-2:資料のミスチェックアプリを作ろう|会話変数と変数代入ノード

システム変数:Difyが持っている「状況」を取り出す

システム変数は、Dify側が最初から持っている情報を参照するための変数です。

ユーザー入力でも、あなたが途中で保存した値でもなく、「今このアプリがどんな状況で動いているか」を知るための手がかりになります。

代表的なのは、ユーザーが送った直近のメッセージ内容(クエリ)や、会話ID、何ターン目か、といった情報です。

これらを使うと「初回だけ追加で質問する」「nターン目以降は要約モードに切り替える」「ユーザー単位で処理を分ける」といった制御がしやすくなります。

あわせて読みたい
【Dify】システム変数の種類と使い方一覧
【Dify】システム変数の種類と使い方一覧

最後に、迷ったときの判断を短くまとめます。

次の3つを自分に問いかけると、変数選びがかなり安定します。

  • 今回ユーザーが渡してくれた値か? → 入力変数
  • 同じ会話の続きで覚えておきたい値か? → 会話変数
  • Difyが自動で持っている“状況”を参照したいか? → システム変数

まとめ:迷ったら「出どころ」と「寿命」で選ぶ

Difyの変数で迷ったときは、「その値はどこから来て、どれくらいの期間使いたいか」で整理すると、判断が一気にラクになります。

入力・会話・システムは別物ですが、違いは突き詰めると“出どころ”と“寿命”の違いでした。

この3つの整理ができていると、ワークフローが長くなっても「どこで値が入って、どこで消えて、どこで参照できるか」が追えるようになります。

次の内容に進む前に、いま作っているアプリの変数がどれに当たるかを一度だけ見直しておくと、後の拡張がかなりスムーズです。

記事URLをコピーしました