0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

めっちゃディスってくれるダイエットアプリ「Disette」を 0円運用で作っている話

0
Posted at

めっちゃディスってくれるダイエットアプリ「Disette」を 0円運用で作っている話

ダイエット系アプリって、最初はやる気があってもだいたい記録が続かないんですよね。
理由は単純で、入力が面倒だからです。

そこで今作っているのが、フリーテキストで食事を書くだけで、AI がいい感じに解釈してカロリー計算してくれる(めっちゃディスってくれる) PWADisette です。

たとえば

  • 朝 パンとコーヒー
  • 昼 コンビニのサラダチキンとおにぎり
  • 夜 ラーメン

みたいに雑に書くと、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 をどういう体験として触らせるか」 なんだなと改めて感じています。

まだまだ詰めるところは多いですが、
個人開発でここまで組める時代になったのは本当に面白いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?