DDD(ドメイン駆動設計)でドメインモデルの切り出し方について質問です。
はじめまして。
DDDやクリーンアーキテクチャについてある程度勉強をして、それぞれのオブジェクトがどういう役割を担うのかは何となく理解したというレベルにいます。
ただ、実際のサービスをDDD+クリーンアーキテクチャで設計をしようとしてもドメインモデルが何になるのかをいまいちつかめません。
Instagramっぽいサイトを例にして考えています。
”ユーザーのプロフィールを見る”というユースケースを実装します。
プロフィールで見れる情報として今回は、アイコン、投稿数、フォロワー数、フォロー数、名前、説明文、リンク、投稿した写真一覧を利用します。
閲覧できるプロフィールは自分のプロフィールと相手のプロフィールの2パターンがあって、自分のプロフィールの場合は登録年月日を、相手のプロフィールの場合はそのユーザーをフォローしてるかどうかを表示します。
まず、この場合はユーザーの関心はプロフィールにあるのでプロフィールが一つのドメインモデルになると考えました。
プロフィールはユーザーの登録情報だけで成り立っているものではなく、投稿した写真にも関係があります。
なのでプロフィールはユーザーエンティティをルートとした集約だと考えます。
ただ、これ以上どうやってモデルに落としこむのか考えてもさっぱりわかりません。
ユーザーや写真はエンティティになりそうだな、とかぐらいは考えつくのですが・・・
プロフィールというドメインモデルはどんな属性を持ちどんな振る舞いをするのか、ユースケースは何をするのかなど全然分かりません。
おそらく実際の設計パターンを何回も見ていくうちに感覚を掴めるようになるかと思うのですが・・・
この場合はどんな設計にするべきなのか教えて下さい。