導入
第一段階の総仕上げです。これまで学んだ全て——値オブジェクト・エンティティ・ドメインの振る舞い・リポジトリ・テスト——を使い、小さなEC(通販)の注文ドメインを作り切ります。dotnet testで自己採点します。
図解
flowchart LR
VO["Money / Quantity<br/>(値オブジェクト)"] --> OI["OrderItem<br/>(商品×数量)"]
OI --> O["Order<br/>(注文・エンティティ)"]
O --> R["IOrderRepository<br/>(保存の契約)"]
O --> T["テスト(xUnit)<br/>ルールを検証"]
進め方
- スターター
116-capstone/starter.zipを展開し、MiniEc.slnを開く dotnet testを実行し、赤いテストを1つずつ緑にしていく(TDDの実践)- すべて緑になったら完成
学ぶこと(テストで守る仕様)
// テストが要求する仕様の例(これを満たす実装を書く)
// ・Money_マイナス金額は生成できない(値オブジェクト)
// ・Order_合計金額は各明細の(単価×数量)の総和
// ・Order_確定後は明細を追加できない(不変条件)
- 値オブジェクト・エンティティ・ドメインの振る舞いを総動員する
- テストが「実行できる仕様書」として完成の基準になる(TDD)
- リポジトリはインメモリ実装で用意(後からEF Core実装に差し替えてもDomainは無変更)
発展課題
- API化: Minimal APIで
POST /orders(注文確定)エンドポイントを追加する - 永続化: インメモリリポジトリをEF Core + SQLite実装に差し替える(Domain層が無変更で済むことを確認)
まとめ
- 学んだ全要素を統合して注文ドメインを作り切る
dotnet testで仕様を満たすことを自己採点- ここまで来れば「エンジニアとして手を動かす」土台が完成
次章: .NET Frameworkの外——ゲーム開発のUnityへ進みます。