はじめに | ドメイン駆動設計ハンズオン
Prev: モデリング手法
ここから数章に渡って、ECサイトを題材にドメイン駆動設計のハンズオンを行っていきます。
フィーチャーツリーを作るでは、作ろうとしているECサイトをフィーチャーツリーでモデリングして機能構造を明らかにします。これによってModule(Package)に対応づける候補を明らかにします。
ユースケースの洗い出しでは、ECサイトにどのようなユーザー操作があるのかを明らかにします。これによってApplicationServiceに対応づける候補が明らかになります。
管理者が商品を登録するでは、1つのユースケースを例に必要なデータモデリングを行います。Aggregate、Entity、Repositoryを作成します。保存のためのAggregateを構築します。
ユーザーが商品を検索するでは、同じように別のユースケースを例にデータモデリングを行いAggregateなどを作成します。出力のためのAggregateを構築し、CQRSについても言及します。
管理者がセール情報を登録するでも、同じように別のユースケースを例にデータモデリングを行います。多少複雑な保存のためのAggregateを構築します。機能が割り込みで追加された場合を想定しています。
「ユーザーが商品を検索する」を再モデリングでは、「管理者がセール情報を登録する」ユースケースで変更が必要になった実装済みのDomainModelの再モデリングを行います。ここで、ビジネスルールとデータディクショナリについて考え、ValueObjectを作成します。
ユーザーがショッピングカートに商品を追加するでは、DomainModelを作らないTransactionScriptの実装を行います。
ユーザーがショッピングカートの中身を確認するでは、すでに分析したビジネスルールと作成したValueObjectを他のAggregateと共有するために、フィーチャーツリーの見直しを行い、ValueObjectとSpecificationの移動を行います。
Next: フィーチャーツリーを作る