写真解析はサーバー側のEdge Functionで動きます。APIキーはEdge Secretで、system promptとレスポンススキーマも同様にサーバー所有です。クライアント側から差し替えられないので、モデルの扱う範囲が固定されます。プラン別の1日あたり上限もこの関数で判定します。端末側で確認する上限は上限ではないためです。
01 — 消費者向けアプリ / 栄養管理 / 2026
CAROOT
食事の記録を写真1枚で終わらせるための、カロリー・栄養管理アプリ。AIが料理を品目ごとに見分け、一度直した内容はその料理に次回から自動で適用されます。
2026iOS / Android
- クライアント
- CaRoot — 自社プロダクト
- 領域
- 消費者向けアプリ / 栄養管理
- 担当
- 企画、UI/UX、モバイル・バックエンド開発、データ設計、リリース・運用
- 年
- 2026
- 公開中
- caroot.app ↗
01 / PROJECT
WHAT THE
PROJECT IS.
カロリー計算が続かないのは意志が弱いからではなく、毎食入力するのが面倒だからです。CaRootはその工程をなくすために作りました。企画、UI/UX、アプリ、バックエンド、AI機能、データ設計、App Storeのリリースまで一貫して開発している個人プロダクトです。
入口は5つあります。写真を撮れば品目ごとに分解され、バーコードをかざし、栄養成分表示を撮り、検索し、あるいは手で入力します。検索の対象は、56ブランドの外食チェーンが公表する栄養データ約8,500メニューと、日本食品標準成分表(八訂)約2,500件です。英語表示ではUSDAの約7,800件に切り替わります。まだバーコードの登録がない商品は最初にスキャンした人が登録でき、商品データベースは使われるほど育ちます。
記録のまわりには、習慣にするための仕組みを置いています。体組成と目標から算出する目標値、日記・カレンダー・分析のビュー、体重と水分、写真一覧、連続記録、週間レポート、食事リマインダー。投稿・フォロー・ランキング・招待コードといったソーシャル面もあり、サブスクリプションと広告オフの買い切りで運営しています。
02 / HOW IT WORKS
THE DECISIONS
UNDER IT.
実装から
推定が違っていたら、直した数値を正規化した料理名に紐づけて保存し、その料理が出るたびに再適用します。別名も学習します。モデルが「醤油つけ麺」と呼んだものを別の名前に直した場合、モデルが言った名前をキーに、ユーザーが付けた名前を値として保存するので、次に同じ料理を撮ると名前も数値もユーザーのものが返ります。中身が空の補正は学習せず、内訳なしで合計だけ保存したときは古い内訳を消します。合計と矛盾した内訳が残らないようにするためです。
書き込みはまずローカルに型付きのキューとして積み、それから送信し、成功したときだけ取り除きます。オフライン、アプリの強制終了、一時的なエラーで失敗した分は、次の書き込み時・フォアグラウンド復帰時・起動時にFIFOで再送します。キューが残っているあいだはクラウドからの取り込みを止めます。クラウドのほうが古いと確定しているからです。これがないと、失敗した書き込みは黙って消え、次回起動時にローカルが巻き戻されていました。
写真解析もバーコードもラベル読み取りも失敗しえます(写真が悪い、未収録の商品、読めないラベル)。そのため検索と手入力は代替手段ではなく対等な経路として用意しています。解析サービスに到達できなくてもアプリは問題なく使え、食品データをAPIの向こうではなくアプリ内に同梱しているのも同じ理由です。
データはデータベースの行レベルセキュリティでユーザーごとに分離しています。課金プランはストアのWebhook経由で書き込まれ、書き換えから保護されているので、アプリ側からは設定できません。ペイウォールはUIのチェックではなく、データの結果として成立します。招待の報酬も同じ考え方で、コードの引き換えはデータベース関数として実行し、2回目を関数側で拒否します。クライアントが二重に要求しないと約束する形にはしていません。
03 / DELIVERED
WHAT WAS
BUILT.
- 01
料理を品目ごとに分解するAI写真解析と、その場で編集できる推定値
- 02
バーコードスキャン、栄養成分表示の読み取り、未登録商品のユーザー登録
- 03
同梱の食品データ:外食56ブランド約8,500メニュー、日本食品標準成分表 約2,500件、英語表示ではUSDA 約7,800件
- 04
料理ごとの補正学習(モデルの呼び名とユーザーの呼び名の対応づけを含む)
- 05
体組成・活動量・目標から導くカロリー / PFC目標と、手動での微調整
- 06
日記、カレンダー、分析、体重・水分の記録、写真一覧、連続記録、週間レポート、食事リマインダー
- 07
ソーシャル機能(投稿、フォロー、ランキング、招待コード)と、サーバー側で付与する報酬
- 08
ストアのWebhook経由で扱うサブスクリプションと買い切り、広告、日本語・英語対応、アカウント削除
04 / TECHNOLOGY
THE STACK
BEHIND IT.
- Expo
- React Native
- TypeScript
- NativeWind
- Zustand
- Supabase
- PostgreSQL
- Edge Functions
- Gemini
- RevenueCat

