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

現場で実践すべきDDDモデリングのポイント3つ / Three points of DDD modeling

現場で実践すべきDDDモデリングのポイント3つ / Three points of DDD modeling

OOC2020での発表資料です

現場でDDDと型によるモデリングを実践するにあたり、導入するためにしたこと、導入のポイントを実践した経験を元に紹介しています。

内容
- DDDモデリング導入のモチベーション
- DDD導入の流れ
- 実践例
- DDD導入のポイント

Yamaki Hiroshi

February 16, 2020
Tweet

More Decks by Yamaki Hiroshi

Other Decks in Programming

Transcript

  1. 問合せ管 理
 受注
 顧客
 管理
 在庫
 管理
 認証
 認可
 集荷


    連携
 商品
 管理
 配送
 連携
 ロケ
 管理
 決済
 検品
 出荷
 生産
 支援
 システムの機能

  2. 問合せ管 理
 受注
 顧客
 管理
 在庫
 管理
 認証
 認可
 集荷


    連携
 商品
 管理
 配送
 連携
 ロケ
 管理
 決済
 検品
 出荷
 生産
 支援
 プロジェクトのスコープ

  3. 全体の構成
 
 Cleaning
 ├── App
 │ ├── ACL
 │ ├──

    Coordinator
 │ ├── Repository
 │ └── Service
 ├── Domain
 │ ├── Model
 │ ├── Service
 │ └── Type
 └── Infra
 ├── API
 └── DB
 レイヤード
 アーキテクチャ

  4. ドメインモデルの構成
 Cleaning/Domain/Model
 ├── Capacity
 ├── Item
 ├── Order
 ├── Pickup


    ├── Scheduling
 ├── Shipping
 ├── Ticketing
 └── Washing
 
 
 業務の用語で整理
 

  5. class ArrivalDate
 {
 private $value;
 public function __construct(Date $value) 


    {
 $this->value = $value; 
 }
 public static function create( 
 PickupDate $pickupDate, 
 DeliveryDayCount $deliveryDayCount): self 
 {
 return (new self( $pickupDate->value()))
 ->add($deliveryDayCount->value());
 }
 ....
 着荷日(PHP)

  6. class ArrivalDate
 {
 private $value;
 public function __construct(Date $value) 


    {
 $this->value = $value; 
 }
 public static function create( 
 PickupDate $pickupDate, 
 DeliveryDayCount $deliveryDayCount): self 
 {
 return (new self( $pickupDate->value()))
 ->add($deliveryDayCount->value());
 }
 ....
 着荷日(PHP)
 return (new self($pickupDate->value())) ->add($deliveryDayCount->value());

  7. class ArrivalDate
 {
 private $value;
 public function __construct(Date $value) 


    {
 $this->value = $value; 
 }
 public static function create( 
 PickupDate $pickupDate, 
 DeliveryDayCount $deliveryDayCount): self 
 {
 return (new self($ pickupDate->value()))
 ->add($deliveryDayCount->value());
 }
 ...
 ここ
 ここの話はTechブログにも載せてます 
 DDDで生産日程のモデリング 
 https://blog.wh-plus.co.jp/entry/2019/12/17/000000