Value Object・Entity・Aggregate - DDD のモデル構成要素

Value Object・Entity・Aggregate(集約)は、DDD(Domain-Driven Design、ドメイン駆動設計)でモデルを組み立てる時の構成要素です。Value Object は属性だけで決まる値、Entity は属性が変わっても同じ物として追跡する対象、Aggregate は不変条件(操作が終わった時点で成り立っていなければならない規則)を守るために、その 2 つをまとめた境界を指します。 ...

2026年8月5日 · 更新: 2026年9月14日 · 16 分 · nchika

Bounded Context - モデルが通用する範囲を区切る

Bounded Context(境界づけられたコンテキスト)とは、あるモデルが定義され、そのまま適用できる範囲を明示した境界です。Evans 氏の DDD Reference は「特定のモデルが定義され適用される境界の記述であり、多くはサブシステム、または特定のチームの担当範囲となる」と定義しています。ここでのモデルは、業務の概念を表す型と、その概念が守る規則の集まりを指します。境界の中では「注文」という語が 1 つの意味に定まり、境界の外に出た時、同じ語が同じ意味だとは仮定しません。 ...

2026年8月6日 · 更新: 2026年9月14日 · 11 分 · nchika

Repository - Aggregate の永続化を隠す境界

Repository とは、Aggregate(集約)を 1 つの単位として保存・復元する仕組みで、呼び出す側からはメモリ上のコレクションのように見えます。一般には「ドメイン層とデータマッピング層の仲介役で、コレクションのようなインターフェースを通じてドメインオブジェクトにアクセスさせるもの」と定義されています(Martin Fowler 氏の書籍『Patterns of Enterprise Application Architecture』所収、Edward Hieatt 氏と Rob Mee 氏による Repository)。 ...

2026年8月6日 · 更新: 2026年9月3日 · 16 分 · nchika

Domain Event - ドメインで起きた事実を伝える

Domain Event とは、ドメインの中で既に起きた出来事を表すオブジェクトです。過去の記録なので通常は不変で、出来事が起きた時刻と、関与したエンティティの識別子を持ちます。ここでは、1 つの Bounded Context の中で Aggregate 同士を繋ぐ用途と、Bounded Context をまたいで他のシステムに伝える用途を扱います。 ...

2026年8月7日 · 更新: 2026年9月14日 · 14 分 · nchika

Anticorruption Layer - 上流のモデルを自分の語に翻訳する

Anticorruption Layer(腐敗防止層。Anti-Corruption Layer とも綴り、ACL と略す)とは、他のシステムを利用する下流が自分の責任で置く隔離層で、相手のモデルを自分のドメインモデルの語に翻訳します。Evans 氏の DDD Reference は「下流のクライアントとして、上流のシステムの機能を自分自身のドメインモデルの言葉で自分のシステムに提供する隔離層を作れ」と述べ、ACL は相手の既存のインターフェース越しに通信するため、相手のシステムへの変更をほとんど、あるいは全く必要としないとしています。 ...

2026年8月8日 · 更新: 2026年9月14日 · 16 分 · nchika
【Golang】Value Objectを生成するvogenライブラリをお試しで作った話

【Golang】Value Objectを生成するvogenライブラリをお試しで作った話

前書き:GolangでValue Objectを作りづらい 2025年の抱負で「ブログのアウトプットを増やす(リンク先の末尾を参照)」と宣言したので、早速アウトプットします。 今回取り扱うValue Objectとは、主に以下のような特徴を持ちます(本記事の本題と関係ない要素は意図的に省略しています) ...

2024年12月28日 · 6 分 · nchika