はじめに
笹川
今はまさにAIコーディングエージェント利用の過渡期。エージェントがデファクトスタンダードになる前に、「既存プロジェクトにエージェントを導入する場合、リポジトリ構成はどうすべきか?」という、現場ならではのリアルな課題について議論したいと思います。
僕自身、最近Claude Codeなどを用いたAI駆動開発の検証を進めています。本日はお互いの実体験を交えながら、現場で本当に使えるアプローチを探っていきます!
1. モノレポ化の本来の目的と、AI時代における「新たな推進力」
笹川
しかし、コーディングエージェントを利用するようになり、「エージェントにシステム全体のコンテキストを効率よく理解させる」という新しい観点から、モノレポの価値を再評価する必要が出てきました。
既存プロジェクトでWeb(FE)、API(BE)、モバイルアプリのリポジトリが完全に分かれていると、AIの能力を下げる「コンテキストの浪費」が発生します。
リポジトリが別れている場合、人間がプロンプトで「別のリポジトリにあるこのAPI定義を読んで、こちらの型を直して」と前提条件を説明する必要があります。これは人間の手間の浪費であると同時に、エージェントの限られたコンテキストウィンドウ(読み込めるトークン数)の無駄遣いにも繋がります。
笹川
ローカル内で相対パスを指定して無理やり相互参照させる運用もありますが、チーム開発でのディレクトリ差異に弱く、CI/CD上でもビルドがコケやすいため、技術的負債になりがちです。
2. 【小規模・新規】コンテキストを極限まで「節約」するモノレポ
笹川
モノレポなら、プロンプトで前提条件を長々と書く必要がなくなります。例えば以下のような構成です。
1/my-project
2├── backend/ # Go (API, DBマイグレーション)
3├── frontend/ # React (Web UI)
4└── mobile/ # Android (モバイルUI)この状態で「プロフィールに『誕生日』フィールドを追加して」と指示を出すだけで、GoのDBマイグレーション、APIのレスポンス修正、Androidのデータクラス修正まで、一貫した修正案を出してくれます。この開発体験の良さは、今すぐ享受すべきメリットです。
3. 【検証】実際に測ってみた!モノレポ vs 完全分離のコスト差
笹川
タスク:ユーザープロフィールに誕生日(birthday)フィールドを追加
対象:Go API(バックエンド)+ React/TypeScript(フロントエンド)のフルスタック修正
使用ツール:Claude Code
モノレポ環境:
backend/ とfrontend/ が同一リポジトリに同居分離環境:
api-server/ とweb-client/が完全に別ディレクトリ(相互参照不可)
どちらの環境にも全く同じコード(Goのモデル・ハンドラ・マイグレーション・OpenAPIスキーマ、TypeScriptの型定義・APIクライアント・Reactコンポーネント)を配置し、同じタスクをエージェントに投げました。
セッション数
モノレポ: 1回 → 完全分離: 2回(FE→BE)
人間が書いたプロンプト
モノレポ: 75 tokens(1行)→ 完全分離: 386tokens(2回分)5.1倍
総トークン消費
モノレポ: 21,125 tokens → 完全分離: 32,984 tokens 1.6倍
エージェント実行時間
モノレポ: 94秒 → 完全分離: 102秒(47秒 + 55秒)
修正されたファイル数
モノレポ: 6ファイル → 完全分離: 6ファイル(同じ)
笹川
完全分離の構成では、以下のような流れになります。
1. Session 1(FE):「誕生日フィールドを追加して」→ フロントエンドの型定義とコンポーネントだけが修正される(14,439tokens消費)
2. 人間の橋渡し作業:FE側で何がどう変わったかを確認し、BE側のエージェントに伝えるプロンプトを作成(ここに5〜10分かかる)
3. Session 2(BE): 橋渡しプロンプト(311tokens)を添えてBE側を修正(18,545 tokens消費)
つまり、開発者がエージェント間の「人間ルーター」になってしまうんです。FEのエージェントが出した結果を人間が読み解き、BEのエージェントが理解できる形に翻訳する。この仲介コストがトークンと人間の時間の両方で発生します。
backend/ とfrontend/の両方を探索し、GoのモデルとTypeScriptの型定義を見比べながら整合性のある修正を1回で完了します。人間は「誕生日追加して」の1行を書いて、94秒待つだけです。
笹川
さらに見落とせないのが整合性リスクです。完全分離の構成では、人間の橋渡しプロンプトの精度がBE側の修正品質を左右します。もし伝達にミスがあれば、FEとBEで型が噛み合わず3セッション目(さらに+10,000 tokens以上)が必要になるケースも現実的にあり得ます。
モノレポであれば、エージェントが両方のコードを直接参照するため、このような伝達ミスは構造的に発生しません。
4. 【大規模プロダクト】権限とCI/CDの壁。サブモジュールが活きるケース
笹川
フロントエンドを外部委託している場合など、「バックエンドのコアなコードは見せられない」という要件が発生します。さらに、すべてのコードが一箇所に集まると、ちょっとしたWeb側のテキスト修正でAndroidのビルドテストまでトリガーされるなど、GitHub Actionsのコストが跳ね上がる問題に直面します。
1/frontend-repo
2├── src/
3└── schema/ (サブモジュールとして /schema-repo をマウント)
笹川
一番の課題は「更新時の2段階コミット」です。サブモジュール側を更新した場合、親リポジトリ側でも「新しいコミットハッシュを参照するためのコミットとPR」を毎回作成する必要があり、日常的な開発体験(DX)が少し落ちます。
--recursiveを付け忘れてビルドがコケるのも「あるある」ですよね(笑)。
笹川
5. 【コラム】クロスプラットフォームFWとAIの相性
笹川
ただ、インフラ面では少し注意が必要です。ソースコードは共通でも、ビルドの仕組みはiOSとAndroidで異なりますよね。なので、「コード生成はモノレポとしてAIの恩恵を受けつつ、CI/CD周りはOSごとにしっかり分けて組む」といった構成にするのが現実的かなと思います。
6. 【既存・複雑なCI】あえて「完全分離」を維持すべきケース
笹川
笹川
笹川
笹川
7. 結論:今の構成を変えてまで移行すべきか?(意思決定ガイド)
笹川
① 【Web中心でCI/CDがシンプル】なら ➡︎「モノレポへ移行」の価値あり!
既存のWebプロジェクト(FE/BE)で、CI/CDの設定がそこまで複雑でないなら、今すぐモノレポに統合するROI(投資対効果)は非常に高いです。エージェントが全体を把握できるようになるだけで、今後の開発スピードが劇的に上がるため、移行コストを払う価値は十分にあります。
② 【外部委託あり・バックエンドが巨大】なら ➡︎「サブモジュール」で部分解決
「フロントエンドは外部委託している」「バックエンドのコードベースが巨大すぎてCIが死ぬ」といった制約があるなら、無理なモノレポ化は危険です。今の分割構成を維持しつつ、「型定義・スキーマ」などAIに読ませたい文脈だけをサブモジュール化して、最小限のコストでAIの恩恵を受けましょう。
③ 【既存モバイルアプリ・複雑なCI】なら ➡︎「完全分離」のまま維持
すでにFirebase Test Labなどの重厚なモバイル独自パイプラインが組まれている場合、AIのためにリポジトリを統合すると、CI/CDのメンテコスト増大という痛いしっぺ返しを食らいます。この場合は構成を変えず、プロンプトの工夫や、人間が適切にコンテキストを切り出す運用でカバーするのが正解です。
笹川




