1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🎉 楽しく学ぶDDD(ドメインモデルの設計編)!

Last updated at Posted at 2025-03-28

:cherry_blossom: はじめに

こんにちは!DDDを楽しく学んだところで、今日はさらにステップアップして「ドメインモデルの設計方法」を詳しく見ていきましょう!

📚 ドメインモデルの設計ってどうやるの?

ドメインモデルを作るときには、「モノ(エンティティ・値オブジェクト)」と「コト(操作や振る舞い)」を具体的に整理していきます。

🧸 ドメインモデルを作る3つのポイント!

① エンティティ(識別できるモノ)

エンティティは「それがどれなのかを識別できるモノ」のこと。

例えば学校なら「生徒」や「先生」がエンティティ。生徒Aさんと生徒Bさんは別の人だよね。それをちゃんと区別するために、IDや番号を使うよ。

🎯 エンティティの例(生徒)

  • 識別子(ID、生徒番号)
  • 属性(名前、学年、クラス)
  • 振る舞い(授業を受ける、宿題をする)

② 値オブジェクト(区別が必要ないモノ)

値オブジェクトは、特に区別する必要がない情報のこと。

例えば「クラスの名前」は値オブジェクト。1年1組という名前は、どれも同じ意味で使えるよね!

🍀 値オブジェクトの例(クラス名)

  • 値(「1年1組」などのクラス名)
  • 不変条件(1年~6年の範囲であること)

③ 情報(属性)と操作(振る舞い)

ドメインモデルでは、各エンティティや値オブジェクトがどんな情報を持っているか(属性)、どんな操作や動きができるか(振る舞い)を明確にします。

🌈 情報(属性)の例

  • 生徒の名前、生徒番号、クラス
  • 教室番号、設備の有無

🌟 操作(振る舞い)の例

  • 生徒が授業を受ける、宿題を提出する
  • 教室で授業を開催する、掃除をする

④ 不変条件(必ず守るルール)

ドメインモデルには、必ず守るルール「不変条件」があるよ!

例えば、学校のクラス名なら「1年~6年までしか使えない」など、絶対に守らないといけない条件があるんだ。

📝 不変条件の例

  • 生徒番号は重複しない
  • クラスは1年~6年のみ使える

🎨 実際の設計手順は?

  1. ドメインを整理する(学校なら生徒、先生、教室など)
  2. エンティティと値オブジェクトを決める(識別が必要かどうかで分ける)
  3. 各オブジェクトが持つ情報(属性)と操作(振る舞い)を決める
  4. 不変条件(絶対に守るべきルール)を設定する

🚀 ドメインモデルを設計するメリット

  • 明確なルールができて、混乱が減る!
  • チームみんなが同じ理解でスムーズに作業できる!
  • 後から機能を追加しても、きれいに整理できる!

次はリポジトリの設計編です✨😄🚀

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?