Difyは、AIアプリケーションを迅速に構築するためのオープンソースプラットフォームです。直感的なインターフェースと強力な機能により、開発者はカスタムチャットボット、AIエージェント、RAGエンジンなどを容易に作成できます。
この記事は、Difyを初めて使う初心者向けに、リスト(配列)処理の基本から応用までを解説します。

Tom(@0x__tom)
代表取締役 CEO
Dify を活用した企業の DX 支援や AI エージェント事業などに取り組む株式会社MYUUUという生成AIスタートアップの代表。生成AIユーザーが1,400名所属し、Difyの最新ユースケースを学び合うコミュニティ「FRACTAL LAB」を運営しています。
Difyのリスト処理とはどんなものですか?
Difyのリスト処理は、複数のデータ(文字列、数値、ファイルなど)をまとめて効率的に扱うための機能です。
主に以下の4つの基本操作があります。
- 要素の追加
- フィルタリング
- 並べ替え(ソート)
- イテレーション(繰り返し処理)
特にイテレーションでの利用が多いです。
リスト(配列)とは、複数のデータをひとまとまりで扱うためのデータ構造です 。
たとえば、
["田中", "佐藤", "井上"]
のように、複数の値(この例では文字列)を順序付けて格納できます。リストを使うと、関連するデータをまとめて管理でき、一括操作が可能になるため、複数要素の処理を簡潔に行えるというメリットがあります。
Difyにおける「配列変数」も同様で、文字列や数値、ファイルなど複数要素を含む変数として扱われます。Difyでリストを扱う基本操作には、リストへの要素追加があります。
リストへの要素追加
Difyのワークフローでリストに新しい要素を追加する際は、変数代入ノードを活用する方法がおすすめです。これにより、リストへの要素追加をシンプルかつ直感的に設定できます。

編集代入ノードについては以下の記事で詳しく解説してます!


例えば、既存の配列変数 names に新たな情報を追加する場合、以下の手順で実装できます。
変数代入ノードで要素を追加する方法
配列変数(例: names)を作成
1. Difyの「会話変数」設定画面 を開く。
2. 新しい変数 names を作成し、データ型を array[string] に設定。
3. デフォルト値を「JSONで編集する」以下のように設定:
["田中", "佐藤", "井上"]
4. 保存 する。
変数代入ノードの設定
1. Difyのワークフロー編集画面 で 変数代入ノード を開く。
2. 変数 names を選択。
3. 操作を「追加(append)」に設定(※「上書き(overwrite)」ではない)。
4.追加する値を設定:





Difyのリスト処理は知れば知るほど便利なので、今すぐ実践してみよう!
フィルタリング処理(特定の条件に合う要素だけを取り出す)
「フィルタリング」とは、一覧(リスト)の中から、ある条件に合うものだけを取り出す方法です。Difyでは「リスト処理」という機能でフィルタリングを行います。
ファイル一覧の場合
画像や文書などの種類、ファイル名、サイズなどをもとに絞り込む
例:画像だけを取り出す、ファイル名に「report」が含まれるものだけを選ぶ
数値の一覧の場合
10以上の数字だけを取り出す、特定の範囲にある数字だけを選ぶ
文字列の一覧の場合
「aで始まる」「特定の言葉が含まれる」などの条件で選ぶ
フィルタリング処理の例
フィルタリングの条件を複数組み合わせることもできます。
さらに、同じ「リスト処理」の機能で、並べ替えや「上から○件だけ取り出す」といった設定を同時に行うこともできます。
入力リスト | フィルター条件 | 出力リスト |
---|---|---|
[“apple”, “banana”, “apricot”] | 「a」で始まる | [“apple”, “apricot”] |
[“東京”, “大阪”, “京都”] | 「京」を含む | [“東京”, “京都”] |
[5, 12, 7, 20] | 値が10以上 | [12, 20] |
フィルター処理の方法
フィルター処理を実際に試してみます。例として、「aで始まる単語を抽出」を試します。
// 対象リスト(会話変数 items)
["apple", "banana", "apricot"]


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



Difyのフィルタリング機能で、欲しいデータだけを瞬時に抽出できますね!
並べ替え処理(昇順・降順にソートする)
「並べ替え(ソート)」とは、一覧(リスト)の中の要素を小さい順や大きい順、文字の順番などで並べなおすことです。
昇順(しょうじゅん)ソート※ASC
小さいものから大きいもの、またはアルファベット順(a, b, c…)に並べるソートです。ASCを選択することで昇順となります。
例:数値[8, 3, 15] → 昇順にすると[3, 8, 15]
降順(こうじゅん)ソート※DESC
大きいものから小さいもの、または逆アルファベット順(z, y, x…)に並べる ソートです。DESCを選択することで昇順となります。
例:数値[8, 3, 15] → 降順にすると[15, 8, 3]
ソート処理の例
Difyの「リスト処理」機能で、並べ替えたいリストを選び、昇順か降順かを指定するだけでソートができます。ファイル一覧であれば、ファイル名の順やサイズの大きさ順で並べることもできます。
入力リスト | ソート方法 | 出力リスト |
---|---|---|
[8, 3, 15] | 昇順(ASC) | [3, 8, 15] |
[8, 3, 15] | 降順(DESC) | [15, 8, 3] |
[“b”, “d”, “a”, “c”] | 昇順(ASC) | [“a”, “b”, “c”, “d”] |
[“b”, “d”, “a”, “c”] | 降順(DESC) | [“d”, “c”, “b”, “a”] |
また、「先頭○件だけ取り出す」機能を合わせて使うと、例えば降順ソートした結果の上位3件だけを取り出す、という使い方も可能です。


上位○件を取得する
Difyでは、「上位○件を取得」 する機能と組み合わせることで、ソート後の上位N件のみを取得 することもできます。
例:降順に並べ替えた上位2件を取得
入力リスト | ソート方法 | 取得件数 | 出力リスト |
---|---|---|---|
[8, 3, 15] | 降順(DESC) | 2 | [15, 8] |





昇順・降順の並べ替えもワンクリック!Difyでデータ処理のストレスをゼロにしよう!
イテレーション処理(同じ操作を繰り返す)
「イテレーション処理」とは、一覧(リスト)に含まれる要素一つひとつに対して、同じ操作を何度も繰り返すことです。プログラミングで言う「ループ」にあたりますが、Difyでは「イテレーションノード」という仕組みを使えば、コードを書かずに実現できます。
イテレーションノードの3つの基本要素
入力となるリスト(何を処理するか)
まず最初に、処理したい項目を一覧にしたものを用意します。これは顧客名簿や商品リスト、アンケート回答など、同じ形式のデータが複数集まったものです。この一覧に含まれているすべての項目が、ひとつずつ順番に処理されていきます。
繰り返したい処理(どんな操作をするか)
次に、リストの各項目に対して実行したい作業を設定します。AIによる文章生成(要約、翻訳、分析など)はもちろん、データの加工や計算、ファイルの変換や整形など、さまざまな処理が可能です。従来なら同じ作業を何度も手動で繰り返していたものが、一度の設定で自動的に実行されるようになります。
処理結果のまとめ(何が得られるか)
すべての項目の処理が終わると、結果が新しいリストとして出力されます。この結果は元のリストの順番通りに並んでおり、後続の処理でそのまま活用できる形になっています。たとえば、3人分の名前リストを入力すれば、3人分の紹介文リストが得られるといった具合です。
コードを書かなくても、ドラッグ&ドロップの操作だけで繰り返し処理が作れる点が、Difyの大きな魅力となっています。
イテレーションの使用例
「名前のリスト」に対して、それぞれ簡単な紹介文をAIに作らせる例を実際にやってみます。
3つの名前があれば、AIへの問い合わせ(プロンプト)を3回連続で行い、それぞれの紹介文を一覧にしてまとめて出力。
STEP1:会話変数を設定する(配列変数(例: names)を作成)
1. Difyの「会話変数」設定画面 を開く。
2. 新しい変数 items を作成し、データ型を array[string] に設定。
3. デフォルト値を「JSONで編集する」以下のように設定
["田中", "佐藤", "井上"]
4. 保存 する。
STEP2:イテレーションノードを追加
- Difyのワークフロー編集画面 で イテレーションノード(反復処理ノード) を追加。
- 繰り返し処理の対象リスト に names を選択。
- 各要素に適用する処理を設定:
- 例:名前ごとに紹介文を生成
- LLMノードを追加
- プロンプト設定
"{{item}}" という名前の人について、簡単な1行の紹介文を作ってください。


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



繰り返し作業の手間をゼロに!Difyのイテレーション機能で時間を節約しよう!
リスト処理のユースケース(具体的な例)
ここでは、初心者にも取り組みやすい「リストを扱うときの具体例」を紹介します。
ユースケース1: アップロードされたファイルの仕分け
例: ユーザーがまとめてアップロードしたファイルを、画像だけ別のAIに送る、文書だけ要約するといった場合。
- アップロードされたファイルは「ファイル一覧」として受け取る
- リスト処理を使って「画像だけを選ぶ(type = image)」「文書だけを選ぶ(type = document)」という風にフィルターをかける
- 画像リストは画像識別の処理、文書リストは要約の処理、と分岐して実行
- 最後に変数集約ノードで処理結果をまとめ、ユーザーに一括返却
ユースケース2: データの一括変換や集計
例: たくさんの数値から平均を出す、複数の文章から要約を作って一覧にする、など。
- イテレーションを使って、リストの要素(1件ずつ)に対して同じ処理を繰り返す
- 数値の合計を出す、文章を要約する、といった操作を自動的にまとめて行う
- 必要なら最後にまとめや集計結果を作って出力
ユースケース3: 条件によって異なる並べ替えを自動で実行
例: 「昇順」または「降順」をユーザーが選ぶと、それに応じて数値を並べ替え、結果を返す。
- 「昇順」か「降順」かで分岐(条件分岐)
- それぞれの分岐でリストを並べ替える
- 最後に集約ノードで結果をひとつにまとめ、ユーザーに返す
よくある質問
よくある質問をまとめました。
プログラミング経験がなくてもリスト処理は使えますか?
はい、使えます。Difyはコードを書かなくても、画面上の操作(ドラッグ&ドロップや項目選択)だけで直感的にリスト処理を行えるように設計されています。プログラミングの知識は不要です。
リストにはどのような種類のデータを入れられますか?
文字列(string)、数値(number)、ファイル(file)など、様々なデータ型をリストとして扱えます。例えば、array[string]
は文字列のリスト、array[file]
はファイルのリストを意味します。
繰り返し処理の途中で、特定の要素だけ処理をスキップできますか?
イテレーションノード自体にスキップ機能はありません。しかし、イテレーション処理を行う前に「フィルタリング処理」のノードを使い、処理したくない要素をあらかじめ取り除いておくことで、同じような結果を実現できます。
複数のリストを一つにまとめることはできますか?
はい、「変数代入ノード」を使えば可能です。あるリストの要素を、別のリストに「追加(append)」することで、二つのリストを一つに結合できます。
リスト処理でエラーが出た場合、どこを確認すればよいですか?
まずは、エラーが発生したノードの設定内容を見直しましょう。特に、入力に指定した変数のデータ型が正しいか(例:文字列リストなのに数値リストとして扱っていないか)、フィルタリングの条件式に誤りがないかを確認します。また、Difyの実行ログにはエラーの原因に関する詳細なメッセージが表示されるため、そちらも重要な手がかりになります。