本記事は BeeX Advent Calendar 2025 の5日目の記事です。
1. はじめに
なぜ献立アプリを作ることになったか
我が家では、妻と週替わりで料理当番を交代するルールがあります。料理自体は嫌いではないのですが、毎週の献立作成だけはどうしても面倒でした。
実は過去に ChatGPTに投げる用のプロンプトは自作 していましたが、
「毎回 ChatGPT 開いて、プロンプトをコピーして部分的に条件を変えるのが面倒くさい」 という課題をどうにかしたくて、Difyを使ってプロンプトをアプリ化してみることにしました。
ちょうど次回案件でも Dify(ディフィー) をAWS環境で構築しそうだったので、
案件で使う前に、自分の課題で実験してみたらちょうどいいという流れで、AWSにDify環境を構築し、献立自動生成アプリを実装しました。
アプリだけ作ってみたい方はAWSの環境構築についてはすっ飛ばしていただいて結構です。
Difyの概要
まず、Difyについて事前情報がなかったのでUdemyで学習しました。
DifyについてはQiitaをはじめ、たくさんの記事が世の中に公開されていますので、本記事ではざっくり箇条書きでの説明にとどめます。
- ノーコード/ローコード開発環境
- プログラミング知識がなくても、ドラッグ&ドロップの操作だけで高度なAIアプリケーションを構築可能
- 視覚的なワークフローエディタにより、複雑なAIロジックも直感的に設計可能
- 強力なRAG(Retrieval-Augmented Generation)エンジン
- 独自のドキュメントや知識ベースをAIに連携させ、特定の情報に基づいた回答を生成可能
- PDFやWord、テキストなど多様な形式のドキュメントをインポートし、AIの知識源として活用可能
- マルチモデル対応
- OpenAI(GPT-4など)、Anthropic(Claude)、DeepSeek、Llama、Mistralなど、多様なAIモデルに対応
- 用途や予算に応じて最適なモデルを選択可能
- 柔軟なデプロイオプション
- クラウドサービス(SaaS)として利用するか、自社サーバーやAWSなどにセルフホスティングするか選択可能
- セキュリティやコンプライアンスの要件に応じた柔軟な導入可能
- オープンソース
- ソースコードが公開されており、必要に応じてカスタマイズや拡張可能
- 活発なコミュニティによる継続的な改善と拡張
- エンタープライズ対応
- チーム協業機能、詳細なアクセス制御、使用状況の分析など、ビジネス利用に必要な機能有
2. AWS構成図
今回構築するAWS構成図は以下の通りです。
なお、構成図はAWS公式がGitHubに挙げているREADMEにも記載されていますので、詳細については以下を参照ください。
READMEにも記載されていますが、本環境を仮にバージニア北部リージョンで構築すると47.9USD(約7,500円(155円/USD))程度かかります。
3. DifyをAWSに構築する
前提条件
- WindowsOSであること
- VSCodeを使用していること
- Git/WSL/Docker がインストールされていること
- CDKが実行可能なこと
本記事では上記を前提に話を進めます。
もし、GitやWSL,CDKの構築がまだでしたら、以下記事を参考にしてみてください。
環境構築(CDKデプロイ)
AWS公式の方が出されている以下の手順に従って実施します。
記事内では、VSCodeサーバをデプロイする方法とGitHubから取得してくる方法の2つが紹介されていますが、
私は後者の方法でローカルのVSCodeで実施しています。(22スライド目~)
詳細については割愛しますが、私と同じ環境で実施する場合は、
bootstrapやdeployコマンドを実行する場合は、デプロイしたい環境に
プロファイルを設定するなどが必要です。
npm ci
cdk bootstrap aws://<アカウントID>/ap-northeast-1 --profile <profile名>
cdk deploy --all --profile <profile名>
デプロイが実行できましたら、マネコンのCloudFormationにて、DifyOnAwsStackというスタックの出力タブにて記載されているDifyUrlのURLを押下します。
アカウント作成ページ/ログインページに遷移するので、各種情報を入力します。
以下の画面が表示されたら、ログイン成功です。
以降の各種設定は手順書の36~47スライド目に記載されていますので、そちらをご参照ください。
私の環境では、Cloudeが使用できないのでAmazon Novaにしています。
4. 献立作成アプリ
今回のアプリを構築する目的を整理すると以下になります。
- 手元の食材などの可変値の部分だけを入力できるようにしたい。
- プロンプト※をコピーしてChatGPTに貼り付けるのが面倒なので簡略化したい。
※ 献立作成プロンプト
あなたは家庭料理の献立アドバイザーです。
ユーザーが「手元の食材」を入力するので、
献立(主食、メインおかず、サブおかず(汁物もしくは副菜))を提案してください。
なお、目的と手元の食材、前提条件は以下の通りです。
## 目的
- 時短/作り置き中心
## 手元の食材
手元にある食材を入力する。
## 前提条件
- 5日間の夕食を考えてください。
- 大人2人+子供1人の家庭です
- 子供の年齢は2歳です。
- 子どもも一緒に食べられる献立を優先してください。
- できるだけ作り置きにする
- 野菜を多く使いたい
- 残りものは次の日のお弁当にする。
- 金曜日の夜の残りは次の日のお弁当にする必要は無い。
- 食材は全て使い切る必要はないし、使わない食材があってもいい。
- できればボリューム感重視(汁物・野菜多め)
- 和風、洋風、中華風が混在すること。ただし2日連続にならないこと。
- 必要に応じて「大人用にあとから味を足す」案も書いてください。
## 出力形式
表形式でお願いします。 項目:曜日/主菜/副菜/汁物またはサブ/所要時間/メモ(調理ポイントやアレンジ)
## 補足
- 上記食材をできるだけ優先的に使ってください。
- 不足するものは提案しないでください。
Difyによるアプリケーション作成
先ほど構築したDifyの画面に戻り、スタジオの「最初から作成」を選択します。
ワークフローを選択し、アプリのアイコンと名前を設定して「作成する」を押下します。

「開始」のオブジェクト右端にある「+」を押下して、「LLM」を追加します。
同様に「LLM」のオブジェクト右端にある「+」を押下して、「終了」を追加します。

今回は、「手元の食材」を入力パラメータとして設定するため、入力フィールドを設定します。
そのため、開始を選択して、入力フィールドの「+」を選択し、以下を追加します。
そうすることで、入力フィールドが設けられます。
LLMを選択して、SYSTEM欄に先ほどのプロンプトを入力します。
その際、「手元の食材」を入力値にするため、/を押下すると、先ほど設定した、syokuzaiが選択できます。
また、USER欄に「手元の食材:」と入力して、同様に/を押下して先ほど設定した、syokuzaiを選択します。
【補足】
- SYSTEM
例えば、よくプロンプトに登場する「あなたは○○の専門家です」といった、システム側で設定しておくプロンプトを入力します。 - USER
ユーザーの質問例として入力する内容です。今回は「手元の食材」を入力するように設定しました。
終了時に結果を出力させるため、LLMを選択して、出力変数欄を有効化します。
そして、終了を選択して、出力変数にtextを入力しておきます。
5. 実際に動かしてみた
では、実際に先ほど作成したアプリケーションを動かしてみましょう。
実行する際は、以下画面の「実行」を押下するか、Alt+Rを押下します。
入力例
手元の食材として、例えば以下のように入力し、「実行開始」を押下します。
出力例
5日間の献立が出力されました!
ただ、コーンスープがダブってたり、コーンやトマト缶、牛乳など手元の食材に書いてない
具材もちらほらあるので、プロンプトの調整などが必要です。。。
【補足】
「公開する」>「更新を公開」>「アプリを実行」を選択することで、実際にアプリケーションが公開されるので、URLを共有して使用することができます。

6. まとめ
今回はDifyをAWS上にセルフホストして「献立自動生成アプリ」を作ってみました。
Difyを触ってみて特に思ったのが、「変数入力ができることで、毎回コピペする作業から解放される」ということです。
また、案件で扱う予定の技術を 個人開発で先に試せた という意味でも、
「学習」と「実生活の改善」を同時に進められたのは大きな収穫でした。
今後は以下のような改善も考えていますので、また実際にやってみた際には投稿したいと思います。
- 出力結果をChatworkなどに自動連携して家族で共有する
- 過去の献立を蓄積して「被らない提案」にする(簡易RAG化)
- 使用していない具材が登場しないようにプロンプトを調整する
- 買い物リスト生成への拡張
この記事がどなたかの参考になれば幸いです。











