こんにちは、横浜で清掃業を営む49歳、ヤスです。
前回はAI同士を戦わせる!自動ブログ生成ワークフローアプリを作りましたね
今回は、私がDifyとGASを学習する中で実際に作成した「海外サイトの靴サイズ一瞬で変換&買い物サポートAI」の作り方を大公開します。
Difyを触り始めると、「1つの質問に1つ答える」アプリは簡単に作れますよね。でも、「10個の長文レビューを全部一気に翻訳して要約してほしい!」と思った途端、どう組めばいいか分からなくなりませんか?
この記事では、そんな時に必須となる「イテレーション(反復)」機能の使い方と、私が実際に見事にハマった「初心者が絶対につまずくエラーの落とし穴」を、中学生でもわかるレベルで解説します。40代からでも遅くない。一緒に壁をぶち破っていきましょう!
【結論】 複数の長文データをAIに一気に自動処理させたいなら、「コード実行」で文章をリスト(配列)に切り分け、「イテレーション(反復)」ブロックのベルトコンベアに乗せて処理するコンボが最強です。
ただし、作業員(LLM)を配置する場所や、変数名(箱の名前)を一つでも間違えると途端にシステムは動きません。現場の清掃で「洗剤のラベルと中身が合っているか」を必ず確認するように、設定画面とコードの変数名の一致を指差し確認することが成功のカギです。
【手順(コード解説あり)】
アプリの構成は、「材料を入れる」→「変換・加工する(2ルート並行)」→「結果を出す」というシンプルな流れです。
ステップ1:開始(Start)ブロックで受付窓口を作る ユーザーがデータを入力する箱を用意します。
- 変数1:
shoe_size(テキスト型)… 例:「EUR43」 - 変数2:
foreign_reviews(段落型)… 海外の長文レビューを複数コピペして入れる大きな箱です。(※ファイルリストではなく「段落」を選ぶのがポイント!)
ステップ2:ルートA(靴サイズ変換) 開始ブロックからLLMを繋ぎ、「入力された海外の靴サイズ({{shoe_size}})を、日本のcmサイズに変換してください」とプロンプトで指示します。これで約27cmといった結果が出ます。

ステップ3:ルートB(コード実行でリスト化) ここが最初の難所です!開始ブロックに入力された長文のレビューを、1行ずつに切り分けて「リスト(配列)」にするためのコードを挟みます。ここでGASの知識が活きます!
JavaScriptを選択し、以下のコードをコピペしてください。
JavaScript
// Difyのコードブロックで最初に呼び出されるメインの関数です
// 【重要】ここの「foreign_reviews」と、左パネルの入力変数名を完全に同じにします!
function main({foreign_reviews}) {
// もし入力が空っぽだった場合は、エラーにならないように空のリストを返して終了します
if (!foreign_reviews) {
// 空のリスト(配列)を返します
return { resultArray: [] };
}
// 入力されたレビューの長文を、改行(\n)のタイミングで切り分けてリスト(配列)にします
const reviewList = foreign_reviews.split('\n');
// 切り分けたリストの中から、空っぽの行を取り除くための処理(フィルター)をかけます
const cleanedList = reviewList.filter(function(line) {
// 文字の前後にある見えないスペースを清掃して、文字が残っている行だけを残します
return line.trim() !== '';
});
// 綺麗に整理されたリスト(配列)を、次のブロックに渡すための結果として返します
// 【重要】ここの「resultArray」と、左パネルの出力変数名を完全に同じにします!
return {
resultArray: cleanedList
};
}

⚠️初心者の罠①:変数名の不一致 左側の設定パネルにある「入力変数(デフォルトでarg1)」の名前を、必ずコード内の foreign_reviews に書き換えてください。出力変数も resultArray に変更必須です。ここがズレていると絶対に動きません!
ステップ4:ルートB(イテレーションで連続処理) 切り分けたリストを、ベルトコンベア(イテレーションブロック)に流し込みます。入力配列に resultArray を設定します。

⚠️初心者の罠②:「リスト処理」と間違えない 「リストのデータを処理するからリスト処理ブロックだ!」と思いがちですが、AIに繰り返し作業をさせるのは「イテレーション(反復)」ブロックです。私はここで盛大に勘違いしました(笑)。
⚠️初心者の罠③:LLMの配置場所 イテレーションブロックの**「大きな枠の中」**にある「+ 次ノード選択」を押してLLMを追加してください。外に置いてしまうと、コンベアの荷物(item)をAIが受け取れません。 プロンプトには {{#iteration.item#}} を挿入し、「この海外レビューを日本語に翻訳して要約して」と指示します。
ステップ5:終了(End)ブロックで完成! 最後に「終了」ブロックを追加し、ルートAの「サイズ変換結果」と、ルートBの「イテレーション結果(翻訳済みリスト)」を繋いで出力変数に設定すれば、アプリの完成です!

【まとめ】 お疲れ様でした!このアプリを作れるようになれば、Difyの実力は初心者から中級者へと大きくステップアップします。
思い通りに動かず「itemが出ない!」「エラーになる!」と頭を抱えることもありますが、その一つ一つの「やらかし」を解決していく過程こそが、確実なスキルアップに繋がっています。
アプリを作ってテスト実行する時に海外の靴の通販サイトを見たんですが
今はこのようなアプリを使わなくてもサイト内に
同じような機能があるんですね。まあ練習と思ってよしとします。
一人親方として日々の現場仕事は体力的にもキツイですが、家に帰ってからのAI学習は、未来の自分を少しだけ楽にしてくれる最高の投資です。49歳、まだまだ新しい知識を吸収して、ガンガン実践していきましょう!
X(旧Twitter)のアカウント(@yyyyss)でも、日々の学習の泥臭い実践記録や、収益化に向けたリアルな試行錯誤を発信しています。同世代で「これからAIを始めてみようかな」と思っている方、ぜひ一緒に頑張りましょう。フォローやコメント、お待ちしています!私のxはこちら


コメント