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

PHPでドメイン駆動設計を浸透するためにやったことと現状

 PHPでドメイン駆動設計を浸透するためにやったことと現状

mashirou1234

February 16, 2020
Tweet

More Decks by mashirou1234

Other Decks in Programming

Transcript

  1. ドメイン領域の理解 (わかる版) • ドメイン領域とは? コア・ドメイン • 経営・事業サイドが抱えている 根本的な問題 • 企業が持つ理念と方針

    サブ・ドメイン • 内部的に必要とされる 対外的には認識されない問題 ◦ 今回は認識する必要のない 課題 境界づけられたコンテキスト • 課題として解決したい モノ・コトを共通化する • 5W1H
  2. ドメイン領域の理解 (わかる版) • ドメイン領域とは? コア・ドメイン • 経営・事業サイドが抱えている 根本的な問題 • 企業が持つ理念と方針

    サブ・ドメイン • 内部的に必要とされる 対外的には認識されない問題 ◦ 今回は認識する必要のない 課題 境界づけられたコンテキスト • 課題として解決したい モノ・コトを共通化する • 5W1H 一番重要
  3. アーキテクチャ選定 • Application ◦ Controller • Domain ◦ UseCase ◦

    Entity • Infrastructure ◦ DB(Eloquent) ◦ ExternalAPI ※ExternalInterface
  4. アーキテクチャ選定 • Application ◦ Controller • Domain ◦ UseCase ◦

    Entity • Infrastructure ◦ DB(Eloquent) ◦ ExternalAPI ※ExternalInterface Our Business Logic
  5. ディレクトリ設計 • 基本はPHPのComposerと フレームワークのLaravelに従う • UMLのクラス図で起こす Product ├─app │ ├─Console

    │ ├─Exceptions │ ├─Http │ │ ├─Controllers │ │ ├─Middleware │ │ ├─Models │ │ ├─Session │ │ └─Validation │ └─Providers ├─Domain │ ├─Models │ │ ├─Entities │ │ │ ├─Applications │ │ └─Repositories │ └─Usecase └─Infra   ├─Eloquent   └─Storage
  6. ディレクトリ設計 • 基本はPHPのComposerと フレームワークのLaravelに従う • UMLのクラス図で起こす Product ├─app │ ├─Console

    │ ├─Exceptions │ ├─Http │ │ ├─Controllers │ │ ├─Middleware │ │ ├─Models │ │ ├─Session │ │ └─Validation │ └─Providers ├─Domain │ ├─Models │ │ ├─Entities │ │ │ └─Applications │ │ └─Repositories │ └─Usecase └─Infra   ├─Eloquent   └─Storage
  7. EoF