ドメインモデル抽出スキル
目的
業務の言葉・ルールからドメインオブジェクトとその関係を発見し、設計の出発点となるモデルを作る。
手順
1. 業務の言葉を集める
- 業務担当者との会話・資料から「名詞」をドメインオブジェクト候補として抽出
- 「動詞」を操作・ユースケースの候補として抽出
2. 制約・ルールを掘り起こす
- 「〜しなければならない」「〜してはいけない」という業務ルールをすべて書き出す
- 「〜の場合は〜」という条件分岐が区分オブジェクトの候補になる
3. 値オブジェクトを識別する
- 「その値は何文字以内か」「どんな形式か」「計算できるか」を確認
- プリミティブで表現されている値に業務制約がついていたら値オブジェクトに格上げ
4. コレクションを識別する
- 「〜の一覧」「〜のリスト」が登場したら、そのコレクションに何の業務操作が必要かを聞く
5. 関係と境界を決める
- どのオブジェクトが他のオブジェクトを「所有」するか(集約ルート)
- どこまでを1つのトランザクションで整合させるか
チェックリスト
- 業務の言葉がそのままクラス名・メソッド名になっているか
- プリミティブ型(String/int)に業務制約が直接書かれていないか
- サービス層に業務の判断(if/switch)が漏れていないか
- コレクションに対する操作が分散していないか
- 区分値にパターンマッチ・switch文が各所に散らばっていないか
出典
現場で役立つシステム設計の原則(増田亨)第1〜3章