コンテンツにスキップ

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

重要なのは、特定のパターンを盲目的に採用することではなく、プロジェクトのチームが合意した、一貫性のあるルールに基づいて構成されていることです。