TL;DR(3行)
- 5/10 に書き始めた Android アプリ GitMD を、約5週間で Google Play 本番リリースまで持っていった。
- 502コミット / Kotlin 約6万行 / テスト136ファイル。うち 460コミット(約92%)に AI(Claude)が Co-Author として入っている。
- カギは「AIに丸投げ」ではなく、複数のAIを分業させ、機械的なテストで暴走を抑えるやり方だった。
作ったもの:GitMD
GitHub リポジトリをそのままノートの保存先にする Markdown ノートアプリです。
- 書いたノートは Git でコミット & 同期され、全部が自分のリポジトリに残る(ベンダーロックインなし)
- Jetpack Compose + Material3 製。エディタ、全文検索、タグ、アーカイブ/ごみ箱、PDF/HTML エクスポート、Mermaid・数式(LaTeX)プレビューまで
- GitHub / GitLab に加えて Dropbox / Box / Google Drive 同期
- 広告なし・サブスクなし。3リポジトリ目以降だけ買い切り Pro
↑ Play Store 掲載の実機スクリーンショット。右端はアプリ内の AI 執筆支援(自分の API キーで Gemini / OpenAI / Anthropic を使う BYOK 機能)——「作るのも AI、書くのも AI」。
1ヶ月の成果を「数字」で
| 指標 | 値 |
|---|---|
| 開発期間 | 2026/5/10 → 6/14(約5週間) |
| コミット数 | 502 |
| Kotlin コード | 約59,800行 / 342ファイル |
| テスト | 136ファイル(ユニット・スクショ回帰・E2E) |
| 処理した Issue/PR 参照 | 249件 |
| AI Co-Author 率 | 460 / 502(約92%) |
| 対応プラットフォーム | Android(本番リリース)/ Desktop / iOS(PoC 中) |
週ごとのコミット推移(実データ)。後半に向けて落ちるどころか加速しているのが、AI 開発らしいところ:
W19 (5月2週) ██████████ 50
W20 (5月3週) ████████ 42
W21 (5月4週) ███████████████████ 97
W22 (5月5週) ████████████████████████████ 128 ← ピーク
W23 (6月1週) ███████████████ 75
W24 (6月2週) ██████████████████████ 110
1人の個人開発で、5週間でこのスループットが出るのは、正直なところ自分の手で書いていたら絶対に無理でした。
どうやって作ったか(ここからが本題)
「AI すげー」の中身を分解すると、効いたのは1つの賢い AI ではなく AI を“チーム”として組んだことでした。
1. 主ドライバは Claude Code
開発はターミナルの Claude Code を中心に回しました。コードを書くのも、テストを走らせるのも、git 操作も、リリースのタグ打ちも AI がやります。私の仕事は基本的に 「何を作るか」を決めて、出てきた差分をレビューすること。
リポジトリ直下に CLAUDE.md(プロジェクトの作法)と、セッションをまたいで効く永続メモリを置いて、毎回ゼロから説明しなくていいようにしたのが地味に効きました。
2. マルチエージェント分業:Opus が司令塔、Sonnet が実働
全部を最上位モデルにやらせると遅くて高い。なので役割を分けました。
- 判断・設計・レビューは賢い Opus(司令塔)
- 量産・機械作業(似た画面を量産、テストを足す、文言を直す)は Sonnet のサブエージェントに委譲
「考える所だけ高いモデル、手を動かす所は速いモデル」。この分業だけで体感のスループットが何倍にもなりました。
3. ローカル LLM まで動員した“3段カスケード TDD”
さらに実験的に、Opus → Sonnet → ローカル LLM の3段ループを組みました。
- Opus が仕様とゲート(やりすぎ・ズルの検出)を担当
- Sonnet が「まだ通らない仕様テスト」を先に書く(TDD の RED)
- ローカル LLM(LM Studio で動かす Qwen2.5-Coder-14B)がそのテストを緑にするコードを書く(GREEN)
ここで得た知見が面白くて——「決定論的なテストが正しさを丸ごと検証してくれる時だけ、安いローカル LLM は黒字になる」。テストが正解を機械的に保証してくれるなら、実装役は安いモデルで十分。逆に reasoning が暴発するタイプのモデルは、勝手にスコープを広げて壊すので実装役には不向きでした。
4. 夜は勝手にテストが増える:自走改善ループ
「落ちている/足りないテストを1件ずつ足して緑にする」だけのループを組んで、夜間に無人で回すようにしました。Opus が司令塔、Sonnet が実働。成果は専用ブランチに積むだけで main には触らせない——という安全弁つき。朝起きるとテストが増えています。
5. git worktree で複数 AI を並行に走らせる
AI は待ってくれないので、複数セッションを同時に走らせたい。そのまま同じチェックアウトでやると衝突するので、作業ごとに git worktree で隔離しました。「A セッションがエディタをいじってるあいだに B セッションが同期周りを直す」みたいな並行開発が、1人でもできます。
6. AI の暴走は「人」じゃなく「機械」で止める
AI は平気でデグレを入れます。実際、開発中に「新規ノート作成 → 画面回転でクラッシュ」というバグを AI 自身が埋め込みました。これを毎回人間が目視で見つけるのは無理。なので機械的なガードを厚くしました:
- スクリーンショット回帰テスト(Roborazzi、ライト/ダーク両方)で UI の見た目の変化を検出
- E2E テストを Robolectric・実機エミュレータ・Desktop ヘッドレスの3経路で
- AI によるコードレビュー(PR を開くと別の Claude が指摘する)
「AI が書く → AI がレビューする → テストが守る」。速度は AI に、安全は決定論的なテストに寄せるのが、結局いちばん安定しました。
正直に:ハマったところ・AI の限界
「すげー」だけだと嘘になるので、効かなかった/苦労した所も。
- AI は自信満々でデグレを入れる。 上の回転クラッシュが典型。テストがないと止められないので、テストファースト+スクショ回帰は“保険”ではなく“前提”でした。
- 下位モデルは万能じゃない。 決定論ゲートがある純ロジックは安いモデルで回るが、ふわっとした UI 判断は上位モデルじゃないと無理。
- CI 課金は普通に効く。 無料枠を使い切って一時 CI を止め、テストはローカル+AI レビュー運用に切り替えました。AI 開発は CI を回す回数も増えるので、ここはコスト設計が要ります。
- AI への“課金”は前提。 上位モデルを常用するので、それなりのプラン課金は必要。ここは正直、先行投資です。
何が効いたか(持ち帰り)
- AI は1体より“チーム”。 役割(司令塔/実働/実装)でモデルを使い分けると速い・安い。
- 正しさは決定論に寄せる。 テストが機械的に正解を保証するほど、AI に任せられる範囲が広がる。
- main を守る安全弁。 worktree 隔離+専用ブランチで、自走させても本番は壊れない。
-
コンテキストを資産化する。
CLAUDE.md+永続メモリで毎回の説明コストをゼロに近づける。
これから
すでに Compose Multiplatform で Desktop 版、さらに libgit2 を使った iOS 対応の PoC(Phase 0 = GO 判定)まで進んでいます。マルチプラットフォーム展開も、同じ AI ワークフローでどこまで行けるか試していきます。
まとめ
5週間・502コミット・約6万行・本番リリース。そのうち92%のコミットに AI が入っている。
「AI にコードを書かせる」は、もう“1個のチャットに丸投げ”ではありません。複数の AI を役割分担させ、テストという決定論で囲って、人間は判断とレビューに回る——この形に組み替えた瞬間、個人開発のスループットが文字通り桁で変わりました。
GitMD は Google Play で公開中です 👉 https://play.google.com/store/apps/details?id=com.ymatsuza.gitmd
この記事自体も、開発に使ったのと同じ Claude Code に下書きさせ、git の実データ(コミット数・LOC・Co-Author 率)で裏取りして書きました。


