はじめに | ドメイン駆動設計ハンズオン

参考書籍一覧(Amazon アソシエイトリンク)

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: フィーチャーツリーを作る