• トップ
  • ブログ一覧
  • AI過渡期の今だからこそ考える!コーディングエージェント導入時のリポジトリ戦略(モノレポ vs サブモジュール vs 完全分離)
  • AI過渡期の今だからこそ考える!コーディングエージェント導入時のリポジトリ戦略(モノレポ vs サブモジュール vs 完全分離)

    ずお(エンジニア)ずお(エンジニア)
    2026.04.24

    IT技術

    はじめに

    笹川笹川
    (株)ライトコードの笹川です!今回はペアブログということで、ずおさんと一緒にお届けします。
    今はまさにAIコーディングエージェント利用の過渡期。エージェントがデファクトスタンダードになる前に、「既存プロジェクトにエージェントを導入する場合、リポジトリ構成はどうすべきか?」という、現場ならではのリアルな課題について議論したいと思います。

    ずおずお
    皆さんこんにちは、フロントエンドエンジニアのずおです!
    僕自身、最近Claude Codeなどを用いたAI駆動開発の検証を進めています。本日はお互いの実体験を交えながら、現場で本当に使えるアプローチを探っていきます!

    1. モノレポ化の本来の目的と、AI時代における「新たな推進力」

    ずおずお
    そもそもモノレポ化って、これまでも「フロントエンドとバックエンドでの型情報の共有」や、「依存関係の一元管理」といった文脈でメリットが語られてきましたよね。

    笹川笹川
    そうですね。ただ、既存の分割されたリポジトリを統合するにはGit履歴の移行やCI/CDの再構築などハードルが高く、「分かった上で見送る」プロジェクトも多かったはずです。

    しかし、コーディングエージェントを利用するようになり、「エージェントにシステム全体のコンテキストを効率よく理解させる」という新しい観点から、モノレポの価値を再評価する必要が出てきました。

    ずおずお
    既存の分割リポジトリが引き起こす「コンテキストの浪費」

    既存プロジェクトでWeb(FE)、API(BE)、モバイルアプリのリポジトリが完全に分かれていると、AIの能力を下げる「コンテキストの浪費」が発生します。

    リポジトリが別れている場合、人間がプロンプトで「別のリポジトリにあるこのAPI定義を読んで、こちらの型を直して」と前提条件を説明する必要があります。これは人間の手間の浪費であると同時に、エージェントの限られたコンテキストウィンドウ(読み込めるトークン数)の無駄遣いにも繋がります。

    笹川笹川
    さらに、エージェントに不要なファイルまで読み込ませるとノイズになり、コンテキストを見失ってハルシネーション(誤ったコード生成)を引き起こしやすくなります。結果として、プロンプトの修正と再生成によるトークンと時間の浪費が多発します。

    ローカル内で相対パスを指定して無理やり相互参照させる運用もありますが、チーム開発でのディレクトリ差異に弱く、CI/CD上でもビルドがコケやすいため、技術的負債になりがちです。

    2. 【小規模・新規】コンテキストを極限まで「節約」するモノレポ

    ずおずお
    そうした無駄を省き、AIの力を最大限に活かすなら、小規模や新規プロジェクトにおいては「モノレポ」がおすすめです。全てのコードが1箇所にあるため、エージェント自身がワークスペース内の依存関係を自動的に辿ってくれます。

    笹川笹川
    最小のプロンプトで効率的なリファクタリングを

    モノレポなら、プロンプトで前提条件を長々と書く必要がなくなります。例えば以下のような構成です。

    1/my-project
    2├── backend/   # Go (API, DBマイグレーション)
    3├── frontend/  # React (Web UI)
    4└── mobile/    # Android (モバイルUI)

    この状態で「プロフィールに『誕生日』フィールドを追加して」と指示を出すだけで、GoのDBマイグレーション、APIのレスポンス修正、Androidのデータクラス修正まで、一貫した修正案を出してくれます。この開発体験の良さは、今すぐ享受すべきメリットです。

    3. 【検証】実際に測ってみた!モノレポ vs 完全分離のコスト差

    ずおずお
    ここまで「コンテキストの節約」と言ってきましたが、実際どれくらいの差が出るのか気になりますよね。そこで、同じタスクをモノレポと完全分離の両方でClaude Codeに実行させて、トークン消費量を実測してみました!

    笹川笹川
    検証条件は以下の通りです。
    タスク:ユーザープロフィールに誕生日(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.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の壁。サブモジュールが活きるケース

    ずおずお
    一方で、関わる人数が多い大規模プロジェクトでは、いきなり全コードをモノレポ化するのは現実的ではありません。

    笹川笹川
    権限管理とCI/CD肥大化の課題

    フロントエンドを外部委託している場合など、「バックエンドのコアなコードは見せられない」という要件が発生します。さらに、すべてのコードが一箇所に集まると、ちょっとしたWeb側のテキスト修正でAndroidのビルドテストまでトリガーされるなど、GitHub Actionsのコストが跳ね上がる問題に直面します。

    ずおずお
    そこで、独立性を保ちつつAIの恩恵を受けるには、「APIのスキーマ定義(GraphQLやOpenAPIなど)のみを別リポジトリにし、各リポジトリからGitサブモジュールとして読み込む」アプローチが非常に有効です。

    1/frontend-repo
    2├── src/
    3└── schema/ (サブモジュールとして /schema-repo をマウント)

    笹川笹川
    これでエージェントに必要な型情報だけを渡せますね。ただ、サブモジュールにも無視できない運用コストがあります。

    一番の課題は「更新時の2段階コミット」です。サブモジュール側を更新した場合、親リポジトリ側でも「新しいコミットハッシュを参照するためのコミットとPR」を毎回作成する必要があり、日常的な開発体験(DX)が少し落ちます。

    ずおずお
    新しく参画したメンバーがclone時に--recursiveを付け忘れてビルドがコケるのも「あるある」ですよね(笑)。

    笹川笹川
    ええ。インフラ設定も複雑化するため、「権限分離」や「CI/CDの実行時間悪化」といった明確な理由がない限りは、運用手順がシンプルなモノレポに寄せておくのが定石です。

    5. 【コラム】クロスプラットフォームFWとAIの相性

    ずおずお
    モバイルアプリ側にクロスプラットフォームFWを採用している場合はどうですか?コードベース上はiOSもAndroidも同居していますよね。

    笹川笹川
    AIとの相性で言うと、クロスプラットフォームFWは実質的に「天然のモノレポ」として機能するので、かなり扱いやすいですね。コードが一つにまとまっている分、エージェントもコンテキストを把握しやすいです。

    ただ、インフラ面では少し注意が必要です。ソースコードは共通でも、ビルドの仕組みはiOSとAndroidで異なりますよね。なので、「コード生成はモノレポとしてAIの恩恵を受けつつ、CI/CD周りはOSごとにしっかり分けて組む」といった構成にするのが現実的かなと思います。

    6. 【既存・複雑なCI】あえて「完全分離」を維持すべきケース

    笹川笹川
    コラムでお話ししたインフラ面の事情にも関連しますが、既存プロジェクトで無理にモノレポやサブモジュール化を進めると、かえって開発効率が落ちるケースがあります。特に「モバイルアプリを含む複雑な構成」の場合は、「完全分離」を維持すべきですね。

    ずおずお
    なるほど。具体的にどういった理由で分離したままが良いんでしょうか?

    笹川笹川
    一番の理由は、リリースサイクルの違いと重厚なCI/CDパイプラインです。Web(FE/BE)は1日に何度もデプロイできますが、モバイルアプリはストアの審査があってタイミングが非同期ですよね。

    ずおずお
    たしかに、Webとアプリでリリースの歩幅が全然違いますね。

    笹川笹川
    ええ。それに加えて、AndroidのCI/CDだとFirebase Test LabでUIテストを回すことが多いですが、テストが増えるとタイムアウトしてしまいます。それを回避するために、パッケージごとにテスト実行を分散(並列化)させるような、泥臭くて高度なパイプライン設計が求められます。

    ずおずお
    あー……それをWebと同じワークフロー(モノレポ)に無理やりまとめようとすると……

    笹川笹川
    はい、CIのメンテナンスコストが跳ね上がって完全に破綻します(笑)。なので、モバイル独自の複雑なデプロイフローが既に組まれているなら、下手にAIのためだけに統合しようとせず「完全分離」のまま進めるのが正解です。

    7. 結論:今の構成を変えてまで移行すべきか?(意思決定ガイド)

    ずおずお
    なるほど!それぞれのメリット・デメリットは分かりました。でも、読者の方が一番悩んでいるのは「じゃあ、既存の分割されたリポジトリを、わざわざ工数をかけてまでモノレポやサブモジュールに移行するべきか?」という点だと思います。

    笹川笹川
    そこが一番の悩みどころですよね。既存プロジェクトにおける「AIを見据えたリポジトリ戦略の判断基準」は、以下のフローで決断することをおすすめします。
    ① 【Web中心でCI/CDがシンプル】なら ➡︎「モノレポへ移行」の価値あり!
    既存のWebプロジェクト(FE/BE)で、CI/CDの設定がそこまで複雑でないなら、今すぐモノレポに統合するROI(投資対効果)は非常に高いです。エージェントが全体を把握できるようになるだけで、今後の開発スピードが劇的に上がるため、移行コストを払う価値は十分にあります。

    ② 【外部委託あり・バックエンドが巨大】なら ➡︎「サブモジュール」で部分解決
    「フロントエンドは外部委託している」「バックエンドのコードベースが巨大すぎてCIが死ぬ」といった制約があるなら、無理なモノレポ化は危険です。今の分割構成を維持しつつ、「型定義・スキーマ」などAIに読ませたい文脈だけをサブモジュール化して、最小限のコストでAIの恩恵を受けましょう。

    ③ 【既存モバイルアプリ・複雑なCI】なら ➡︎「完全分離」のまま維持
    すでにFirebase Test Labなどの重厚なモバイル独自パイプラインが組まれている場合、AIのためにリポジトリを統合すると、CI/CDのメンテコスト増大という痛いしっぺ返しを食らいます。この場合は構成を変えず、プロンプトの工夫や、人間が適切にコンテキストを切り出す運用でカバーするのが正解です。

    ずおずお
    エージェントの利便性だけを追い求めて盲目的にモノレポ化するのではなく、「自分たちのインフラの複雑さ」と「AI導入によるROI」を天秤にかける必要があるんですね。

    笹川笹川
    その通りです。AIのコンテキストウィンドウをどう節約するかも、結局はシステム設計やモデリングの綺麗さに依存してきます。エージェント時代だからこそ、僕らエンジニアの基礎的なインフラ・設計力が試されていますね。皆さんのプロジェクトの決断の参考になれば嬉しいです!

    ライトコードでは、エンジニアを積極採用中!

    ライトコードでは、エンジニアを積極採用しています!カジュアル面談等もございますので、くわしくは採用情報をご確認ください。

    採用情報へ

    ずお(エンジニア)
    ずお(エンジニア)
    Show more...

    おすすめ記事

    エンジニア大募集中!

    ライトコードでは、エンジニアを積極採用中です。

    特に、WEBエンジニアとモバイルエンジニアは是非ご応募お待ちしております!

    また、フリーランスエンジニア様も大募集中です。

    background