「前回の記事で、リスト処理ブロックの概要はお分かり頂いたと思います。
今回は、リスト処理ブロックの真骨頂である**「並列フィルタリング」**を使って、爆速でファイルを仕分けるアプリを一緒に作っていきましょう!
今回のゴール
バラバラにアップロードされた複数のファイルを、拡張子(.pdf や .png)ごとに自動で仕分け、整理された状態で出力するアプリを構築します。
STEP 1:開始ブロックで「大きな箱」を用意する
まずは、仕分けたいファイルをまとめて受け取る入り口を作ります。
- 開始ブロックを開きます。
- 入力フィールドを追加し、型を
Array[File](ファイルのリスト)に設定します。 - 変数名は
filesとしておきましょう。

STEP 2:魔法の網「リスト処理」を設置する
ここが今回のメインディッシュです。リスト処理ブロックを「1つずつの拡張子専用の網」として設定します。
- 開始ブロックの次に 「リスト処理」 ブロックを追加します。
- 入力変数 に
{{#start.files#}}を指定します。 - フィルター条件 を ON に切り替えます。
- 変数の選択: 左側の入力欄で
{{#リスト処理 1.item.name#}}を選びます。- ※
itemの横にある>をクリックするとnameが出てきます。
- ※
- 演算子: 「で終わる (Ends with)」を選択します。
- 値: 右側の空白に
.pdfと入力して確定させます。
これで「PDFだけを捕まえる網」が完成です!

STEP 3:網を並列に増やして仕分け口を作る
PDF以外も仕分けたいですよね? Difyなら「横に並べる」だけでOKです。
- キャンバス上で、先ほどの「リスト処理 1」の下に、同じ設定の 「リスト処理 2」 と 「リスト処理 3」 を配置します。
- それぞれ開始ブロックから線を繋ぎ、フィルターの「値」だけを書き換えます。
- リスト処理 2:
.png(画像用) - リスト処理 3:
.docx(Word用)
- リスト処理 2:
このように並列(横並び)にすることで、すべてのファイルを同時にチェックする爆速フローが出来上がります。
STEP 4:出力(End)ブロックで集約する
最後に、仕分けられた結果をユーザーに返します。
- 終了(End)ブロックを配置し、すべてのリスト処理ブロックから線を繋ぎます。
- 出力変数を作成し、各リスト処理の結果を紐付けます。
- 例:
pdf_files→{{#リスト処理 1.result#}} - 例:
image_files→{{#リスト処理 2.result#}}
- 例:

実践の総仕上げ:テスト実行!
右上の「テスト実行」から、PDFや画像を混ぜてアップロードしてみましょう。
実行結果(Result)画面で、ファイルが種類ごとに綺麗に分かれて表示されたら大成功です!
💡 トラブル解決!「変数が出ない」時のチェックリスト
もし設定中に行き詰まったら、ここを確認してください。
| 困ったこと | チェックポイント |
| 右側の入力欄が出ない | 左側の変数で name(テキスト型)を選んでいますか? |
| itemが見当たらない | 反復ブロックと違い、リスト処理ブロックではフィルター設定の中に item が隠れています。 |
| 何も出力されない | フィルターの値に .(ドット)を忘れていませんか? .pdf と正確に入れましょう。 |
まとめ:イテレーションとの使い分け
- イテレーション(反復): ファイルの中身を1つずつ「加工(翻訳・要約)」したい時。
- リスト処理: 大量のファイルを「一瞬で整理・分類」したい時。
チャットGPTはすぐに使用制限が来てしい、ジェミニはDifyのアプリ作成についてはまだまだという感じで結構騙されます。時間がかなりかかって上手く作れないので今回はめっちゃシンプルにしました。きっともっとちゃんとした良いアプリが作成できると思いますが、まずは手始めにってことで。次回のお題は考え中です。是非お楽しみに!


コメント