4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS×Dify】CDKでAIアプリ環境をゼロから構築して「献立自動生成アプリ」を作った話

Last updated at Posted at 2025-12-04

本記事は 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構成図は以下の通りです。

image.png

なお、構成図は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スライド目~)
詳細については割愛しますが、私と同じ環境で実施する場合は、
bootstrapdeployコマンドを実行する場合は、デプロイしたい環境に
プロファイルを設定するなどが必要です。

npm ci
cdk bootstrap aws://<アカウントID>/ap-northeast-1 --profile <profile名>
cdk deploy --all --profile <profile名>

デプロイが実行できましたら、マネコンのCloudFormationにて、DifyOnAwsStackというスタックの出力タブにて記載されているDifyUrlのURLを押下します。

image.png

アカウント作成ページ/ログインページに遷移するので、各種情報を入力します。

image.png

以下の画面が表示されたら、ログイン成功です。
以降の各種設定は手順書の36~47スライド目に記載されていますので、そちらをご参照ください。

私の環境では、Cloudeが使用できないのでAmazon Novaにしています。

image.png

4. 献立作成アプリ

今回のアプリを構築する目的を整理すると以下になります。

  • 手元の食材などの可変値の部分だけを入力できるようにしたい。
  • プロンプト※をコピーしてChatGPTに貼り付けるのが面倒なので簡略化したい。
※ 献立作成プロンプト
あなたは家庭料理の献立アドバイザーです。
ユーザーが「手元の食材」を入力するので、
献立(主食、メインおかず、サブおかず(汁物もしくは副菜))を提案してください。
なお、目的と手元の食材、前提条件は以下の通りです。

## 目的
 - 時短/作り置き中心

## 手元の食材
手元にある食材を入力する。

## 前提条件
 - 5日間の夕食を考えてください。
 - 大人2人+子供1人の家庭です
 - 子供の年齢は2歳です。
 - 子どもも一緒に食べられる献立を優先してください。
 - できるだけ作り置きにする
 - 野菜を多く使いたい
 - 残りものは次の日のお弁当にする。
 - 金曜日の夜の残りは次の日のお弁当にする必要は無い。
 - 食材は全て使い切る必要はないし、使わない食材があってもいい。
 - できればボリューム感重視(汁物・野菜多め)
 - 和風、洋風、中華風が混在すること。ただし2日連続にならないこと。 
 - 必要に応じて「大人用にあとから味を足す」案も書いてください。

## 出力形式
表形式でお願いします。 項目:曜日/主菜/副菜/汁物またはサブ/所要時間/メモ(調理ポイントやアレンジ)

##  補足
 - 上記食材をできるだけ優先的に使ってください。
 - 不足するものは提案しないでください。

Difyによるアプリケーション作成

先ほど構築したDifyの画面に戻り、スタジオの「最初から作成」を選択します。

image.png

ワークフローを選択し、アプリのアイコンと名前を設定して「作成する」を押下します。
image.png

現時点では何もありませんが、以下の画面に遷移します。
image.png

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

今回は、「手元の食材」を入力パラメータとして設定するため、入力フィールドを設定します。
そのため、開始を選択して、入力フィールドの「+」を選択し、以下を追加します。
そうすることで、入力フィールドが設けられます。

image.png

LLMを選択して、SYSTEM欄に先ほどのプロンプトを入力します。
その際、「手元の食材」を入力値にするため、/を押下すると、先ほど設定した、syokuzaiが選択できます。

また、USER欄に「手元の食材:」と入力して、同様に/を押下して先ほど設定した、syokuzaiを選択します。

image.png

【補足】

  • SYSTEM
    例えば、よくプロンプトに登場する「あなたは○○の専門家です」といった、システム側で設定しておくプロンプトを入力します。
  • USER
    ユーザーの質問例として入力する内容です。今回は「手元の食材」を入力するように設定しました。

終了時に結果を出力させるため、LLMを選択して、出力変数欄を有効化します。
そして、終了を選択して、出力変数にtextを入力しておきます。

image.png

image.png

5. 実際に動かしてみた

では、実際に先ほど作成したアプリケーションを動かしてみましょう。
実行する際は、以下画面の「実行」を押下するか、Alt+Rを押下します。


入力例

手元の食材として、例えば以下のように入力し、「実行開始」を押下します。

image.png


出力例

5日間の献立が出力されました!
ただ、コーンスープがダブってたり、コーンやトマト缶、牛乳など手元の食材に書いてない
具材もちらほらあるので、プロンプトの調整などが必要です。。。

image.png

【補足】
「公開する」>「更新を公開」>「アプリを実行」を選択することで、実際にアプリケーションが公開されるので、URLを共有して使用することができます。
image.png

6. まとめ

今回はDifyをAWS上にセルフホストして「献立自動生成アプリ」を作ってみました。

Difyを触ってみて特に思ったのが、「変数入力ができることで、毎回コピペする作業から解放される」ということです。

また、案件で扱う予定の技術を 個人開発で先に試せた という意味でも、
「学習」と「実生活の改善」を同時に進められたのは大きな収穫でした。

今後は以下のような改善も考えていますので、また実際にやってみた際には投稿したいと思います。

  • 出力結果をChatworkなどに自動連携して家族で共有する
  • 過去の献立を蓄積して「被らない提案」にする(簡易RAG化)
  • 使用していない具材が登場しないようにプロンプトを調整する
  • 買い物リスト生成への拡張

この記事がどなたかの参考になれば幸いです。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?