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

Laravelで同じ実装をドメイン駆動設計(DDD)とMVCで比較してみた(フロントはReact)

take-t14
October 02, 2021

 Laravelで同じ実装をドメイン駆動設計(DDD)とMVCで比較してみた(フロントはReact)

take-t14

October 02, 2021
Tweet

Other Decks in Programming

Transcript

  1.  氏名:畠山 忠修  属性:WEB系エンジニア  業務系、組み込み系、スマートフォンアプリ開発、 WEB系の開発経験あり  C言語系の言語が好み

     VB.NET、 C、C++、C#、Java、Kotlin、Swift、PHP、 JS(jQuery、AngularJS、Vue.js)等々の開発経験あ り  バックエンド寄り。フロントエンド、インフラもやりま す。
  2. 【1】 • 検証内容と目的 【2】 • 実装するECサイトの機能 【3】 • 設計 【4】

    • 自動テスト 【5】 • 検証結果発表 【6】 • まとめ 【7】 • おまけ
  3.  機能  商品一覧  商品詳細  カート  注文

     フロントエンド  Reactを採用  Material UIでリッチなUIを実現  レスポンシブにも対応
  4.  ドメインサービス  カート追加は複数Entityを操作する  ProductRepositoryからProduct Entity取得  CartItem Entity生成

     CartItem EntityへProduct Entityをセット  上記一連の操作もドメイン知識と言える  ユースケースではなく、ドメインサービスへ実装す るのが望ましいと判断  ドメイン貧血症に要注意
  5.  バリーデーションチェック  Value Obujectのコンストラクタへバリデーション チェックを実装  Value Obujectをnewする度にtry catchするのは

    冗長・・・  try catch無しでは複数入力エラーがあっても1つ ずつしか画面表示できない  ModelFactoryというドメインサービスで解決
  6.  メリット・デメリット 種別 メリット デメリット DDD ・疎結合・高凝集でメンテナンス性 が高い ・疎結合でUnitTestを実装しやす い

    ・ファイル数・ステップ数が多くなる ・データの詰め替えコストがかかる 軽量DDD ・DDDのメリットを継承 ・DDDと比べてファイル数・ステップ プ数は少ない ・DDDと比べてデータ詰め替えコス ストは低い ・ファイル数・ステップ数はMVCの3 3倍以上 ・データ詰め替えコストは0にはな らない MVC ・ファイル数・ステップ数が圧倒的 に少ない ・データ詰め替えコストがない ・蜜結合・低凝集でメンテナンス性 が低い ・UnitTestが実装しにくい ・重複コードが発生しやすい