03. Srcフォルダ
Src/(または src/)フォルダは、本プロジェクトで開発される全てのアプリケーションのソースコードを格納する中心的な場所です。
!!! info "なぜ Src フォルダにソースコードをまとめるのか?" - 関心の分離: ドキュメント (Docs/)、テストコード (Tests/)、設定ファイルなどと、
アプリケーションのソースコード (Src/) を明確に分離することで、
リポジトリ全体の構造が理解しやすくなります。- ビルドプロセスの安定化: ビルドスクリプトやCI/CDパイプラインが、
常に Src/ フォルダを起点として動作するように設定できるため、
ビルド構成がシンプルかつ堅牢になります。- クリーンなルートディレクトリ: リポジトリのルートディレクトリが、
設定ファイルや README.md など、プロジェクト全体に関わるファイルのみで構成され、
クリーンな状態に保たれます。
構成の基本原則
Src/ フォルダ内の具体的な構成は、採用するアーキテクチャや技術スタックによって大きく異なりますが、以下の原則に従うことを推奨します。
-
コンポーネントや機能で分割する: 関連性の高いコードは、同じフォルダにまとめます。例えば、Web API、フロントエンドUI、共通ライブラリなどは、それぞれ専用のサブディレクトリに配置します。
-
命名規則を統一する: フォルダ名やプロジェクト名は、一貫性のある命名規則に従います。これにより、名前からその役割が推測しやすくなります。(例:
YourProject.Api,YourProject.Web,YourProject.Core) -
アーキテクチャを反映させる: クリーンアーキテクチャ、レイヤードアーキテクチャ、マイクロサービスなど、採用するアーキテクチャの構造をフォルダ構成に反映させます。
構成パターン例
以下に、典型的なプロジェクトの種類に応じた Src/ フォルダの構成パターン例を示します。これらはあくまで一例であり、プロジェクトの要件に合わせて最適化してください。
例1: モノリシックなWebアプリケーション (バックエンド + フロントエンド)
Src/
├── YourProject.Api/ # バックエンド (例: ASP.NET Core, NestJS)
│ ├── Controllers/
│ ├── Services/
│ └── YourProject.Api.csproj
│
├── YourProject.Web/ # フロントエンド (例: React, Angular, Vue)
│ ├── components/
│ ├── pages/
│ └── package.json
│
└── YourProject.Core/ # 共通ライブラリ (ドメインモデル、ユーティリティ)
├── Entities/
└── YourProject.Core.csproj
例2: Webフロントエンド (Node.js/TypeScript)
Src/
├── app/ # アプリケーションのメインロジック
│ ├── components/ # 再利用可能なUIコンポーネント
│ ├── features/ # 機能ごとのモジュール
│ ├── pages/ or routes/ # ページコンポーネントやルーティング定義
│ └── main.ts # アプリケーションのエントリーポイント
│
├── lib/ # 共通のライブラリやユーティリティ
│
└── public/ # ビルド処理を介さない静的アセット (画像、フォントなど)
└── favicon.ico
例3: ライブラリ開発
Src/
├── YourProject.Library/ # ライブラリ本体のソースコード
│ ├── YourProject.Library.csproj
│ └── ...
│
└── samples/ # ライブラリの利用方法を示すサンプルプロジェクト
└── SampleApp/
├── Program.cs
└── SampleApp.csproj
Note
重要なのは、特定のパターンを盲目的に採用することではなく、プロジェクトのチームが合意した、一貫性のあるルールに基づいて構成されていることです。