合同会社 CitrusApp(シトラス・アップ)代表です。今回はいつもと少し毛色の違う開発実績のご紹介です。クライアント様のシステムではなく、私自身が「シックスパック(割れた腹筋)を作りたい」と思い立ち、そのために自分専用のAIコーチアプリ「Six Pack Coach(シックスパックコーチ)」を作ってみました。

その日にやることはAIコーチが決め、やったことはスマホに向かって🎤で話すだけ。コーチが話の中身を読み取って自動で記録し、体重の傾向を分析して、必要なら計画の変更を提案してくれる——そんな「入力しない記録アプリ」を、生成AIを活用した開発でおよそ4日間で形にし、今も毎日使いながら改善しています。

目次
  1. 作ったきっかけ / 抱えていた課題
  2. Six Pack Coach とは?
  3. 主な機能
  4. 開発の流れ
  5. 今回の開発のポイント
  6. 開発責任者からのコメント
  7. 使用技術

作ったきっかけ / 抱えていた課題

体脂肪を落として腹筋を見えるようにするには、食事・運動・体重を毎日記録し、数週間単位で調整を続ける必要があります。ところが、実際にやろうとすると次のような壁がありました。

  • 記録が続かない:食事のたびにメニューを検索してグラム数を入力するような記録アプリは、忙しい日が数日続くと入力をやめてしまう
  • 記録しても判断できない:体重は1日で1kg前後上下するので、毎朝の数字を見ても「順調なのか」「食べすぎなのか」が分からない
  • 計画を見直せない:腹筋のメニューがきつすぎるのか物足りないのか、有酸素運動を増やすべきか——その判断を自分でするのが難しい
  • 一般論のアドバイスしか得られない:ネットや汎用のAIチャットに聞いても、自分の記録を踏まえた答えは返ってこない

そこで、「入力する」のではなく「コーチに話す」だけで記録が進み、その記録をもとにコーチが今日やることを決めてくれるアプリがあれば続けられるのでは、と考えました。それなら自分で作ってしまおう、というのが今回の出発点です。

Six Pack Coach とは?

「今日やること」をコーチが決め、話すだけで記録が進むAIコーチ

腹筋を割るために必要なのは、腹筋運動だけではありません。お腹まわりの脂肪を落とすこと、減量中も筋肉を落とさないこと、そしてそれを数か月続けること。Six Pack Coachは、この3つを「毎日コーチと話すだけ」で回せるように設計した、自分専用のWebアプリです。

目標日(私の場合は12月21日、全13週)から逆算して、コーチが「今週は基準づくり」「今日はジョギング30〜40分とタンパク質100〜120g」のように、その日にやることを決めてくれます。私がやるのは、実行して結果を話すことだけです。

特徴

  • 話すだけで記録 — 「朝は卵2個と納豆、腹筋は全部やった」と🎤で話すと、食事と運動をそれぞれ記録。フォームへの入力は求めない
  • 食事は写真・スクショでも — 料理の写真や注文履歴のスクリーンショットを📷で送ると、AIが読み取ってタンパク質・カロリーを推定
  • 判断は体重の7日平均で — 日々の上下に振り回されず、週ごとの減量ペース(速すぎ/順調/停滞)を判定
  • 「何が何gか」まで分かる食事の内訳 — 品目ごとのタンパク質・カロリーと、目標まであと何gか、何を足せば届くかを表示
  • 計画の変更は「提案」だけ — 週次レビューでコーチが計画の見直しを提案し、自分が「変更する」を押したときだけ反映
  • 体調を最優先 — 痛み・めまいなどを話すと、トレーニングを止めて休養を勧める注意を、AIの返事とは別に必ず表示
  • 腹部の写真は暗号化して保存 — 見た目の変化は写真で記録。写真は暗号化して保存し、本人しか開けない(AIにも送らない)
  • スマホ最優先 — 片手で使え1カラムの画面と、下部の3つのタブ(コーチ/進捗/設定)

主な機能

コーチ画面(ホーム)

  • 朝いちばんに、コーチから「目標日まであと◯日」「今週のフェーズ」「今日のメニュー」のあいさつが届く
  • 「今日やること」(体重・運動・タンパク質など)は、話した内容から自動で「済み」になる。チェックを付ける操作は無い
  • 筋トレの日は種目と回数を番号付きで表示(例:リバースクランチ 15回×3)
  • 睡眠不足や体調不良を話すと、その日だけメニューを軽くする(計画そのものは変えない)
コーチ画面(今日やること)

▲ コーチ画面:今日やることと、話して記録する🎤ボタン

🎤 話すだけで記録

  • 🎤を押して話すと、サーバー側で文字起こし → AIが「体重」「食事」「運動」「睡眠」「体調」に分けて読み取り → アプリが検証してから保存
  • 発言に無い数値は作らずに聞き返す(「結構走った」→「何分くらい走りましたか?」)
  • 前回から3kg以上離れた体重は、聞き間違いの可能性があるので保存前に確認
  • 保存した記録は返事の下にアイコン付きで並び、「取り消す」で1件ずつ元に戻せる
  • 音声は保存しない。マイクが使えない場面では文字入力に切り替えられる
話した内容が記録された返事

▲ 話して記録:食事と運動を一度に話しても、それぞれの記録に分けて保存

📷 食事の写真・スクショで記録

  • 料理の写真、デリバリーの注文履歴、栄養成分表示などを送ると、AIが品目と量を読み取り、タンパク質・カロリーを推定
  • 画像はブラウザで縮小し、位置情報など(EXIF)を消してから送信
食事の写真を送って記録したところ

▲ 📷 食事の写真:写真とひとこと(「昼ごはん」)を送ると、品目ごとに推定して記録

食事の内訳(何が何gか・何を足せばよいか)

  • 食事ごと・品目ごとのタンパク質とカロリー(例:卵 ×2 P約12g・約160kcal / 納豆 P約8g・約90kcal)
  • 目標まであと何gかと、それを埋める組み合わせを「食事で」「コンビニで」「手軽に」の3通りで提案(例:サラダチキン1個+ギリシャヨーグルト1個+ゆで卵1個でP約40g)
  • 「プロテインを牛乳に入れると何g?」のような質問にも、一般的な目安で答えてから今日の不足と比べる
今日やることの「内訳を見る」

▲ 食事の内訳:品目ごとの推定と、目標までの不足・足す食べ物の例

進捗ダッシュボード

  • 体重と7日平均のグラフ(タップで日ごとの値)、ウエストの推移
  • 体脂肪率(体組成計の値)とウエストの変化から、目標体重の見直しを理由つきで提案(変えるかどうかは自分で決める)
  • 腹部の写真を時系列で並べて見比べる
  • 日ごとの記録から修正画面を開いて直せる
進捗画面(体重と7日平均のグラフ)

▲ 進捗:毎日の体重(点)と、7日平均(線)・目標の範囲を一つのグラフで

週次レビューと計画の提案

  • 週が終わると、コーチが1週間を振り返るレビューを自動で作成(減量ペース・運動の実施・タンパク質・甘いもの/お酒/揚げ物の日数)
  • 計画を変えたほうがよいときは、変更点を差分つきで提案。「変更する」を押すと新しい版の計画になり、「今のまま」なら何も変わらない
  • 負荷を上げる提案は、直近の達成率を見てから。体調に注意が出ているときは出さない
週次レビューと計画変更の提案カード

▲ 週次レビュー:変更点を差分で見せ、「変更する」を押したときだけ計画が変わる

開発の流れ

作り始めてから今の形になるまで、約4日間で13回本番に反映しました。

  1. 1日目(9/25):土台から最小構成を作って公開 — 弊社が受託開発のために整備している共通の開発基盤(認証・DB・デザインの仕組み・テストの型)を起点に、体重・食事・運動の記録と、AIによる週次レビュー・計画の提案までの最小構成を作り、その日のうちにVercel+Neonで本番公開しました。
  2. 2日目(9/26):「入力するアプリ」から「話すコーチ」へ作り替え — 最初の版はフォームで入力する形でしたが、毎日続けるには入力の手間をなくしたいと考え、ホームをコーチ画面にして、🎤で話すだけで記録・分析・計画の調整が進む形に作り替えました。同じ日に、📷で食事の写真を送って記録する機能も追加。
  3. 3日目(9/27):「シックスパックに届くか」で判定を見直し — 「ルールどおりにできたかより、それでシックスパックに届くかのほうが大事」と考え直し、全身の筋トレ・体組成(ウエスト・体脂肪率)・目安カロリー・甘いもの/お酒の頻度まで見るように判定を拡張。あわせて、タブの切り替えが遅い問題を改善しました。
  4. 4日目(9/28):食事の内訳(何が何gか)を追加 — AIの返事が「何が足りないのか」を具体的に言えていなかったので、品目ごとの推定と、「あと何g・何を足せばよいか」を出すようにしました。
  5. その後も、使いながら改善 — 毎日使って気づいたことを、その日のうちに直しています。

今回の開発のポイント

ポイント1:「入力させない」— 話すだけで記録が進む

続けるために一番大事にしたのは、入力の手間をなくすことです。Six Pack Coachのコーチ画面には入力フォームがありません。やったことを話せばコーチが読み取って記録し、足りない情報だけを聞き返します。

ただし、AIの読み取り結果をそのまま保存はしません。必ずアプリ側で検証してから保存し、発言に出てこなかった数値は作らせません。「結構走った」と話したら、時間を推測で「30分」とするのではなく「何分くらい走りましたか?」と聞き返します。記録の正しさを守りながら、入力はゼロに近づける——ここが設計の中心です。

ポイント2:AIに「計算」と「決定」をさせない

AIは便利ですが、数字の計算と、計画を変えることは任せていません。

  • 計算はプログラムで:7日平均・減量ペース・目標日までに必要なペース・タンパク質の不足量はすべてプログラムが計算し、AIには計算済みの値を渡す(AIに計算させると、画面とチャットで言うことが食い違う)
  • 計画の変更は「提案」だけ:AIの提案もプログラムで検証し(負荷の上げ幅・休養日の確保・体調の注意)、通らない提案は見せない。反映は自分が「変更する」を押したときだけ
  • 安全の判断はAIに頼らない:痛み・めまいなどはプログラムで検出し、AIの返事とは別に必ず表示
  • AIが止まっても記録は止めない:AIに接続できないときは、同じ判定を使うルールベースの返事に切り替える

業務システムにAIを組み込むときと同じ考え方です。AIには「読み取ること」と「言葉にすること」を任せ、判断の根拠になる数字と最終的な決定はプログラムと人が持つ、という役割分担にしています。

ポイント3:自分で使って、気づいたその日に直す

今回いちばん面白かったのは、開発者とユーザーが同じ人だということです。使っていて気になったことは、その日のうちに直して本番に反映しています。実際にあった例を紹介します。

例1:アイコンと呼びかけ — 最初は人の顔のマスコットを使っていたのですが、名前に「さん」を付ける処理が重なって「わたるさんさん」と表示されていました。アイコンを腹筋の6ブロックをかたどったものに変え、敬称の重複も直しました。

Before:最初のコーチ画面

▲ Before:人の顔のアイコンと「わたるさんさん」。After は上の「コーチ画面」の画像

例2:「何が何gか」を答えられない — 「プロテインを牛乳に2杯くらい入れて飲むと、どのくらいのタンパク質になる?」と聞いたところ、「記録上は分けられないので断定できません」という返事が返ってきました。原因は、AIに食事ごとの合計しか渡しておらず、「データに無いことは断定しない」という指示が一般的な食品の栄養にまで効いていたこと。品目ごとの推定と、目標までの不足・それを埋める食べ物の例をAIにも画面にも渡し、一般的な食品の栄養は目安として答えるようにしました(あわせて、夕食を「夜食」と表示していたのも直しました)。

Before:品目を把握していなかった返事

▲ Before:「記録は保存されていません」「断定できません」

After:一般的な目安と今日の不足で答える返事

▲ After:一般的な目安で答え、今日の不足と「何を足せばよいか」まで言う

例3:タブの切り替えが遅い — 下のタブで画面を切り替えるのが遅いと感じて調べると、押してからサーバーの処理がすべて終わるまで画面が変わらない作りになっていました。読み込み中の骨組みをすぐ出す・一度開いた画面を30秒手元に残す・DBへの問い合わせをまとめる、の3つで、手元で回線の遅延を入れて測った切り替え時間は0.6〜1.2秒から0.1秒以下になりました。

このサイクルを支えているのが、生成AI(Claude Code)を使った開発です。気づいたことを伝えると、原因の調査・修正・テスト・本番への反映までを短時間で回せます。直すたびに、単体・結合テスト247件と、スマホ・PCの画面を実際に操作するE2Eテスト60件をすべて通してから出しているので、速さと安全を両立できています。

ポイント4:「腹筋を割る」から逆算した判定

腹筋が見えるかどうかは、ほぼお腹まわりの体脂肪で決まります。腹筋運動だけではお腹の脂肪は落ちない(部分痩せはできない)ので、「腹筋メニューをこなしたか」だけでは判定できません。そこで次の観点で判定しています。

  • 全身の筋トレ:減量中に筋肉を落とさないよう、スクワットや腕立て伏せなどの全身の筋トレを計画に組み込む
  • 体重は7日平均で:日々の上下ではなく週ごとのペースで「食事量を変えるか」を判断。減量が速すぎるときは食事を増やすよう勧める
  • 体組成:ウエストの変化と体脂肪率から、目標体重が現実的かを見直す(変えるかどうかは本人が決める)
  • 目安カロリーは補助:基礎代謝と記録から目安を出すが、判定の主役にはしない。カロリーを理由に食事を減らさせない
  • 甘いもの・お酒・揚げ物:週に何日あったかを週次レビューで振り返る

開発責任者からのコメント

今回は、いつもとは逆の立場——「作る側」であり、同時に「使う側」でもある立場で開発してみました。改めて感じたのは、アプリの価値を決めるのは、作り始める前の仕様よりも、使い始めてから出てくる細かな違和感を一つずつ潰していくことだ、ということです。「呼び方がおかしい」「この答えでは何が足りないか分からない」「タブが遅い」——どれも実際に毎日使ってみるまで分かりませんでした。

生成AIを活用した開発で、こうした気づきを「その日のうちに直す」サイクルを4日間で13回回せました。もう一つの発見は、AIを組み込むときの勘所——AIに計算させない、AIの出力は検証してから保存する、大事な変更は人が承認する——は、個人向けのアプリでも業務システムでもまったく同じだということです。ここで試したことは、お客様のシステムづくりにも活かしていきます。

腹筋が割れたかどうかは、また改めてご報告できればと思います。

使用技術

  • フロントエンド/バックエンド:Next.js 16(App Router)+ React 19 + TypeScript
  • ORM:Drizzle ORM
  • データベース:Neon(サーバーレス PostgreSQL)
  • 認証:自前のセッション管理(JWT / httpOnly Cookie)
  • AI:OpenAI API(発言の読み取り・返事・週次レビュー・計画の提案、🎤の文字起こし、📷の画像の読み取り)。接続できないときはルールベースに自動で切り替え
  • 画像の保存:Vercel Blob(アプリ側で暗号化して保存)
  • インフラ:Vercel
  • テスト:Vitest(単体・結合テスト247件)、Playwright(E2Eテスト60件。スマホとPCの画面)
  • 開発手法:生成AI(Claude Code)を活用した高速・反復開発

AIを組み込んだアプリ開発、Citrus Appにご相談ください

合同会社 CitrusApp(シトラス・アップ)は、AI駆動開発で、業務システム・SaaSのアイデアを最短でカタチにする開発会社です。

今回のSix Pack Coachで使った「話すだけで記録」「写真から読み取って登録」「AIの提案を人が承認して反映」といった仕組みは、日報・点検記録・在庫の記録など、現場で入力の手間が課題になっている業務システムにも応用できます。「入力が面倒で定着しない」「AIを業務に組み込みたいが、どこまで任せてよいか分からない」——そんなお悩みがあれば、お気軽にご相談ください。