Edibuddy - 食材との感情的なつながりを通じて、楽しく食品ロスを削減しよう -
Edibuddy - 食材との感情的なつながりを通じて、楽しく食品ロスを削減しよう -
🎬 デモ動画
1. 背景・課題
🛒 買い物時の困った経験
「あれ、冷蔵庫に何があったっけ?」
こんな経験はないでしょうか?買い物中によくあるこの疑問。冷蔵庫を開けて確認したつもりでも、実際にスーパーに来ると記憶が曖昧になってしまいます。
よくあるシチュエーション:
- 冷蔵庫に牛乳があるかどうか分からず、念のため買って帰ったら既に2本あった
- 野菜室の奥に隠れていたキャベツを忘れていて、新しいキャベツを買ってしまった
- 期限切れの食材を発見して、結局捨てることになってしまった
📊 個人のトラブルが社会問題に
このような「ちょっとしたトラブル」が積み重なり、深刻な社会問題につなっています:
日本における食品ロスの現状:
根本的な原因:
- 冷蔵庫の中身の把握不足: 何があるか分からないから重複購入
- 賞味期限の管理困難: 期限切れに気づかず廃棄
- レシピの思い浮かばなさ: 期限が近い食材の使い道が分からない
💡 解決へのアプローチ
これらの課題を解決するため、私たちはAI技術とゲーミフィケーションを活用した革新的な冷蔵庫管理アプリを開発しました。単なる管理ツールではなく、食材との「感情的なつながり」を創出することで、自然な形で食品ロス削減行動を促進します。
2. Edibuddyとは
Edibuddyは、食材をキャラクター化し、賞味期限管理を楽しい体験に変える革新的なモバイルアプリケーションです。バーコードスキャンで商品情報を自動取得し、AIによる画像生成で,賞味期限に応じて食材の感情を表現します。また,AIが冷蔵庫の中身から献立を考案してくれることで,賞味期限の近い
食材から効率的に消費していくことができ,食品ロスを減らすことができます.
🎯 プロジェクトのビジョン
「食材との感情的なつながりを通じて、楽しく食品ロスを削減する」
従来の機能的なアプローチとは異なり、私たちは食材を「生きているキャラクター」として表現することで、ユーザーが食材に対して感情的な愛着を持てるようにしました。これにより、食材を無駄にすることへの心理的な抵抗感を生み出し、自然な形で食品ロス削減行動を促進します。
🌟 独自性とイノベーション
このアプリの最大の特徴は、AIによるキャラクター生成と感情表現システム、そして智能的な献立提案です:
- 動的キャラクター生成: Nano Bananaを使用して、各食材に固有のキャラクターを自動生成
- 感情表現の進化: 賞味期限に応じてキャラクターの表情や見た目が変化
- ストーリー性のある体験: 単なる管理ツールではなく、食材との「物語」を創出
- AI献立提案システム: 冷蔵庫の中身からADK(Agent Development Kit)エージェントが最適な献立を提案し、計画的な買い物と食品ロス削減を実現
3. 機能
3.1 iOSアプリの実際の機能構成
Edibuddyは、Flutterで開発されたiOSアプリケーションで、以下の5つのメイン画面で構成されています:
📱 実際の画面構成
1. ホーム画面 (HomeScreen)
- Layered3DFridgeWidgetによる多層構造の冷蔵庫表示
- 扉の開閉アニメーション(大扉・左右分割・引き出し)
- 各セクション(冷蔵室・野菜室・冷凍室)へのタップアクセス
- 食材の配置と視覚的な管理
2. 献立画面 (MealPlanScreen)
- ADK APIクライアントによる献立提案
- 5つの専門エージェント協調システム
- 代替メニューの表示切り替え機能
- 買い物リストの生成
3. スキャン画面 (ScannerScreen)
- Mobile Scannerによるバーコード認識
- Open Food Facts APIからの商品情報取得
- 手動入力フォーム(商品名・メーカー・カテゴリ・賞味期限)
- AI予測による賞味期限設定
4. 履歴画面 (HistoryScreen)
- 過去の食材登録履歴表示
- 登録日時順での並び替え
- プルリフレッシュ機能
5. 設定画面 (SettingsScreen)
- 通知設定
- カテゴリ管理
- データクリア機能
3.2 実際の技術実装
🔧 コア技術スタック
1. バーコードスキャン機能
- Mobile Scanner (v7.0.1) によるiOSカメラ統合
- JANCODE LOOKUP API
- FirestoreServiceによる商品情報キャッシュ
- AIによるカテゴリ・賞味期限予測
- 手動での編集機能
2. 3D冷蔵庫UI
- 複数のアニメーションコントローラー
- 扉の開閉状態管理
- セクション別の食材表示
3. AI画像生成
- Nano Banana API(Nano Bananaサーバーに接続)
- ADKApiClient.forSimpleImageApi()を使用
- 5段階感情表現(veryFresh, fresh, warning, urgent, expired)
- 並列画像生成による効率化
4. 献立提案システム
- ADK APIクライアント(ADKサーバーに接続)
- 5つの専門エージェント
- 冷蔵庫内の食材分析
- 献立提案
- 献立の栄養バランス考慮
- 調理最適化
- メニュー画像生成
- 追加・代替メニュー生成機能
3.3 実際のシステムアーキテクチャ
実装ベースの技術構成
「Flutter クロスプラットフォーム・Firebase・GCP Cloud Run・ADK Backend統合」モデル
実際のアーキテクチャの特徴
- Flutter iOS App: 5画面構成(ホーム・献立・スキャン・履歴・設定)
- Firebase統合: Firestore・Storage・Authによるデータ管理・共有
- Nano Banana: Nano Bananaサーバーで食材キャラクター画像生成
- ADK Backend: ADKサーバーで5エージェント協調システム
- 商品検索: Mobile Scannerによるバーコード認識とJANCODE LOOKUP APIによる商品情報検索
4 AIエージェントシステム
4.1 🤖 献立提案マルチエージェントシステム(ADK)
5つの専門エージェントによる献立提案
ADKシステムは献立提案機能に特化して設計されており、冷蔵庫の食材から最適な料理メニューを提案するために5つの専門エージェントが協調して動作します。
エージェントの役割分担
- 食材分析エージェント: 冷蔵庫の食材データから賞味期限の優先度を分析し、使用すべき食材の順序を決定
- 料理提案エージェント: 分析結果を基に具体的な料理メニューと調理方法を提案
- 栄養バランスエージェント: 提案する献立の栄養価を計算し、バランスの取れた食事を設計
- 調理最適化エージェント: 複数の料理を効率的に作るための手順と時間配分を最適化
- 画像生成エージェント: 提案された献立の各メニューに対し,料理のイメージ画像を生成
各エージェントは段階的に処理を行い、前のエージェントの結果を受けて次の分析を実行することで、単体のAIでは実現できない高精度な献立提案を実現しています。
4.2 🎨 Nano Banana 画像生成システム
食材キャラクター専用生成システム
Nano Bananaサーバーに接続し、商品追加時に即座にキャラクター画像を生成します。
5段階感情表現による視覚化
食材の賞味期限に応じて5つの感情状態(veryFresh, fresh, warning, urgent, expired)を定義し、それぞれに対応したキャラクター画像を並列生成します。賞味期限が近づくにつれて、笑顔から心配顔、そして最終的にはゾンビ風の見た目へと変化することで、ユーザーに視覚的に期限の緊急度を伝えます。
並列画像生成による効率化
商品が登録されると、5つの感情状態すべての画像が並列に生成され、賞味期限の変化に応じて即座に表示を切り替えることができます。これにより、日々の期限チェック時にリアルタイムな視覚フィードバックを提供できます。
基本生成指示:
- API:
https://generativelanguage.googleapis.com/v1beta - モデル:
gemini-2.5-flash-image-preview - スタイル: kawaii(可愛い)キャラクター
- サイズ: 512x512ピクセル
- 背景: 透明(PNG形式)
- 対象: 食材を擬人化したキャラクター
AI生成の特徴:
- 5つの感情状態(veryFresh, fresh, warning, urgent, expired)を順次生成
- 各食材に固有のキャラクターデザイン
- 賞味期限の変化に応じた視覚的フィードバック
- Firebase Storageへの自動アップロード
- エラー時のフォールバック画像システム
4. 使用技術
4.1 実際のフロントエンド技術
Flutter 実装
| 技術 | バージョン | 実際の用途 |
|---|---|---|
| Flutter | 3.35.2 | クロスプラットフォーム開発 |
| Dart | 3.5.0 | プログラミング言語 |
| Riverpod | 2.6.1 | 状態管理(appStateProvider等) |
| Material Design 3 | - | MaterialApp使用 |
4.2 バックエンド・インフラ技術
Firebase Suite
| サービス | バージョン | 実際の用途 |
|---|---|---|
| Firebase Core | v3.15.2 | 基本初期化 |
| Firebase Auth | v5.3.3 | ユーザー認証 |
| Cloud Firestore | v5.5.1 | 商品・献立データ保存 |
| Firebase Storage | v12.3.7 | 画像保存 |
ADK Backend (Cloud Run)
実際の実装構成
| コンポーネント | バージョン | 実際の用途 |
|---|---|---|
| FastAPI | Python 3.11 | REST API フレームワーク |
| Google ADK | v0.2.0+ | マルチエージェント協調システム |
| Uvicorn | ASGI Server | ADKサーバーで起動 |
| Pydantic | v2.0+ | データバリデーション |
| Structlog | v23.2.0 | 構造化ログ出力 |
実際の5エージェント構成:
- ingredient_analysis_agent.py - 賞味期限・優先度分析
- recipe_suggestion_agent.py - 具体的メニュー提案
- nutrition_balance_agent.py - 栄養素計算・バランス評価
- cooking_optimization_agent.py - 時間・手順最適化
- image_generation_agent.py - メニュー画像生成
Nano Banana API
| サービス | 実際の設定 | 用途 |
|---|---|---|
| Nano Banana API | Nano Bananaサーバー | 食材キャラクター画像生成 |
| ADKApiClient | forSimpleImageApi() | 画像生成API呼び出し |
| 生成スタイル | kawaii | 可愛いキャラクター生成 |
| 画像サイズ | 512x512 | 統一されたサイズ |
4.5 開発・運用技術
開発環境
フロントエンド:
- Flutter SDK: 3.35.2
- Dart SDK: 3.5.0
- State Management: Riverpod 2.6.1
バックエンド:
- Python: 3.11
- Framework: FastAPI
- Container: Docker
- Package Manager: pip
共通:
- バージョン管理: Git / GitHub
- CI/CD: GitHub Actions
- テスト: Flutter Test / pytest
デプロイメント戦略
開発・本番環境構成
- iOS Flutter App: 開発中(App Store配信予定)
- ADK Backend: ADKサーバー
- 各種Gemini API: Geminiによる各種AI呼び出し
- Firebase: gcp-f06-barcode プロジェクト
8. 今後の展望
8.1 機能拡張計画
Phase 2: 高度なAI機能
- 栄養分析: 摂取栄養素の自動計算・提案
- 買い物最適化: AIによる購入計画提案
- 食品ロス予測: 機械学習による廃棄リスク予測
Phase 3: エコシステム拡張
- レシート自動読み取り: OCRによる一括商品登録
- スマート家電連携: IoT冷蔵庫との統合
- 地域コミュニティ: 食材シェアリング機能
8.2 ビジネス展開
マネタイゼーション戦略
- プレミアム機能: 高度なAI分析・無制限キャラクター生成
- パートナーシップ: スーパーマーケット・食品メーカーとの連携
- データインサイト: 匿名化された食品消費データの提供
9. おわりに: 創造性を育む食品ロス削減
私たちは、技術と感情の融合を通じて、単なる管理ツールを超えた体験を創出しました。食材との感情的なつながりが、自然な行動変化を促し、持続可能な食品ロス削減を実現します。
Edibuddyは、AI技術の力で私たちの日常に小さな魔法をもたらし、より良い未来への一歩を踏み出すお手伝いをします。
Discussion