モノレポ(Monorepo)
複数のプロジェクトやパッケージを1つのGitリポジトリで管理する手法。コードの共有・一貫したCI/CD・依存関係の統一が容易になる。Turborepo・Nx・Yarnワークスペースで実装される。
モノレポ(Monorepo)とは?
モノレポ(Monorepo)は、複数のプロジェクト・アプリ・パッケージを1つのGitリポジトリで管理するアーキテクチャです。Google・Meta・Microsoftなど大規模組織が採用しています。
マルチリポ(Polyrepo)との比較
| 項目 | マルチリポ(Polyrepo) | モノレポ |
|---|---|---|
| リポジトリ数 | プロジェクトごとに分割 | 1つに集約 |
| コード共有 | npmパッケージとして公開 | 直接インポート |
| CI/CD | プロジェクトごとに設定 | 一元管理 |
| 変更影響範囲 | 見えにくい | 一目で把握 |
| リポジトリサイズ | 小さい | 大きくなる |
主なモノレポツール
| ツール | 特徴 |
|---|---|
| Turborepo | Vercel製・高速・設定が簡単 |
| Nx | 多機能・プラグインが豊富 |
| Yarn Workspaces | シンプルな依存関係共有のみ |
| pnpm Workspaces | 効率的なディスク使用 |
典型的なモノレポ構成
my-monorepo/
├── apps/
│ ├── web/ # メインWebアプリ
│ └── mobile/ # モバイルアプリ
├── packages/
│ ├── ui/ # 共通UIコンポーネント
│ ├── utils/ # 共通ユーティリティ
│ └── config/ # 共通設定(ESLint・TypeScript等)
└── package.json
まとめ
モノレポはフロントエンドとバックエンドで共通の型定義を使いたい場合や、複数アプリで同じUIコンポーネントを共有したい場合に特に有効です。
関連する用語 (プログラミング)
全33件を見るIT用語: SOLID原則とは|オブジェクト指向設計の5つの基本原則
保守性の高いソフトウェア設計のためのSOLID原則(単一責任・開放閉鎖・リスコフ置換・インターフェース分離・依存性逆転)を解説。
Go / Golang (ゴー言語)
Google社が開発した、処理速度が超絶爆速で、大量のアクセスに強い現代的なプログラミング言語。
Webpack(ウェブパック)
JavaScriptアプリの依存関係を解析して複数のファイルを1つ(または少数)のバンドルにまとめるモジュールバンドラー。CSS・画像等も処理でき、フロントエンドビルドツールの長年の標準。
JAMstack
JavaScript・APIs・Markupの頭文字をとったWebアーキテクチャ。ビルド時に静的HTMLを生成し、動的機能はAPIで補完することで高速・安全・スケーラブルなWebサイトを実現する。
Web Components
ブラウザネイティブの技術でカプセル化された再利用可能なUIコンポーネントを作成する仕様。Custom Elements・Shadow DOM・HTML Templatesの3つの技術で構成され、フレームワーク非依存で動作する。
WebAssembly(Wasm)
ブラウザ上でネイティブに近い速度で実行できるバイナリ命令形式。C・C++・Rustなどのコードをブラウザで動かすことができ、ゲーム・動画編集・CADなど計算負荷の高いWebアプリに使われる。