前置き
今回の記事は、以下の記事の続きです。
内容は、書籍「ドメイン駆動設計をはじめよう」の10章「設計の経験則」からインスパイアされています。
上記の記事で書いた、「リスクが高い(不安定な)資産」 の代表例は、まさに
ドメイン駆動設計の文脈でいう【コアドメイン】と、個人情報などを扱う【重要なエンティティ(顧客、従業員など)】です。
この2つは、リスクの種類が少し異なりますが、どちらもテストという「投資」を集中させるべき最優先対象です。
👑 1. コアドメイン (The Core Domain)
コアドメインは、テスト戦略上、最もリスクが高く、最も不安定な資産です。
なぜ高リスクなのか?
ビジネス価値の源泉
ここは企業の競争優位性が生まれる「秘伝のタレ」です。
このドメインのロジックにバグがあれば、それは単なる機能不全ではなく、事業の失敗に直結してしまいます。
複雑でユニークなロジック
競合他社にはない独自のビジネスルールが凝縮されています。
この複雑さ自体がバグの温床となります。
なぜ不安定なのか?:進化し続けるドメイン理解
プロジェクト初期には、コアドメインのビジネスルールは誰も完全に理解していません。
開発を進めながら、ドメインエキスパートと共に試行錯誤し、学習していくプロセスが必要不可欠です。そのため、仕様変更やリファクタリングが最も頻繁に発生します。
この領域のテスト戦略
この「高リスク」かつ「高頻度な変更」という特性を持つコアドメインこそ、
細かく、徹底的で、高速に実行できる単体テストやドメインモデルのテストに集中的に投資する価値が最も高い領域です。
テストは、
複雑なロジックの正しさを保証するだけでなく、このコアドメイン部分のリファクタリングを恐れずに行うための心理的なセーフティネット
としても機能します。
🔒 2. 重要な汎用サブドメイン・エンティティ (Critical Generic Subdomains/Entities)
【顧客】や【従業員】といったエンティティは、コアドメインほどビジネスロジックが複雑ではないかもしれませんが、別の種類の極めて高いリスクを抱えています。
なぜ高リスクなのか?
データ整合性の重要度
顧客の住所や注文履歴が間違っていれば、ビジネスの信頼は失墜します。
ここは、データの整合性がビジネスの基盤となります。
セキュリティとコンプライアンス
これらは個人情報(PII)の塊です。
データ漏洩やプライバシー侵害が発生した場合の損害(信用の失墜、法的な罰則など)は計り知れません。
影響範囲の広さ
顧客情報は、認証、注文、配送、請求など、システムのあらゆる場所から参照されます。
もしもここにバグがあれば、影響はシステム全体に及びます。
なぜ(比較的)安定しているのか?
「顧客の氏名には姓と名がある」といったルールは、
コアドメインのビジネスルールほど頻繁には変わりません。
この領域のテスト戦略
この 「ビジネスロジックは比較的安定しているが、失敗した時の影響が壊滅的な」 ドメインに対しては、
バリデーションルール、アクセス制御、個人情報の取り扱い(マスキング、暗号化など) に関するテストを徹底的に行い
一度安定が証明されれば、頻繁に実行するテストの対象から徐々に大きな粒度のテストへと移行(コンポーネントの凝集原則を適用)
させていくことができます。
3. 対照的な「低リスク資産」
一方で、DDDにおける 【補完サブドメイン】 は、初期のテスト投資を比較的抑えることができる領域です。(下図の青い部分)
事例
内部向けのログ出力機能、簡単なCMS機能など。
特徴
ビジネスのコアではなく、複雑なロジックも少ない。
最悪バグがあっても事業への影響は限定的です。
この領域のテスト戦略
このような領域では、
詳細な単体テストを省略し、より大きな粒度の統合テストやE2Eテストでカバーする
といった判断が合理的になります。
まとめ
このように、DDDによってドメインを分類することは、
有限であるテストリソース(時間、人、コスト)を、どこに集中投資すべきか
を判断するための、極めて強力な羅針盤となるのです。
ドメイン駆動設計(DDD)と実践的なテスト戦略を繋ぐ上で、これは極めて重要です。
