Difyは、AIアプリケーションを迅速に構築するためのオープンソースプラットフォームです。直感的なインターフェースと強力な機能により、開発者はカスタムチャットボット、AIエージェント、RAGエンジンなどを容易に作成できます。
この記事は、Difyを初めて使う初心者向けに、リスト(配列)処理の基本から応用までを解説します。
1. Difyのリスト処理とは?
リスト(配列)とは、複数のデータをひとまとまりで扱うためのデータ構造です 。たとえば
["田中", "佐藤", "井上"]
のように、複数の値(この例では文字列)を順序付けて格納できます。リストを使うと、関連するデータをまとめて管理でき、一括操作が可能になるため、複数要素の処理を簡潔に行えるというメリットがあります。Difyにおける「配列変数」も同様で、文字列や数値、ファイルなど複数要素を含む変数として扱われます。
Difyでリストを扱う基本操作には、リストへの要素追加があります。
リストへの要素追加
Difyのワークフローでリストに新しい要素を追加する際は、変数代入ノードを活用する方法がおすすめです。これにより、リストへの要素追加をシンプルかつ直感的に設定できます。
例えば、既存の配列変数 names に新たな情報を追加する場合、以下の手順で実装できます。
変数代入ノードで要素を追加する方法
1. Difyの「会話変数」設定画面 を開く。
2. 新しい変数 names を作成し、データ型を array[string] に設定。
3. デフォルト値を「JSONで編集する」以下のように設定:
["田中", "佐藤", "井上"]
4. 保存 する。
1. Difyのワークフロー編集画面 で 変数代入ノード を開く。
2. 変数 names を選択。
3. 操作を「追加(append)」に設定(※「上書き(overwrite)」ではない)。
4.追加する値を設定:


Difyのリスト処理は知れば知るほど便利なので、今すぐ実践してみよう!
2. フィルタリング処理(特定の条件に合う要素だけを取り出す)
「フィルタリング」とは、一覧(リスト)の中から、ある条件に合うものだけを取り出す方法です。Difyでは「リスト処理」という機能でフィルタリングを行います。たとえば、
- ファイル一覧なら、画像や文書などの種類、ファイル名、サイズなどをもとに絞り込む 例:画像だけを取り出す、ファイル名に「report」が含まれるものだけを選ぶ、など
- 数値の一覧なら、10以上の数字だけを取り出す、特定の範囲にある数字だけを選ぶ、など
- 文字列の一覧なら、「aで始まる」「特定の言葉が含まれる」などの条件で選ぶ
フィルタリングの条件を複数組み合わせることもできます。さらに、同じ「リスト処理」の機能で、並べ替えや「上から○件だけ取り出す」といった設定を同時に行うこともできます。
【フィルター処理の例】
入力リスト | フィルター条件 | 出力リスト |
---|---|---|
[“apple”, “banana”, “apricot”] | 「a」で始まる | [“apple”, “apricot”] |
[“東京”, “大阪”, “京都”] | 「京」を含む | [“東京”, “京都”] |
[5, 12, 7, 20] | 値が10以上 | [12, 20] |
2−1. 会話変数を設定する
<配列変数(例: names)を作成>
1. Difyの「会話変数」設定画面 を開く。
2. 新しい変数 items を作成し、データ型を array[string] に設定。
3. デフォルト値を「JSONで編集する」以下のように設定
["apple", "banana", "apricot"]
4. 保存 する。
2−2. フィルタリングの設定
<変数をリスト操作ノードでフィルタリング>
- Difyのワークフロー編集画面 で リスト処理ノード を追加。
- 操作対象の変数 items(会話変数)を選択。
- 「フィルター条件」で機能を選択し、条件を設定。
2−3. フィルター処理の方法
「aで始まる単語を抽出」
・対象リスト(会話変数 items)
[“apple”, “banana”, “apricot”]
・フィルター条件:で始まる(‘a’)


出力結果
["apple", "apricot"]



Difyのフィルタリング機能で、欲しいデータだけを瞬時に抽出できますね!
3. 並べ替え処理(昇順・降順にソートする)
「並べ替え(ソート)」とは、一覧(リスト)の中の要素を小さい順や大きい順、文字の順番などで並べなおすことです。
- 昇順(しょうじゅん)ソート: 小さいものから大きいもの、またはアルファベット順(a, b, c…)に並べる 例:数値[8, 3, 15] → 昇順にすると[3, 8, 15]
- 降順(こうじゅん)ソート: 大きいものから小さいもの、または逆アルファベット順(z, y, x…)に並べる 例:数値[8, 3, 15] → 降順にすると[15, 8, 3]
Difyの「リスト処理」機能で、並べ替えたいリストを選び、昇順か降順かを指定するだけでソートができます。ファイル一覧であれば、ファイル名の順やサイズの大きさ順で並べることもできます。
【ソート処理の例】
入力リスト | ソート方法 | 出力リスト |
---|---|---|
[8, 3, 15] | 昇順 | [3, 8, 15] |
[8, 3, 15] | 降順 | [15, 8, 3] |
[“b”, “d”, “a”, “c”] | 昇順 | [“a”, “b”, “c”, “d”] |
[“b”, “d”, “a”, “c”] | 降順 | [“d”, “c”, “b”, “a”] |
また、「先頭○件だけ取り出す」機能を合わせて使うと、例えば降順ソートした結果の上位3件だけを取り出す、という使い方も可能です。
3−1. 会話変数を作成
- Difyの「会話変数」設定画面 を開く。
- 新しい変数 numbers を作成し、データ型を array[number] に設定する。
- デフォルト値を「JSONで編集する」以下のように設定
[8, 3, 15]
- 保存する。
3−2. リスト処理ノードを設定
- Difyのワークフロー編集画面 で リスト処理ノード を追加。
- 対象の変数 numbers(会話変数)を選択する。
- 「並べ替え(ソート)」を選択し、昇順(ASC)または降順(DESC)を指定。


3−3. 並べ替えの具体例
入力リスト | ソート方法 | 設定値 | 出力リスト |
---|---|---|---|
[8, 3, 15] | 昇順 | “asc” | [3, 8, 15] |
[8, 3, 15] | 降順 | “desc” | [15, 8, 3] |
3−4. 上位○件を取得する
Difyでは、「上位○件を取得」 する機能と組み合わせることで、ソート後の上位N件のみを取得 することもできます。
例:降順に並べ替えた上位2件を取得
入力リスト | ソート方法 | 取得件数 | 出力リスト |
---|---|---|---|
[8, 3, 15] | 降順 | 2 | [15, 8] |
設定方法





昇順・降順の並べ替えもワンクリック!Difyでデータ処理のストレスをゼロにしよう!
4. イテレーション処理(同じ操作を繰り返す)
「イテレーション処理」とは、一覧(リスト)に含まれる要素一つひとつに対して、同じ操作を何度も繰り返すことです。プログラミングで言う「ループ」にあたりますが、Difyでは「イテレーションノード」という仕組みを使えば、コードを書かずに実現できます。
【イテレーションノードのポイント】
- 入力(リスト) あらかじめ用意しておいた一覧を指定します。たとえば「名前のリスト」や「数値のリスト」など。
- イテレーション内部の処理 一覧の各要素に対して実行したい操作を並べておきます(AIに要約させる、何かを計算する、ファイルを処理するなど)。
- 例: 「田中」「佐藤」「井上」という3つの要素があれば、その3つについて順番に同じ操作を行う
- 出力(処理結果の一覧) 繰り返し処理が終わると、各要素の結果がまとまった新しい一覧が出力されます。
【イテレーションの例】
- 「名前のリスト」に対して、それぞれ簡単な紹介文をAIに作らせる。 → 3つの名前があれば、AIへの問い合わせ(プロンプト)を3回連続で行い、それぞれの紹介文を一覧にしてまとめて出力。
このように繰り返しが必要な作業を自動化すると、大量の要素があっても手動で一個ずつ処理する手間を省けます。
4-1. 会話変数を設定する
<配列変数(例: names)を作成>
1. Difyの「会話変数」設定画面 を開く。
2. 新しい変数 items を作成し、データ型を array[string] に設定。
3. デフォルト値を「JSONで編集する」以下のように設定
["田中", "佐藤", "井上"]
4. 保存 する。
4-2. イテレーションノードを追加
- Difyのワークフロー編集画面 で イテレーションノード(反復処理ノード) を追加。
- 繰り返し処理の対象リスト に names を選択。
- 各要素に適用する処理を設定:
- 例1:名前ごとに紹介文を生成
- LLMノードを追加
- プロンプト設定
"{{item}}" という名前の人について、簡単な1行の紹介文を作ってください。


4−3. イテレーションの出力内容
入力リスト(names) | 処理(AIに紹介文を作らせる) | 出力リスト(descriptions) |
---|---|---|
[“田中”, “佐藤”, “井上”] | AIが紹介文を作成 | [“田中さんは博識で親しみやすい性格を持つ地域の活動家です。”, “佐藤さんは温かい笑顔と優れたコミュニケーション能力を持つ人です。”, “井上さんは優れた人柄と豊かな知識を持つ、地元で信頼されるコミュニティリーダーです。”] |



繰り返し作業の手間をゼロに!Difyのイテレーション機能で時間を節約しよう!
5. リスト処理のユースケース(具体的な例)
ここでは、初心者にも取り組みやすい「リストを扱うときの具体例」を紹介します。
ユースケース①: アップロードされたファイルの仕分け
例: ユーザーがまとめてアップロードしたファイルを、画像だけ別のAIに送る、文書だけ要約するといった場合。
- アップロードされたファイルは「ファイル一覧」として受け取る
- リスト処理を使って「画像だけを選ぶ(type = image)」「文書だけを選ぶ(type = document)」という風にフィルターをかける
- 画像リストは画像識別の処理、文書リストは要約の処理、と分岐して実行
- 最後に変数集約ノードで処理結果をまとめ、ユーザーに一括返却
ユースケース②: データの一括変換や集計
例: たくさんの数値から平均を出す、複数の文章から要約を作って一覧にする、など。
- イテレーションを使って、リストの要素(1件ずつ)に対して同じ処理を繰り返す
- 数値の合計を出す、文章を要約する、といった操作を自動的にまとめて行う
- 必要なら最後にまとめや集計結果を作って出力
ユースケース③: 条件によって異なる並べ替えを自動で実行
例: 「昇順」または「降順」をユーザーが選ぶと、それに応じて数値を並べ替え、結果を返す。
- 「昇順」か「降順」かで分岐(条件分岐)
- それぞれの分岐でリストを並べ替える
- 最後に集約ノードで結果をひとつにまとめ、ユーザーに返す
まとめ
ここまで紹介したように、Difyの「リスト処理」「フィルタリング処理」「イテレーション」といった機能を組み合わせると、一覧データの条件絞り込みや並べ替え、繰り返し処理などがノーコードで実現できます。
まずはシンプルな例から試して慣れ、徐々に応用してみると、複雑なデータ処理も簡単に作り上げられるようになるでしょう。