【きょうかいづけられたこんてきすと】

境界づけられたコンテキスト とは?

💡 「同じ言葉でも意味が違う」境界を引く
📌 このページのポイント
境界づけられたコンテキスト(DDD) 販売コンテキスト 顧客 = 購入者 商品 = 販売対象 注文 配送コンテキスト 顧客 = 届け先 商品 = 荷物 配送状況 サポートコンテキスト 顧客 = 問合せ者 商品 = 対象製品 チケット 同じ「顧客」「商品」でもコンテキストごとに意味が異なる → 境界を明確にして混乱を防ぐのがDDDの考え方
境界づけられたコンテキストのイメージ
ひよこ ひよこ

具体例で説明して?

ペンギン先生 ペンギン先生

ECサイトの「商品」を考えよう。販売コンテキストでは商品名・価格・セール情報が重要。物流コンテキストでは重さ・サイズ・在庫場所が重要。会計コンテキストでは売上・仕入れ値・税区分が重要。これを1つのProductクラスにまとめると肥大化する。コンテキストごとに最適なモデルを作るのが境界づけられたコンテキストだよ

ひよこ ひよこ

コンテキスト間のデータはどうやり取りする?

ペンギン先生 ペンギン先生

①共有カーネル(小さなモデルを共有、密結合になりがち)、②Anti-Corruption Layer(変換層を挟んで独立性を保つ)、③イベント駆動(コンテキスト間でドメインイベントを発行・購読)。マイクロサービス構成ならAPIメッセージキューでやり取りする。直接DB共有は避けるのが鉄則だよ

ひよこ ひよこ

どうやって境界を見つけるの?

ペンギン先生 ペンギン先生

①Event Storming(ドメインイベントを付箋で洗い出すワークショップ)、②組織構造(コンウェイの法則:システムは組織構造を反映する)、③言語の違い(同じ言葉が違う意味で使われている場所に境界がある)。チームの認知負荷が高い部分に注目すると自然と境界が見えてくるよ

ひよこ ひよこ

境界を間違えたらどうなる?

ペンギン先生 ペンギン先生

境界が広すぎると1つのサービスが肥大化(モノリスと同じ問題)。狭すぎるとサービス間の通信が増えて複雑化(分散モノリス)。最初から完璧に引く必要はなく、ドメイン知識が深まるにつれて境界を見直すのが現実的。「間違いに気づいたら修正できる柔軟性」を設計に組み込むのが大事だよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「境界づけられたコンテキスト」って出てきたら「同じ用語の意味が異なる領域を分離する設計概念」と思えればだいたいOK!
📖 おまけ:英語の意味
「Bounded Context」 = 境界づけられたコンテキスト
💬 Bounded(境界を持つ)Context(文脈)。Eric EvansのDDD本の中核概念だよ
← 用語集にもどる