モノレポ【monorepo】モノリポ/monolithic repository
概要

一般的なソフトウェア開発では、プロジェクトやサービスごとに個別のリポジトリを用意して管理する。モノレポはその対極に位置し、複数のプロジェクトをディレクトリで分けながら一つのリポジトリ内に同居させる。
リポジトリは共通であっても、内部のアプリケーションやサービスはそれぞれ独立してビルドやテスト、デプロイができる構成にしておく。コードをまとめて格納するからといって、すべての機能を一つのプログラムに詰め込む設計を意味するわけではなく、各プロジェクトは引き続き別々に開発・運用される。
モノレポを採用すると、複数のプロジェクトにまたがって使われる共通ライブラリや設定ファイルを一箇所で管理できるため、重複した管理が不要になる。共通部分に変更が生じた場合も、一箇所を修正すれば関係するすべてのプロジェクトに即座に反映される。コード品質チェックツールやテスト設定、CI/CDパイプラインも統一して管理しやすく、設定の更新漏れや不整合が起きにくい。
複数チームが関わる開発でも、あるチームの変更が別の担当部分に及ぼす影響を同一リポジトリ内で一括して確認でき、連携ミスが減る。新たに参加した開発者も、リポジトリを一度取得するだけでシステム全体のコードを手元に揃えられる。米グーグル(Google)社や米メタ(Meta Platforms)社、米マイクロソフト(Microsoft)社などの大規模なソフトウェア企業が長年採用してきたことで広く知られるようになり、近年では中小規模の開発でも採用例が増えている。
一方、リポジトリが巨大化するという課題もある。関係のない変更を含むすべての履歴をローカルに取り込む必要があり、クローン(複製)の取得に時間とストレージを要するようになる。変更の度にプロジェクト全体のテストが走る構成では継続的インテグレーション(CI)の実行時間も長くなりやすく、特定のプロジェクトだけに権限を限定するアクセス制御も難しくなる。これらに対処するため、変更範囲を効率よく検出する仕組みや高速なビルド機能を備えた「Nx」や「Turborepo」「Bazel」などの専用ツールが普及している。なお、モノレポと対比する文脈で、従来通り複数のリポジトリを使い分ける方式のことを「ポリレポ」(polyrepo)あるいは「マルチレポ」(multirepo)と呼ぶことがある。