コードベース

プロジェクトのソースコード全体とその構成・管理方法

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

コードベースとは

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

モノレポ vs ポリレポ

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

モノレポのツール

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

モノレポの構成例

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

コードベースの健全性

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

Twelve-Factor App の原則

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

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

コードベースの成長管理

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

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

関連用語