ドメインとコードの同型性

ドメインの概念構造とコードの構造が直接マッピングされている状態。「ドメインの認知構造がコードに直接反映されている」ことを指す。

なぜ重要か

ドメインの言葉とコードの言葉が一致していれば、「ここを変えたい」という意図がそのまま「このコードを変える」に直結する。概念とコードの間に翻訳コストがかからない。

これによりフィードバックループが高速化する:

型による実現

型駆動開発の文脈では、型定義そのものがドメインモデルの表現になる。

// ドメインとコードが一致している例
type Order =
  | { status: "draft" }
  | { status: "paid"; paidAt: Date }
  | { status: "shipped"; paidAt: Date; shippedAt: Date };

この型定義を読むだけで、注文の状態遷移(draft → paid → shipped)と各状態の不変条件が理解できる。ドメインエキスパートと開発者が同じ語彙でコードについて話せる。

ユビキタス言語との関係

Domain-Driven Designユビキタス言語は、ドメインエキスパート、開発者、コードの間で語彙を統一することでこの同型性を実現するための実践。

同型性が崩れるとき

同型性が崩れると、認知負荷の「翻訳負荷」が増大する。

認知的距離との関係

同型性が維持されている状態 = ドメインのスキーマとコードのスキーマの認知的距離がゼロに近い状態。同型性が崩れるとスキーマ間の翻訳が必要になり、距離が増大する。フィードバックループが高速なのは、距離が小さいから変更の影響が自明に追跡可能だから。

関連