【ものれぽ】

モノレポ とは?

💡 複数プロジェクトを「1つの倉庫」にまとめる管理方式
📌 このページのポイント
モノレポとポリレポの比較 モノレポ single-repo/ packages/app-a packages/app-b shared/ + コード共有が容易 + 一括バージョン管理 - リポジトリが大きくなる ポリレポ repo-app-a 独立リポジトリ repo-app-b 独立リポジトリ repo-shared 独立リポジトリ + チーム独立性が高い + リポジトリが小さい - 依存管理が複雑 VS
モノレポとポリレポの比較
ひよこ ひよこ

モノレポって1つのリポジトリに全部入れるの?

ペンギン先生 ペンギン先生

そう。「フロントエンド・バックエンド・共通ライブラリ」を別々のリポジトリに分けるのがマルチレポ。1つのリポジトリにまとめるのがモノレポ。GoogleやMeta・Airbnbのような大企業が採用していることで有名になった。

ひよこ ひよこ

まとめると何がうれしいの?

ペンギン先生 ペンギン先生

共通コードを変更したとき、全部のプロジェクトへの影響を同じPRで確認できる。別々のリポジトリだと「共通ライブラリを更新して、次に各リポジトリでバージョンを更新して…」という作業が必要になる。モノレポはその手間がなくなる。

ひよこ ひよこ

CIが重くなるの?

ペンギン先生 ペンギン先生

変更が関係しないプロジェクトまで毎回ビルドすると確かに重くなる。TurborepoNxのような「影響を受けるプロジェクトだけビルドする」ツールが発達したから、今はその問題をかなり緩和できるようになってる。

ひよこ ひよこ

モノレポとモノリスって同じ?

ペンギン先生 ペンギン先生

全然違う。モノリスはアプリのアーキテクチャで「1つの大きなデプロイ可能なアプリ」のこと。モノレポはコードの管理方法(どのリポジトリに置くか)の話。モノレポに複数のマイクロサービスを置くこともできるし、マルチレポにモノリスを置くこともできる。この2つを混同している人が現場でも多いから、会話のときは注意が必要なんだ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
モノレポって出てきたら「複数プロジェクトを1リポジトリにまとめる管理方式」と思えばだいたいOK!
📖 おまけ:英語の意味
「Monorepo」 = モノ(単一)リポジトリ
💬 「Monolithic(一枚岩)」ではなく「Mono(1つ)+ Repository(リポジトリ)」。1つのリポジトリで複数パッケージを管理する
← 用語集にもどる