コードベースとは - リポジトリ構成とモノレポ/ポリレポの選び方

コードベースはプロジェクトのソースコード全体を指す用語。モノレポ vs ポリレポの判断基準・コードベースの健全性を保つリファクタリング戦略を解説

開発ツールアーキテクチャ

コードベースとは

コードベース (Codebase) は、プロジェクトのソースコード全体を指す。Twelve-Factor App の第 1 原則「1 つのコードベースをバージョン管理し、多数のデプロイを行う」が基本方針。

モノレポ vs ポリレポ

モノレポとポリレポの違いを以下にまとめる。

観点モノレポポリレポ
構成1 リポジトリに全プロジェクトプロジェクトごとにリポジトリ
コード共有容易 (同一リポジトリ)パッケージとして公開
CI/CD変更の影響範囲を検出して実行リポジトリごとに独立
依存管理統一バージョンリポジトリごとに管理
採用企業Google, Meta, MicrosoftNetflix, Amazon

モノレポのツール

モノレポのツールを以下に示す。

ツール特徴
Turborepo高速ビルドキャッシュ
Nx依存グラフ、影響範囲分析
pnpm workspacesパッケージ管理
Lernanpm パッケージの公開

モノレポの構成例

モノレポの構成例を図で示す。

my-project/
  packages/
    shared/        # 共通ライブラリ
    frontend/      # Next.js アプリ
    backend/       # Lambda 関数
    infra/         # SAM テンプレート
  package.json     # ルートの設定
  turbo.json       # Turborepo 設定

コードベースの健全性

コードベースの健全性を以下にまとめる。

指標健全不健全
ビルド時間数分数十分
テスト実行時間数分数十分
依存パッケージ最新に近い数年前のバージョン
Dead Code少ない大量に残っている
コードカバレッジ70%+10% 未満

Twelve-Factor App の原則

Twelve-Factor App の原則を図で示す。

1 コードベース = 1 アプリケーション
  ├── dev デプロイ
  ├── stg デプロイ
  └── prod デプロイ

環境ごとの差異は環境変数で管理 (コードは同一)

コードベースの成長管理

  • Dead Code を定期的に削除
  • 依存パッケージを定期的に更新 (Dependabot)
  • モジュール境界を明確にし、循環依存を防ぐ
  • コードオーナーシップを設定 (CODEOWNERS)

コードベースについては関連書籍でも詳しく扱われている。

この記事は役に立ちましたか?

関連用語

関連する記事