【ものれぽ】

モノレポ とは?

最終更新:
💡 複数のプロジェクトを、一つのリポジトリへ

複数のプロジェクトを一つのリポジトリで管理する方式。共通コードや一括変更の利点、依存関係・CI・公開の設計を解説します。

📌 このページのポイント
モノレポ:複数プロジェクトを一つに管理一つのリポジトリWebアプリapps/webAPIapps/api共通ライブラリ:libs/common関連した変更を同じコミットにそろえやすい依存関係・CI・担当範囲を設計公開やデプロイの単位は別に決める
リポジトリの中にアプリとライブラリを置く例です。一つのアプリにするモノリスとは別で、配置だけで依存関係や変更の影響が自動管理されるわけではありません。
ひよこ ひよこ
モノレポは、全部を一つのアプリにすること?
ペンギン先生 ペンギン先生
複数のプロジェクトを一つのリポジトリで管理する方式だよ。Webアプリ、API、共通ライブラリ等を同じ場所で変更管理できる。それぞれを別のアプリとして構成することもできるんだ。
ひよこ ひよこ
一緒に管理すると、何が便利?
ペンギン先生 ペンギン先生
共通コードを見つけやすく、APIとそれを使うアプリ等の関連した変更を同じコミットに揃えやすいよ。ただし、共有してよいコードの範囲や依存関係を決める。置いただけで安全に共有できるわけではないんだ。
ひよこ ひよこ
依存関係も、自動で全部解決する?
ペンギン先生 ペンギン先生
リポジトリを一つにするだけでは、変更の影響まで自動で分からないよ。ワークスペースでローカルのパッケージを関連付けたり、ビルド用の仕組みで依存関係やタスクを管理したりする。機能と設定を区別しよう。
ひよこ ひよこ
毎回すべてをビルドするの?
ペンギン先生 ペンギン先生
全部を対象にする方法も、変更の影響があるプロジェクトに絞る方法もあるよ。後者には依存関係を把握する仕組みやCIの設定が必要。プロジェクトが増えたときの実行時間や、共通ルールの運用も考えるんだ。
ひよこ ひよこ
リリースも、いつも一緒になる?
ペンギン先生 ペンギン先生
リポジトリの構成と、リリースやデプロイの単位は別だよ。個別に公開する構成もできる。外へ配布するパッケージのバージョン管理等が、モノレポにしただけで不要になるわけではないんだ。
もっと詳しく知りたい人へ

モノリスとマイクロサービスは、モノレポの反対?

別の観点です。モノレポはコードの変更管理のまとまり、モノリスやマイクロサービスはアプリの構成や配布等の設計に関わります。リポジトリの数だけでアーキテクチャを決められません。

どのチームでも、一つのリポジトリがよい?

共通コードや関連変更の多さ、権限・担当範囲、ツールとCIの運用等で判断します。複数のリポジトリで独立して管理する方法もあります。プロジェクト数だけで採用の正解を決める方式ではありません。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「モノレポ」って出てきたら「複数のプロジェクトを、一つのリポジトリで管理する方式」と思えばだいたいOK!
📖 おまけ:英語の意味
「Monorepo」 = 一つのリポジトリでの管理
💬 Monoは一つ、repoはrepositoryの短縮形です。コードを保管・変更管理するまとまりの話であり、アプリを一つにまとめるモノリスとは別の分類です。

参考資料

← 用語集にもどる