第4章 まずは物理で守る:Visual Studioでプロジェクト分割📦🛠️
この章は「依存関係ルールを守れる“形”を先に作る」回だよ〜😊✨ まだ参照ルール(どこがどこを参照してOK/NGか)は深追いしないで、まずは分けるだけやるよ📦🧱
2026/01/18 時点だと、Visual Studio 2026 の January Update 18.2.0(2026/01/13) が出てるよ🆕✨ (Microsoft Learn) .NET は .NET 10(LTS, 2025/11/11) が現行で、最新パッチは 10.0.2(2026/01/13) だよ🧩 (Microsoft) C# は C# 14 を .NET 10 SDK / VS 2026 で試せるよ✍️ (Microsoft Learn)
4.1 今日のゴール🎯✨

-
Solution の中に、**4つのプロジェクト(箱)**を作る📦📦📦📦
- Domain / Application / Infrastructure / UI(ここでは API で代用)
-
「この箱に入れるものはコレだよね」って地図ができる🗺️😊
-
まだ参照は最小限(もしくはゼロ)でOK🙆♀️
- 参照の正しい向きは第5章でガッツリやるよ🚦➡️
4.2 なんで“物理で分ける”と強いの?💪📦
同じプロジェクト内で namespace だけ分けても…
- うっかり
using追加でズブズブ混ざる😇🔗 - 「ちょっと便利だから」で UI から DB に直行しがち🚗💨
- チームだとさらに混ざりやすい(レビューで見落ちる)👀💦
でもプロジェクトが分かれてると…
- 参照しない限り触れない(物理バリア!)🚧✨
- 「置き場所に迷ったら、責務を考える」癖がつく🧠🌱
- 第5章以降の“参照ルール”が効く土台になる🧱😊
4.3 この章で作るおすすめ構成(例)🧅🏗️
名前は例だよ〜(好きに変えてOK)😊💖
-
MyApp.sln(ソリューション) -
src/MyApp.Domain(Class Library)🏛️MyApp.Application(Class Library)🧠MyApp.Infrastructure(Class Library)🧰MyApp.Api(ASP.NET Core Web API)🌐
ポイントはコレ👇✨
- Domain:長生きするルール(業務の言葉)📜
- Application:ユースケース(やりたいことの手順)🧭
- Infrastructure:DB/外部API/ファイルなど実装の詳細🔌
- Api(UI):外界と話す窓口(HTTP)🚪
4.4 Visual Studio(GUI)で作る手順🖱️✨
① まずソリューションを作る📁✨
- Visual Studio を起動
- Create a new project
- テンプレで Blank Solution(空のソリューション)を選ぶ🧺
- 名前:
MyApp(例) - 場所:好きな作業フォルダ(例:
C:\dev\MyApp)📍
ここで「空の器」を作ってから、プロジェクト(箱)を追加していくよ〜😊📦
② Domain を追加(Class Library)🏛️📦
- Solution を右クリック → Add → New Project
- Class Library を選ぶ
- 名前:
MyApp.Domain - フォルダ:
src\MyApp.Domain(後で見やすい!)🧹✨ - 作成!
③ Application を追加(Class Library)🧠📦
同じ手順で追加してね😊
- 名前:
MyApp.Application - フォルダ:
src\MyApp.Application
④ Infrastructure を追加(Class Library)🧰📦
同じく追加😊
- 名前:
MyApp.Infrastructure - フォルダ:
src\MyApp.Infrastructure
⑤ UI枠として Api を追加(Web API)🌐🚪
- Solution 右クリック → Add → New Project
- ASP.NET Core Web API を選ぶ
- 名前:
MyApp.Api - フォルダ:
src\MyApp.Api - フレームワークは .NET 10 を選ぶ🧩✨(LTS) (Microsoft)
- 作成!
⑥ Solution Explorer を整える(見た目も設計)🧹✨
Solution の下に「Solution Folder」を作ると気持ちいいよ〜😊🎀
-
Solution を右クリック → Add → New Solution Folder
01_Core(Domain, Application)02_Adapters(Infrastructure, Api)
フォルダにドラッグ&ドロップで移動📦➡️📁
⑦ 起動プロジェクト設定(Api を起動)▶️✨
MyApp.Apiを右クリック → Set as Startup ProjectF5(デバッグ実行)で起動できたら勝ち🏆🎉
4.5 “箱”の実感を得るミニコード(まだ依存させない)🧪✨
Domain に “それっぽい型” を1個だけ置こう🏛️
MyApp.Domain に OrderId.cs を追加:
namespace MyApp.Domain;
public readonly record struct OrderId(Guid Value);
- ここは「業務の言葉」っぽい型が置きやすいよ😊🗣️
Application に “ユースケースの空箱” を1個🧠
MyApp.Application に PlaceOrder.cs:
namespace MyApp.Application;
public sealed class PlaceOrder
{
// まだ中身なし!この章は「箱を作る」が主役✨
}
Infrastructure に “ここに実装が溜まる予定” を匂わせる🧰
MyApp.Infrastructure に InfrastructureMarker.cs:
namespace MyApp.Infrastructure;
public sealed class InfrastructureMarker { }
Api は起動できればOK🌐
テンプレのままでOKだよ😊 「Swagger が開く」「/weatherforecast が動く」くらいで十分🎉
4.6 演習:テンプレで土台を作る🧱📝(チェック式✅)
やることはシンプル!
- 空の Solution を作った📁✨
-
Domain/Application/Infrastructure/Apiの 4プロジェクトを追加した📦📦📦📦 -
src配下に整理できた🧹 - Solution Folder で見た目を整えた📁🎀
- Api を Startup にして起動できた▶️🎉
- Solution 全体で Build が通った🔨✅
できたらスクショ撮って残すと、次章で効くよ〜📸✨
4.7 VS Code(CLI)で一気に作る版💻⚡
「操作よりコマンド派!」ならこれが早いよ😊✨
dotnet sln でソリューションにプロジェクトを追加できるよ📦➡️🧩 (Microsoft Learn)
PowerShell で(場所は好きに)👇
mkdir MyApp
cd MyApp
mkdir src
dotnet new sln -n MyApp
dotnet new classlib -n MyApp.Domain -o src/MyApp.Domain
dotnet new classlib -n MyApp.Application -o src/MyApp.Application
dotnet new classlib -n MyApp.Infrastructure -o src/MyApp.Infrastructure
dotnet new webapi -n MyApp.Api -o src/MyApp.Api
dotnet sln add src/MyApp.Domain/MyApp.Domain.csproj
dotnet sln add src/MyApp.Application/MyApp.Application.csproj
dotnet sln add src/MyApp.Infrastructure/MyApp.Infrastructure.csproj
dotnet sln add src/MyApp.Api/MyApp.Api.csproj
dotnet build
ちなみに
dotnet slnにはmigrateもあって、.sln→.slnxへの移行もできるよ(上級者向けの話なので今は「へぇ〜」でOK)😊🧠 (Microsoft Learn)
4.8 よくあるつまずきポイント集😵💫🧯
✅ 1) プロジェクト名とフォルダ名がズレて迷子📛🌀
MyApp.DomainがMyApp.Domain1とかになってると、後で地味に苦しい😇 → 早めに整えるのが吉🧹✨
✅ 2) Api だけ起動して、他プロジェクトが置き去り🐣
- ちゃんと「Solution 全体で Build」してね🔨✅
- 第5章で参照を貼り始めると、ここが効いてくるよ😊
✅ 3) 「とりあえずShared作ろ」欲が出る📦😈
- ここは我慢!✋💦
- Shared の扱いは後半章でちゃんとやるよ(地雷回避)🧨➡️💖
4.9 AI活用(Copilot / Codex)で“設計の地図”を固める🤖🗺️✨
Visual Studio 2026 は AI 統合が強くなってる流れだよ🧠✨ (Microsoft Learn) この章では「構成レビュー」と「命名」を AI に手伝わせるのが相性いいよ😊💕
そのまま投げてOKなプロンプト例🪄💬
- ソリューション構成の提案
- 「
Domain/Application/Infrastructure/Apiの4プロジェクトで、初心者が迷わないフォルダ構成と命名規則を提案して。理由も短く。」
- 置き場所判定ゲーム(超おすすめ)
- 「次のクラスはどのプロジェクトに置くべき?理由も:Order、OrderService、OrderRepository、OrderDto、DbContext、OrderController」
- README の雛形
- 「このソリューションの目的、各プロジェクトの責務、禁止事項(例:Domain にDBアクセス書かない)を README.md にまとめて」
- Solution Folder の整理案
- 「Solution Explorer の表示が散らかってる。Solution Folder の切り方を2案出して」
- 次章への布石
- 「次に“参照ルール”を決めたい。一般的な依存方向の候補を図(テキストで)で出して」
4.10 この章のまとめ🎀✨
- 依存関係ルールって、まずは守れる形を作るのが近道📦🧱
- Visual Studio でも VS Code でも、4つの箱を作れたらOK😊🎉
- 次章でいよいよ「どこがどこを参照していい?」の交通整理をするよ🚦➡️✨
次は第5章いく?😊💨 それとも、この第4章の演習を「注文(Order)」題材でフォルダ名まで固定した“完成版テンプレ”として出しちゃおうか?🛒📦✨