モノレポ

モノレポ

複数アプリ(または複数パッケージ)を1つのリポジトリにまとめ、まとめて管理する開発スタイル。

何がうれしいか

  • 依存関係の一元管理:ライブラリ・アプリ間で同じバージョンを使いやすい(React/TypeScript/ESLint など)
  • 変更の同期が速い:共通ライブラリの変更を、同じPRでアプリ側まで一緒に直せる
  • 横断的な品質担保:lint / test / build / 型チェックをリポジトリ全体で揃えられる
  • 開発体験の統一:共通の開発コマンド、共通のCI、共通のテンプレート
  • よくある構成例

  • apps/:実際に動くアプリ(例:web、admin、api)
  • packages/:共有パッケージ(例:ui、utils、config、eslint-config)
  • repo/
    	apps/
    		web/
    		admin/
    	packages/
    		ui/
    		utils/
    		config/

    運用上の注意点(落とし穴)

  • ビルドが重くなりがち:影響範囲が広いので、キャッシュや差分ビルドが重要
  • 依存の境界が曖昧になりやすい:ルール(import禁止、依存方向、public API)を決める
  • 権限・公開範囲:社外公開するコードが混ざる場合は分離やアクセス制御が必要
  • ツール選定が鍵:ワークスペース管理、タスク実行、キャッシュの仕組みで体験が変わる
  • 関連キーワード

  • ワークスペース(npm/yarn/pnpm)
  • タスクランナー(例:Turborepo / Nx)
  • 共有UI・共通設定(ESLint/Prettier/tsconfig)
  • 依存グラフ / 影響範囲(affected)