Upgrade to Pro — share decks privately, control downloads, hide ads and more …

導入事例を通じて理解するドメイン駆動設計

kumaGoro95
February 22, 2021
300

 導入事例を通じて理解するドメイン駆動設計

現在、サーバーサイドエンジニアを目指し勉強中です。

先日、「ドメイン駆動設計」をテーマにLT発表を行いましたが、終始抽象的な話になってしまい、自分自身DDDについて理解しきれていませんでした。
今回は、実際の導入事例がまとめられた記事を参照し、導入事例を通じてDDDについて理解しようという試みを行いました。

<参考文献・参照ページ>
「ドメイン駆動設計で保守性をあげたリニューアル事例 〜 ショッピングクーポンの設計紹介」
・『ドメイン駆動設計入門』成瀬 允宣著
レイヤードアーキテクチャの視点
境界付けられたコンテキスト 概念編 - ドメイン駆動設計用語解説

kumaGoro95

February 22, 2021
Tweet

More Decks by kumaGoro95

Transcript

  1. コード例1 class User{ private String username; private String userId; public

    String getUsername(){ return this.username; } ... } <User.java>
 //フォームから受け取ったパラメータ String username = request.getParameter("username"); if(username.length() < 5) { request.setAttribute("Msg", "ユーザー名は4文字以上..."); //以下略 } <Controller.java>
 → 業務ロジックが分散する = 全容の見えないシステムになる
  2. コード例2 class User{ private Username username; private UserId userId; public

    Username getUsername(){ return this.username; } ... } <User.java>
 class Username{ private String value; public Username(String value){ if(value.length() < 5){ //処理 } } } <Username.java>
 → データとロジックがドメインモデルに凝集される = 要件が一目でわかる