Contractの推論可能性
良いContractの条件——I/Fから内部のStructureが推察可能であること。
なぜ重要か
ソフトウェアの利用者はContractを通じて内部のStructureを推察し、「この状態ならこう相互作用できるはず」と推論する。
Contract が Structure を推察可能にする
→ 推察に基づいて利用する
→ 推察通りに動く(= 期待通り)
→ それが Requirements と合致する(= 正しい)
この経路の起点が推論可能性であり、推論可能性が低ければ、利用者は試行錯誤やドキュメント参照に頼ることになる。
推論可能性を高める手段
型の表現力が最も直接的な手段。
// 推論しやすい — 型がStructureを伝えている
type Order =
| { status: "draft" }
| { status: "paid"; paidAt: Date }
| { status: "shipped"; paidAt: Date; shippedAt: Date };
// 推論しにくい — Structureが隠れている
type Order = {
status: string;
paidAt: Date | null;
shippedAt: Date | null;
};
前者は型を見ただけで状態遷移の構造が推察できる。これはMake Illegal States Unrepresentableの原則と直結する。
「ドメインの認知構造がコードに反映されている」こととの関係
ドメイン知識を持つ観測者がI/Fを見たとき、自分のドメイン理解からStructureを正しく推察できる状態——これがドメインとコードの同型性であり、FBループが速い理由でもある。
認知的距離との関係
推論可能性が高い = ドメイン知識を持つ観測者がI/Fから内部Structureを正しく推察できる = 送受信者の認知スキーマが一致している状態。つまり推論可能性とは、認知的距離を最小化するContract設計の指標。認知フィードバック設計においてフィードバック速度を規定する変数でもある。
関連
- 認知的距離 - 推論可能性はスキーマ共有度の指標
- Contract(ソフトウェアにおける契約)
- Make Illegal States Unrepresentable
- 型駆動開発
- 「仕様」の正体:Requirements・Contract・Structureによるソフトウェアの理解
- 翻訳方向の非対称性 — Implementation→意図の収束的変換を支える性質