めっちゃディスってくれるダイエットアプリ「Disette」を 0円運用で作っている話
ダイエット系アプリって、最初はやる気があってもだいたい記録が続かないんですよね。
理由は単純で、入力が面倒だからです。
そこで今作っているのが、フリーテキストで食事を書くだけで、AI がいい感じに解釈してカロリー計算してくれる(めっちゃディスってくれる) PWA、Disette です。
たとえば
- 朝 パンとコーヒー
- 昼 コンビニのサラダチキンとおにぎり
- 夜 ラーメン
みたいに雑に書くと、AI 側で食事内容を分解して、カロリー感を出して、軽くコメントまで返します。
厳密な栄養管理アプリというより、「記録の心理的ハードルを限界まで下げる」ことに全振りしたプロダクトです。
何を作っているのか
Disette は、食事・体重・日々の振り返りをまとめて扱うダイエット記録アプリです。
特徴はかなりシンプルで、
- 食事はフリーテキスト入力
- AI が食材や量をざっくり解釈
- カロリーを推定
- その日の進捗に応じて辛辣に一言返す
- 記録はあとから見返せる
という構成です。
フォームを細かく分けたり、食品DBをポチポチ検索させたりすると、その瞬間に記録が面倒になります。
なので、UXとしてはかなり割り切っていて、**「正確さを多少犠牲にしてでも、まず続くことを優先する」**設計にしています。
技術スタック
今の構成はこんな感じです。
- フロントエンド: Nuxt
- AI: Gemini API
- ホスティング: Vercel
- DB / Auth: Supabase
- CDN / 周辺: Cloudflare
- 監視: Sentry
- 分析: PostHog
- 通知: Slack
わりとよくある構成ですが、個人開発との相性がかなりいいです。
無料枠だけで一通り回せるのが大きいです。
0円運用できている理由
今のところ、運用コストはほぼ 0 円です。
理由はシンプルで、
- Vercel の無料枠で十分
- Supabase の無料枠で十分
- Gemini API も PoC 段階なら十分
- Sentry / PostHog / Slack も無料枠
からです。
もちろん、トラフィックが増えたり、AI の呼び出し回数が増えたりすると話は変わります。
でも、PoC や個人開発の初期段階では「まず無料枠でどこまで行けるか」を見るのが一番いいと思っています。
最初から構成を重くしすぎると、作る前に疲れるので。
AI をどう使っているか
AI の使い方としては、派手なことはしていません。
でも、ちゃんとプロダクトの中核に置いています。
大きくはこんな役割です。
- フリーテキストの食事入力を解釈する
- 曖昧な食事表現をある程度いい感じに寄せる
- カロリーを推定する
- その日の文脈に応じて短いコメントを返す
ポイントは、LLM を UI の裏側にうまく沈めることだと思っています。
ユーザーから見える体験は「雑に書いたら記録できた」でよくて、
内部で何段階か処理していても、そこはあまり前に出さないようにしています。
この手のアプリは、技術的にすごそうに見せるより、使ったときに自然かどうかのほうが大事なので。
実際に難しかったところ
技術的に一番難しいのは、たぶんみんな想像するところと少し違っていて、
「AI を呼ぶこと」そのものではなかったです。
難しいのはむしろ、
- ユーザーの雑な入力をどこまで許容するか
- 推定結果をどこまで断定的に見せるか
- 間違っていても UX を壊さない出し方にするか
- 記録を続けたくなるトーンをどう作るか
みたいな、仕様と体験設計の境目でした。
たとえばカロリーは、厳密な値として見せるよりも、少し幅を持たせたほうが自然なケースがあります。
でも幅を持たせすぎると、今度は使い物にならない。
このあたりはかなり泥臭く調整しています。
監視と分析は最初から入れた
個人開発だと後回しにしがちなんですが、今回は最初から
- Sentry でエラー監視
- PostHog で行動分析
- Slack でデイリーのインサイト通知
を入れています。
理由は、AI を絡めた瞬間に、想定外の壊れ方が普通に起きるからです。
特に、
- 入力の揺れ
- 外部 API のレスポンス変動
- モバイル環境特有の挙動
- PWA 周りの不安定さ
このへんは、ローカルで気持ちよく動いていても本番で普通に崩れます。
なので「とりあえず作る」ではなく、
最低限の観測性だけは先に作るようにしました。
PWA にした理由
アプリストアに出したい気持ちはあるんですが、初期フェーズではまず PWA がちょうどいいです。
- インストールの心理的ハードルが低い
- Web のまま改善を回せる
- 配布が楽
- 更新反映が速い
健康系・記録系のプロダクトは、
「思い立った瞬間に開けること」が大事なので、PWA との相性はかなりいいです。
ネイティブ化を急ぐより、まずは ちゃんと使われる体験を Web で詰めるほうが筋がいいと感じています。
個人開発でこの構成はかなりおすすめ
ここ数年で、個人開発の初速はかなり上がったと思っています。
Nuxt / Vercel / Supabase の時点でかなり快適ですし、
そこに Gemini API、Sentry、PostHog、Slack を足すと、小さく作って早く回すには十分すぎるくらいの環境になります。
特に、
- まずは作りたい
- でも最低限の本番運用もしたい
- できればお金はかけたくない
という人には、このへんの構成はかなり扱いやすいです。
派手な新規性はないですが、
「よくある構成」であること自体が強みだなと最近は思っています。
まとめ
Disette は、
- フリーテキストで食事記録できる
- AI が解釈してカロリーを出す
- コメントまで返す
- Nuxt + Gemini API + Vercel + Supabase などで構成
- いまのところほぼ 0円運用
という感じで作っています。
AI アプリを作るとき、ついモデルやプロンプトの話を中心にしがちなんですが、
実際に大事なのは 「その AI をどういう体験として触らせるか」 なんだなと改めて感じています。
まだまだ詰めるところは多いですが、
個人開発でここまで組める時代になったのは本当に面白いです。