
スワイプで今夜の献立と出会うレシピアプリ
タプレピは、冷蔵庫の余り物を入力するだけで、次々と提案されるレシピを直感的にスワイプして「今夜の献立」を決めるWebアプリです。ログイン不要で使えます。
作ったきっかけ
毎日の献立を考えるのがとにかく苦痛でした。
仕事終わりに「今日何作ろう?」とレシピサイトを開いても、検索結果にズラッと並ぶ膨大なレシピを比較検討する気力が残っていません。また、「よしこれを作ろう」と決めても、いざキッチンに立つと「あ、オイスターソースがない」と絶望し、また別のレシピを探し直す…ということが何度もありました。
「考えるエネルギー」を極限まで削り、直感だけでサクサク決まる体験を作りたくて、このアプリを開発しました。
できること
「あり/なし」をスワイプで振り分け
冷蔵庫の余り物(例:豚肉、キャベツ)を入力すると、条件に合うレシピが次々とカード形式で表示されます。Tinderのように直感的に「あり」「なし」をスワイプしていくだけで、思考停止で献立が決まります。
足りない食材はAIが「代用提案」
ここが一番のこだわりです。レシピが決まったあとに「調味料が足りない」と気づいても大丈夫。GeminiベースのAIが「家にある別の調味料での代用アイデア」を即座に教えてくれます。
あえてレシピをAIに「生成」させない理由
昨今、AI(LLM)を使ってレシピ自体をゼロから自動生成するサービスが増えていますが、タプレピではあえて「約5万件の既存レシピデータ」を提示することにこだわっています。
AIが生成したレシピは分量や味が保証されておらず、「実際に作ってみたら美味しくなかった」という体験に繋がると感じたからです。そのため、AIの力はレシピの生成ではなく、「足りない食材をどう補うか(代用提案)」という自炊のリアルなペイン解決に全振りしています。
開発について
フロントエンドは Next.js (App Router) + TypeScript で開発し、バックエンド・インフラには Firebase (Firestore / Authentication / App Hosting) を利用しています。
AIの代用提案機能の実装には Firebase Genkit を採用しました。
スワイプのUXと読み取りの最適化
約5万件のレシピデータの中から、条件に合うものをいかに遅延なくスワイプさせるかが課題でした。
Firestoreからの読み取り回数とレイテンシを減らすため、ユーザーが現在のカードを見ている裏側(バックグラウンド)で次の数件を非同期にプリフェッチする仕組みを入れています。これにより、Framer Motionを用いたスワイプアニメーションがカクつかない滑らかなUXを実現しています。
料金
基本機能(レシピのスワイプ検索など)はログイン不要で無料で利用できます。
無料版ではAIによる「代用提案」機能の1日の利用回数に上限(チケット制)があり、一部に広告が表示されます。プレミアムプランに加入することでAI機能の利用上限が解除され、広告も非表示になります。
今後追加したいこと
現在は「食材」からの検索がメインですが、数日間の献立提案など考えずに料理ができる機能を強化していきたいと考えています。
リンク
個人で開発と運用をしています。毎日の「限界自炊」のお供に使ってみていただき、もし使いにくいところや改善点があれば教えていただけると嬉しいです。
よくある質問
Q. アプリのダウンロードやインストールは必要ですか?
A. いいえ、必要ありません。タプレピはWebブラウザ上で動作するため、スマホやPCのブラウザからアクセスするだけですぐにご利用いただけます。
Q. 利用料金はかかりますか?
A. 基本的な機能(レシピ検索やスワイプ操作など)はすべて無料でご利用いただけます。AIによる「代用提案」機能のみ、無料版では利用回数に上限があります。広告を見ることで利用回数を増やすことができます。プレミアムプラン(有料)にご加入いただくと、回数無制限でAI機能を利用でき、アプリ内の広告も非表示になります。
Q. AIの「代用提案」とはどのような機能ですか?
A. レシピを作ろうとした時に「この調味料(食材)が家にない!」という場面で活躍する機能です。「オイスターソースがない」と入力すると、AIが「醤油と砂糖と鶏ガラスープの素で代用できます」といった具体的な解決策を教えてくれます。
Q. パソコンからも使えますか?
A. パソコンのブラウザからも問題なくご利用いただけますが、スワイプ操作の気持ちよさを最大限に体験していただくため、スマートフォンからのご利用を推奨しています。
Q. アカウント登録は必要ですか?
A. アカウント登録せずに使うことができます。プレミアムプランに登録した場合は、端末紛失等の問題発生時の復旧のため登録を推奨しています。
