プロローグ ── 集約の「窮屈さ」に名前がついた
シリーズ構成(全7章)
Ch.1 プロローグ(本章) / Ch.2 DDD 集約の復習と限界 / Ch.3 DCB とは何か / Ch.4 DCB の仕組み — タグ・クエリ・楽観的ロック / Ch.5 実践ユースケース / Ch.6 DCB と集約の共存 / Ch.7 エピローグ

この記事で何を扱うか
Domain-Driven Design(DDD)における**集約(Aggregate)**は、一貫性の境界を定める強力な設計パターンだ。しかし実務で集約を使い込むと、必ずぶつかる壁がある。
「この一貫性ルールは、2つの集約をまたいでいる」
たとえば講座予約システムを考える。
ルール1: 1つの講座に登録できる受講者は最大30名
ルール2: 1人の受講者が同時に登録できる講座は最大10件
ルール1 は「講座」集約に閉じる。ルール2 は「受講者」集約に閉じる。しかし両方を同時に満たすことを保証するには、2つの集約にまたがるトランザクションが必要になる。
DDD の教科書的な回答は「Saga で結果整合性にする」だが、これは「一時的に30名を超えて登録され、補償トランザクションで戻す」ことを許容するということだ。ビジネスルールとして本当にそれでいいのか?
**Dynamic Consistency Boundary(DCB)**は、この「集約の窮屈さ」に正面から取り組む新しいアプローチだ。
対象読者
対象:DDD の集約パターンを実務で使った経験があるエンジニア
イベントソーシングに関心がある、または実践しているエンジニア
「集約の境界設計でいつも悩む」という方
難易度:★★★★☆
読了時間:約1.5時間
前提知識:DDD の基本概念(集約、エンティティ、境界づけられたコンテキスト)
イベントソーシングの基礎(なくても読める)
DCB の出自
DCB は Sara Pellegrini が 2023年4月のブログ記事 “Kill Aggregate!” で提唱した概念に端を発する。同年、ヨーロッパ各地のカンファレンス(DDD FR、JAX Mainz、Spring I/O Barcelona、Voxxed Days Brussels)でも講演を行い、概念が広まった。その後 Bastian Waidelich が Sara と共に概念を精緻化し、Paul Grimshaw を加えた3名で DCB の仕様を策定した。dcb.events をオープンプラットフォームとして公開し、コミュニティでの議論と実装が広がっている。
⚠️ 検証注記: 「DCB」の命名経緯について、一部の情報源では Robert Baelde の提案とされていますが、dcb.events の公式サイトおよび Sara Pellegrini のブログではこの帰属を確認できませんでした。Sara の 2023年4月のブログ記事には既に “Dynamic Consistency Boundary” のタグが使われています。
名前は「Dynamic Consistency Boundary」──集約が「静的(設計時に固定)」な一貫性の境界であるのに対し、DCB は「動的(実行時に決定)」な一貫性の境界を提供する。
この記事のゴール
1. 集約の本来の目的と、実務で直面する限界を整理する(Ch.2)
2. DCB のコアコンセプトを理解する(Ch.3)
3. DCB の技術的な仕組み(タグ・クエリ・楽観的ロック)を理解する(Ch.4)
4. 実際のユースケースで DCB がどう作用するかを体感する(Ch.5)
5. 集約と DCB の共存戦略を考える(Ch.6)
では、まず「集約とは何だったか」を振り返るところから始めよう。