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

実践アプリケーション設計 ①データモデルとドメインモデル

Avatar for Recruit Recruit PRO
August 28, 2025

実践アプリケーション設計 ①データモデルとドメインモデル

2025年度リクルート エンジニアコース新人研修の講義資料です

Avatar for Recruit

Recruit PRO

August 28, 2025
Tweet

More Decks by Recruit

Other Decks in Technology

Transcript

  1. (C) Recruit Co.,Ltd. All rights reserved. 2 当講座と『実践データベース設計』 の2講座を通しての目標 架空のECサイト「R書店」を題材に、データ

    ベースからアプリケーションの設計・実装に 関する広範なナレッジを体系的に整理し、全 体を俯瞰して理解を深めていただく。 また、開発現場で求められる設計や実装のポ イント等を実践的な課題や演習を通して、丁 寧に解説する。
  2. (C) Recruit Co.,Ltd. All rights reserved. 3 講師自己紹介① 【名前】 藤本

    毅(フジモト タケシ) 【所属】 プロジェクト推進部 【経歴】 IT企業、常駐型開発会社、スタート アップ支援会社、通信キャリア等を 通してB2BからB2Cまで(官公庁シ ステムからチャットサービス、広告、 音楽、エンタメ、旅行、金融、飲食、 HR等)様々なシステムの開発に携 わる
  3. (C) Recruit Co.,Ltd. All rights reserved. 4 【言語・OS・フレームワーク等】 Mac, Linux(CentOS,

    Debian, Ubuntu, Kali, Raspberry Pi ), Windows C#、C、C++、Clojure、Ruby、Python、Ocaml、Haskell、PHP、 Java、Kotolin、Scala、Swift、Objective-C、JavaScript、 CoffeeScript、TypeScript、Go Ruby On Rails、CodeIgniter、Django、Spring、Laravel、 Playframework、sokko、 React、 Backbone.js、Vue.js、Unity、 Metasploit、Nessus、TensorFlow、PyTorch ..etc 講師自己紹介②
  4. (C) Recruit Co.,Ltd. All rights reserved. 5 【直近の活動】 Web(フロントエンド、バックエンド)、インフラ(オンプレミス・クラ ウド)、サイバーセキュリティ、スマートフォン(iOS、Android、

    Tyzen)、電子回路・FPGA、機械学習・ディープラーニング、3Dゲー ム開発、OSやネットワーク等の低レイヤー技術等、長年の試作やOSSの 解析、業務経験等を通して得た様々な知見や技術を活かし、それらを統 合する研究を個人でおこなっている 【その他】 総務省異能vationノミネート、大手ベンチャーキャピタルのアクセラ レーションプログラムのファイナリスト..etc 講師自己紹介③
  5. (C) Recruit Co.,Ltd. All rights reserved. 7 目次 1. モデルとは

    2. モデルの起源 3. 現在のモデル 4. トランザクションスクリプト 5. ドメイン駆動設計 6. 補足:ビジネスロジックについて 7. この資料のまとめ 8. 当講義の資料体系 9. 関連講座『実践データベース設計』について 10.関連リポジトリ
  6. (C) Recruit Co.,Ltd. All rights reserved. 9 モデルとは • 現実のモノや出来事を用途を限定して

    (特定の側面を意図的に強調し、それ以 外の側面を意図的に削ぎ落として)抽 象・簡略化した表現 • 特定の課題を解決することを目的とする
  7. (C) Recruit Co.,Ltd. All rights reserved. 10 モデルの構成要素 データ モデルの対象となる特定の課題に関するデータ(複

    数データがある場合はデータ間の”関連性”も含む) ビジネスロジック 特定の課題を解決するためのビジネスルールや操作 を含む”振る舞い”
  8. (C) Recruit Co.,Ltd. All rights reserved. 16 「ダイナブック」とオブジェクト指向言語 “ダイナブック”を構成する要素としてオブジェクト 指向言語のSmall

    Talk(スモール・トーク)を前出 のアラン・ケイが考案 引用元: https://pbs.twimg.com/media/EVvTvdtXQAADvYY.jpg 引用元: https://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/Smallt alk_Balloon.svg/2560px-Smalltalk_Balloon.svg.png
  9. (C) Recruit Co.,Ltd. All rights reserved. 17 MVCアーキテクチャ オブジェクト指向言語のSmall Talkでシステムを実

    装する際の設計指針としてアラン・ケイと同じ XEROX PARC(ゼロックス・パロアルト研究所)の トリグヴェ・リーンスカウク(Trygve Reenskaug)によって1978-79年に提唱された アーキテクチャ 引用元: https://ja.wikipedia.org/wiki/%E3%83%88%E3%83%AA%E3%82%B0%E3%83%B4%E3%82%A7%E3%83%BB%E3%83%AA%E3% 83%BC% E3%83%B3%E3%82%B9%E3%82%AB%E3%82%A6%E3%82%AF
  10. (C) Recruit Co.,Ltd. All rights reserved. 20 各構成要素の役割 モデル(Model) ビジネスロジックやデータ処理を担当

    ビュー(View) ユーザーに表示される画面やUIを担当 コントローラ(Controller) モデルとビューの間の橋渡し役 ※ViewやControllerはビジネスロジックを持たない
  11. (C) Recruit Co.,Ltd. All rights reserved. 26 システムの対象となるデータに着目したモデル(=データ ベースのモデル)で、「振る舞い(ビジネスロジック)」 はモデリングの対象外。

    プレゼンテーション層 アプリケーション層 データアクセス層 データモデル エンティティ / DTO等※ ※データモデルのエンティティ とドメインモデルのエンティティ とは同一の概念ではないので 注意。またDTOは厳密にはモ デルではないが、事実上モデ ルのように使用されることもあ る データモデル
  12. (C) Recruit Co.,Ltd. All rights reserved. 27 事業目的を達成するための知識やルールを抽象化して表現したもの リーンスカウクが提唱したモデルに近い ドメインモデル

    プレゼンテーション層 アプリケーション層 インフラストラクチャ層 ドメイン層 ドメインモデル 集約 エンティティ 値オブジェクト ドメインサービス ドメインイベント
  13. (C) Recruit Co.,Ltd. All rights reserved. 28 モデル別のアプリケーションの設計手法 モデルの種類によって設計手法も異なる •

    データモデル: トランザクションスクリプト • ドメインモデル: ドメイン駆動設計、(類似手法としてクリーン アーキテクチャ等)
  14. (C) Recruit Co.,Ltd. All rights reserved. 35 ドメイン駆動設計とは ドメイン(ビジネス領域)フォーカスした設計手法 プレゼンテーション層

    アプリケーション層 (ユースケース層) ドメイン層 インフラストラクチャ層 クライアントとの入出力 ユースケースの実現 ドメイン知識の表現 データベースとの入出力 引用元:https://booth.pm/ja/items/1835632
  15. (C) Recruit Co.,Ltd. All rights reserved. 36 ドメイン駆動設計の 設計アプローチ アプリケーションの対象領域(ドメイン)の関心事

    を、データとロジックが一体となったモデルとして 整理し、設計に反映させる データ ロジック ドメインモデル
  16. (C) Recruit Co.,Ltd. All rights reserved. 40 現代のシステム開発においては、プレゼンテーション層 (画面)とデータアクセス層以外の全てのロジックをビ ジネスロジックに該当するとみなすのが一般的

    ビジネスロジック(現代解釈) アプリケーションに必要な機 能やビジネスプロセスを実 現するために必要なロジック (データの参照・生成・更新・ バリデーション、演算・判 定...etc) プレゼンテーション層 (ControllerやView) アプリケーション層 (ServiceやModel等を含む) データアクセス層
  17. (C) Recruit Co.,Ltd. All rights reserved. 42 ここまでのまとめ • モデルはアプリケーションの目的に沿って事象や

    概念を抽象化したもの • モデルはオブジェクト指向でアプリケーションを 設計するための概念として提唱された • モデルはデータと振る舞い(ビジネスロジック) を持つ • 現代のシステム開発における、モデルはデータモ デルとドメインモデルの2種類 • モデル別にアプリケーションの設計手法が異なる
  18. (C) Recruit Co.,Ltd. All rights reserved. 43 当講座では 『R書店』の設計・実装を通してデータ中 心の設計(トランザクションスクリプト)

    とドメイン駆動設計の両方のアプローチに ついて、それぞれに付随する対応方法等と ともに解説する
  19. (C) Recruit Co.,Ltd. All rights reserved. 50 実践データベース設計:①データベース設計概論 実践データベース設計:②概念データモデリング 実践データベース設計:③論理データモデリング

    実践データベース設計:④物理データモデリング データベース設計講座の資料構成 データベース設計の詳細については以下の資料で解説
  20. (C) Recruit Co.,Ltd. All rights reserved. 56 当講座の関連リポジトリ(GHE) 架空のECサイト(R書店) rbooks(トランザクションスクリプト)

    • https://ghe.misosiru.io/takeshi-fujimoto/rbooks-jpa 演習用 • https://ghe.misosiru.io/takeshi-fujimoto/rbooks-jpa- exercise rbooks-ddd(ドメイン駆動設計) • https://ghe.misosiru.io/takeshi-fujimoto/rbooks-ddd-jpa 演習用 • https://ghe.misosiru.io/takeshi-fujimoto/rbooks-ddd-jpa- exercise