インスピレーション

Mini Chefは、子どもたちに料理の楽しさを伝え、食への興味を育むという思いから生まれました。多くの子どもたちが料理を手伝いたがっているのに、複雑なレシピや食材の把握に苦労している現状に気づいたのがきっかけです。このアプリは、料理を子どもたちにとって身近で、楽しく、学びの多いものにすることとともに、冷蔵庫の中身を効率的に使い、食材のムダを減らし、SDGsに貢献することを目指しています。

機能

Mini Chefは、子どもたちの料理体験と在庫管理を一新するWebアプリです。主な機能は以下の通りです:

  • 冷蔵庫の在庫管理: 子どもたちが簡単に冷蔵庫の中身を確認・管理でき、消費期限もチェックできます。Geminiのマルチモーダル推論を使い、写真を撮るだけで、アプリ内に食材を追加できます。
  • レシピ推薦: 冷蔵庫の中身に合わせてレシピを提案し、食品ロスも減らせます。ベクトル検索を使用し、高速な推薦を実現しています。
  • キッズシェフモード: 子ども向けに分かりやすく説明された、ステップごとの調理手順があります。大人向けレシピをもとにGeminiを用いて子供向けレシピへ変換しています。

開発方法

使用したGoogle Cloud AI製品:

  • Google Cloud Vertex AI Studio
  • Vertex AI Platform
  • Cloud Run

その他使用したGoogle Cloud製品 :

  • Firebase Hosting
  • Firestore

フロントエンドはVite + Reactで開発し、Firebase Hostingにデプロイしています。各機能はバックエンドのAPIサーバと通信し、処理します。 バックエンドはFlaskで開発し、Cloud Runにデプロイしています。レシピや食材管理はFirestoreを使うことでサーバレスを実現しました。またレシピ登録や画像認識についてはVertex AIのGeminiモデルを使用し、低価格かつ高品質な出力を実現しました。

直面した課題

  • 子ども向けUX: 機能性を維持しながら、子どもにとって直感的なインターフェースを設計することは繊細なバランスが必要でした。どのようなレシピであれば使いやすいか、Geminiのプロンプトエンジニアリングの試行錯誤を行いました。
  • レシピ推薦: 冷蔵庫の中身を効率的に使い切るレシピを推薦する方法に悩みました。今回は各レシピの材料をembeddingし、現在の冷蔵庫の中身ベクトルとの類似度が高いものを選定することで、高速な検索を実現しました。

誇りに思う成果

  • データベースやAIを使うアプリケーションを低コストで運用するため、サーバレスでの実装を目指し、Google Cloudのマネージドサービスを効果的に使うことで実現できたこと。

学んだこと

  • Cloud Runがとにかく便利であること。FirestoreやVertex AIへの接続にあたりAPIキーの管理や権限管理を開発者が意識せず、システム側で担保してもらえるのがありがたかった。
  • フロントエンドやバックエンドのデプロイもCLIのコマンド1発で行えるのが大変楽だった。
  • Gemini-flashが低価格な割に出力の精度が高く、通常の用途であれば十分に使えること。特にテキストを決まったフォーマットに変換する用途であればflashで充分であった。Generate structured outputで厳格に出力を制御できるのも素晴らしかった。
  • 普段AWSやAzureを中心にシステム開発を行っているが、特にAIやアプリホスティングについてGoogle Cloudを使うととにかく楽に実装できることが分かった。

Mini Chefの今後

  • 音声起動型指示: ハンズフリーの調理ガイダンスを実装し、真に没入型の体験を提供。Text to SpeechやSpeech to Textを効果的に利用したい。
  • 栄養教育: バランスの取れた食事や食品群について子どもたちに教えるためのプラットフォームの拡張。今回Geminiで栄養情報を推論させようとしたがハルシネーションが多く、見送った。食材データを別に持ち、RAGを使って正しく栄養情報を推論できるよう実装したい。

Try it outの注意

  • APIサーバーがCloud Runにデプロイされているため、初回起動時に遅延が発生する可能性があります。

Built With

Share this project:

Updates