DDD
SDD(仕様駆動開発)とは何か なぜ「実行可能な仕様」が必要になるのか Gherkinによる仕様の例 SDDとTDDの違い SDDとDDDの違い SDDにおけるSpecificationは「契約」である SDD導入で起きる実際の変化 失敗しがちなポイントとリスク SDDが向いているプロジェク…
アプリケーションサービスは「ロジックを書く場所」ではありません なぜこの層が必要になるのか アプリケーションサービスの責務 Controllerとの違い ドメインサービスとの違い よくある失敗:バリデーションを書く 外部システム連携はどこに置くか 注意点:…
サービスクラスが太るのは設計が下手だからではありません 典型的な肥大化の例 なぜサービスにロジックが集まるのか ドメインモデルへ移す アプリケーションサービスの本来の役割 それでもサービスが太るケース よくある誤解:サービスを分割すれば解決 見分…
リポジトリパターンは「設計パターン」から始めると失敗します なぜ直接DBアクセスでは仕様を守れないのか ドメインモデルを通すと何が変わるか ではなぜRepositoryが必要になるのか Repositoryの本質は「コレクションのように扱うこと」 SDDとアプリケーシ…
SDDとDDDは別物に見えて、実は同じ場所を見ています ユビキタス言語とは命名規則ではない SDDで言葉が固定される瞬間 コードに現れるユビキタス言語 なぜSDDとDDDの相性が良いのか テストコードが壊れる理由 よくある失敗:英語にすればDDDになる 実務での進…
ドメインモデルは「クラス設計」からは生まれません SDD(仕様駆動開発)とは何を駆動するのか ドメインモデルの出発点は「状態遷移」 仕様から読み取るべき3つの要素 具体例:予約システムからドメインモデルを抽出する 値オブジェクトが生まれる瞬間 よく…