冷蔵庫を撮るだけで、今夜の献立が30秒で決まる。──Snapmealをつくった話
ホットクックを買ったのに、なかなか使いこなせなかった。そこから自分用のAIキッチンを作り、毎日使ううちに、ちゃんとしたWebアプリとして作り直したくなりました。
18時の「今夜、何にしよう」問題
仕事を終えて帰宅し、冷蔵庫を開けます。
ニンジン、豆腐、昨日の残りの鶏肉、半端に残ったキャベツ。食材は確かにある。でも、そこから先が出てきません。「今夜、何を作ればいい?」
この「18時の手詰まり感」を、毎日のように繰り返していました。
ホットクックを買ったのに、使いこなせなかった
数年前、思い切ってホットクックを購入しました。「これがあれば料理が楽になる」と期待していました。
でも、現実は少し違いました。
付属のレシピ本を開いても、そこに書かれた食材が冷蔵庫にあるとは限りません。「豚バラ200g」と書いてあっても、あるのは鶏もも肉だけ。「みりん大さじ2」とあっても、みりんを切らしていたときに何で代替すればいいかがわかりませんでした。
酒で近づけられるのか、砂糖を使えばいいのか、調味料の代替知識が自分には不足していました。
しかもレシピ本に載っている料理の数には限りがあります。同じ食材でも作れる料理はいくつもあるはずなのに、本の中には数種類しかない。ホットクックは「自動調理してくれる優秀な道具」なのに、「何を作るか」という一番肝心なところで詰まる、という状況が続いていました。
そこで思いついたのが、ChatGPTのカスタムGPTでした。
「ホットクック de AIキッチン」をつくって、毎日使うようになった
「冷蔵庫にある食材を伝えたら、ホットクックで作れる料理を提案してくれる」──そういうカスタムGPTを自分用に作りました。名前は「AIキッチン」。
使い始めてみると、思った以上に便利でした。みりんがなければ「酒と砂糖で代替できます」と教えてくれる。手持ちの食材から、ホットクックに合った料理を提案してくれる。それから毎日のように使うようになりました。
ただ、使い続けているうちに不満も出てきました。
気に入った献立をお気に入りに登録する機能がないので、「あの料理また作りたい」と思っても記録が残りません。「家族がこれを好きだった」「苦手な食材はこれ」というフィードバックを次回に活かす仕組みもないので、毎回同じような条件をチャット欄に打ち込み直す必要がありました。
画像を送って食材を認識させる機能も試しましたが、認識が外れていた場合の修正が面倒でした。「ニンジンではなくダイコンです」と直すには、チャット欄に文字で打ち込んで伝えるしかありません。食材を削除したい場合も同様で、直感的に操作できる画面がなく、使い勝手の悪さを感じていました。
さらに、ホットクック専用だったので、フライパンや電子レンジで作りたい日には使えません。疲れている日は自動調理鍋より「レンジで5分」の方がありがたいこともあります。
こうした「あったらいいのに」が積み重なって、「ちゃんとしたWebアプリとして作り直そう」という気持ちになりました。
つくってみたら、想定より大変だった
カスタムGPTからWebアプリへ。言葉にすれば簡単ですが、実際にはいくつもの壁がありました。
食材認識の精度と編集画面
「冷蔵庫の写真を送ったら食材を認識してくれる」──これがメインの機能です。ところが最初の実装では、複数枚の写真をまとめてAIに送ると認識精度がかなり落ちることがわかりました。
試行錯誤の結果、「1枚ずつ並列で処理して、結果をあとでマージする」方針に切り替えました。写真をまとめて送るのではなく、それぞれを別々に認識させてから統合する。この方針に変えてから精度が大きく改善しました。
また、認識が外れたときにすぐ修正できる「食材確認・編集画面」も実装しました。一覧から不要なものをタップで削除したり、認識されなかった食材を追加したりできます。AIキッチンで感じていた「チャットで打ち直す手間」を解消したかった部分です。
さらに、iPhoneで撮った写真はHEICという独自形式になっている場合があり、最初はうまく処理できませんでした。日本のユーザーの多くがiPhoneを使っていることを考えると、対応は必須でした。
Androidのカメラ問題
iPhoneは比較的スムーズに対応できました。Androidは苦労しました。
撮影した写真がアプリに反映されない、そもそもカメラが起動しない端末がある、といった問題が機種ごとに出てきました。Androidは機種による差が大きく、同じコードでも動かないケースが続きました。一つ直すと次の問題が出るという状況が続き、時間を取られました。
認証まわり
Googleアカウントでログインしたあとにアプリがセッションを認識してくれない問題もありました。ログインできているはずなのに、画面はゲスト状態のまま。原因を調べると、Google OAuthのリダイレクト後に発火する認証イベントの扱いが正しくないことがわかりました。ユーザーには見えない部分ですが、こういった問題が一番消耗します。
速度の問題
最初に使っていたAIモデルは精度が高い分、応答が遅い場面がありました。モデルの設定を調整し、より軽量なモデルに切り替えることで体感速度を改善しました。精度と速度のバランス調整は、今もいちばん難しい部分の一つです。
Snapmeal開発で、こだわったこと
ホットクックの操作手順まで案内する
ホットクックで調理する場合、「カテゴリ選択 → どの自動メニューが近いか → 手動モードを使う場合の時間設定」まで画面上に表示するようにしました。「ホットクックで作れます」という情報だけでは、実際の調理には使えません。操作の流れがわかって初めて役に立つと考えています。
「疲れた日モード」
仕事が立て込んでいて、帰宅してから包丁を持つ気力がない夜があります。そういうときに「15分以内・包丁をほぼ使わない・工程3ステップ以内」の料理だけを提案してくれるモードがあると助かります。自分自身がほしいと思って実装した機能です。
調味料の代替案
みりんがなければ何で代替できるか。醤油が足りなければどうするか。AIキッチンを作ったそもそものきっかけが調味料の代替知識不足だったこともあり、この部分はしっかり対応するようにしました。
和食だけでなくグローバルに対応する
最初から「和食専用」にするつもりはありませんでした。洋食・中華・韓国料理・エスニックなど、食べたいスタイルをその日に選べるようにしています。日本国内でも食の好みは多様ですし、将来的には海外のユーザーにも使ってもらいたいという気持ちもあって、最初から複数の料理スタイルに対応できる設計にしました。
マンネリ回避
毎日使うサービスで「また同じ料理か」となったら使わなくなります。過去14日間の提案履歴を学習して、同じ料理・食材・ジャンルが続かないようにしました。地味ですが、継続して使ってもらうために大事な設計だと考えています。
Snapmealをベータ版として公開しました!
Snapmealは現在、ベータ版として公開しています。
ホットクックをお持ちの方はもちろん、フライパンや電子レンジで料理している方にも使っていただけます。ダウンロード不要で、ブラウザからそのまま使えます。ベータ期間中は全機能を無料でお試しいただけます。
使ってみた感想があれば、ぜひ教えてください。アプリ内のフィードバックボタンからでも、SNSのコメントでも構いません。いただいた声が次のバージョンをつくる材料になります。