Skip to content

DDD完全ガイド

DDDの実践的な実装方法を、実務で使える実装例とベストプラクティスとともに詳しく解説します。

DDDの構成要素
├─ エンティティ
├─ 値オブジェクト
├─ ドメインサービス
├─ リポジトリ
└─ アグリゲート
// エンティティ
class User {
constructor(
private id: UserId,
private name: UserName,
private email: Email
) {}
changeName(newName: UserName): void {
this.name = newName;
}
}
// 値オブジェクト
class Email {
constructor(private value: string) {
if (!this.isValid(value)) {
throw new Error('Invalid email');
}
}
private isValid(email: string): boolean {
return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);
}
equals(other: Email): boolean {
return this.value === other.value;
}
}

DDD完全ガイドのポイント:

  • エンティティ: 識別子を持つオブジェクト
  • 値オブジェクト: 値そのものが識別子
  • ドメインサービス: ドメインロジック
  • アグリゲート: 関連するオブジェクトの集約

適切なDDDにより、ドメインを反映したシステムを構築できます。