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

ボトムアップドメイン駆動設計 後編 / bottomup-ddd-2

nrs
October 28, 2018

ボトムアップドメイン駆動設計 後編 / bottomup-ddd-2

# URL
前編: https://speakerdeck.com/nrslib/bottomup-ddd-1
解説記事: https://nrslib.com/bottomup-ddd/
勉強会情報: https://ddd-community-jp.connpass.com/event/103428/
Twitter: https://twitter.com/nrslib

# 概要
2018/10/23 GMO Yours で行われた「ボトムアップドメイン駆動設計」の登壇資料後編です
口頭での解説前提のためわかりづらい部分もあるかと思いますがご了承ください。

nrs

October 28, 2018
Tweet

More Decks by nrs

Other Decks in Programming

Transcript

  1. もくじ • はじめに • 値オブジェクト • エンティティ • ドメインサービス •

    リポジトリ • アプリケーションサービス • ファクトリ • トランザクション • 集約 • アーキテクチャ • ドメイン駆動設計への誘い 2
  2. トランザクション 42 User Name: nrs で登録 User Name: nrs で登録

    ユーザ A ユーザ B User Name: nrs のデータが 二つ出来てしまう
  3. トランザクション | ユニットオブワーク 84 例えばサークルの所属ユーザ情報を取得すると SELECT * FROM t_user WHERE

    t_user.id = ‘userId’ を何度も実行する 特定エンティティの リポジトリ取得
  4. トランザクション | ユニットオブワーク 85 例えばサークルの所属ユーザ情報を取得すると SELECT * FROM t_user WHERE

    t_user.id = ‘userId’ を何度も実行する 特定エンティティの リポジトリ取得
  5. トランザクション | ユニットオブワーク 86 例えばサークルの所属ユーザ情報を取得すると SELECT * FROM t_user WHERE

    t_user.id = ‘userId’ を何度も実行する 特定エンティティの リポジトリ取得 最適化した処理が 利用できない
  6. 集約 113 User 集約 id: CircleId users: List<User> name: string

    Circle users: List<User> users: List<User>
  7. ディレクトリ構成例 160 Domain Application UserApplicationService Model CircleApplicationService User Users Circles

    Infrastructure UserId UserName IUserRepository ICircleRepository CircleRepository Presentation(MVC) Circle CircleId UserRepository InMemory InMemoryCircleRepository InMemoryUserRepository : package : folder : object
  8. アーキテクチャ | オニオンアーキテクチャ 173 オニオンアーキテクチャ Application Services Domain Services Domain

    Model UI Tests Infrastructure User UserApplicationService UserService ドメイン駆動設計?
  9. アーキテクチャ | オニオンアーキテクチャ 174 オニオンアーキテクチャ Application Services Domain Services Domain

    Model UI Tests Infrastructure User UserApplicationService UserService ヘキサゴナルアーキテクチャの内側 ドメイン駆動設計?
  10. アーキテクチャ | クリーンアーキテクチャ 179 クリーンアーキテクチャ ヘキサゴナルアーキテクチャの外側 Controllers: UserController GateWays: IUserRepository

    UserRepository UseCases: IUserApplicationService(InputPort) UserApplicationService(Interactor) Entities: User ※詳しい話はこちらで https://nrslib.com/clean-architecture/ https://qiita.com/nrslib/items/a5f902c4defc83bd46b8
  11. おわり 198 • はじめに • 値オブジェクト • エンティティ • ドメインサービス

    • リポジトリ • アプリケーションサービス • ファクトリ • トランザクション • 集約 • アーキテクチャ • ドメイン駆動設計への誘い @nrslib https://nrslib.com