Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
実践アプリケーション設計 ①データモデルとドメインモデル
Search
Recruit
PRO
August 28, 2025
Technology
2
19
実践アプリケーション設計 ①データモデルとドメインモデル
2025年度リクルート エンジニアコース新人研修の講義資料です
Recruit
PRO
August 28, 2025
Tweet
Share
More Decks by Recruit
See All by Recruit
Browser
recruitengineers
PRO
3
32
JavaScript 研修
recruitengineers
PRO
2
29
TypeScript入門
recruitengineers
PRO
2
32
モダンフロントエンド 開発研修
recruitengineers
PRO
2
23
Webアクセシビリティ入門
recruitengineers
PRO
1
17
攻撃と防御で実践するプロダクトセキュリティ演習~導入パート~
recruitengineers
PRO
1
10
モバイルアプリ研修
recruitengineers
PRO
2
80
事業価値と Engineering
recruitengineers
PRO
1
24
制約理論(ToC)入門
recruitengineers
PRO
2
26
Other Decks in Technology
See All in Technology
Exadata Database Service on Dedicated Infrastructure セキュリティ、ネットワーク、および管理について
oracle4engineer
PRO
1
360
mruby(PicoRuby)で ファミコン音楽を奏でる
kishima
1
110
生成AI利用プログラミング:誰でもプログラムが書けると 世の中どうなる?/opencampus202508
okana2ki
0
190
知られざるprops命名の慣習 アクション編
uhyo
10
2.1k
どこで動かすか、誰が動かすか 〜 kintoneのインフラ基盤刷新と運用体制のシフト 〜
ueokande
0
180
Goss: Faiss向けの新しい本番環境対応 Goバインディング #coefl_go_jp
bengo4com
0
1.1k
GCASアップデート(202506-202508)
techniczna
0
240
Preferred Networks (PFN) とLLM Post-Training チームの紹介 / 第4回 関東Kaggler会 スポンサーセッション
pfn
PRO
1
140
Amazon Bedrock AgentCore でプロモーション用動画生成エージェントを開発する
nasuvitz
6
400
人を動かすことについて考える
ichimichi
2
310
kintone開発チームの紹介
cybozuinsideout
PRO
0
73k
生成AI活用のROI、どう測る? DMM.com 開発責任者から学ぶ「AI効果検証のノウハウ」 / ROI of AI
i35_267
4
150
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
42
2.8k
Imperfection Machines: The Place of Print at Facebook
scottboms
268
13k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
560
Navigating Team Friction
lara
188
15k
The Cost Of JavaScript in 2023
addyosmani
53
8.8k
Into the Great Unknown - MozCon
thekraken
40
2k
Statistics for Hackers
jakevdp
799
220k
Making the Leap to Tech Lead
cromwellryan
134
9.5k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Speed Design
sergeychernyshev
32
1.1k
Embracing the Ebb and Flow
colly
87
4.8k
Transcript
実践アプリケーション設計 ①データモデルとドメインモデル プロジェクト推進部 藤本 毅 2025年7月16日
(C) Recruit Co.,Ltd. All rights reserved. 2 当講座と『実践データベース設計』 の2講座を通しての目標 架空のECサイト「R書店」を題材に、データ
ベースからアプリケーションの設計・実装に 関する広範なナレッジを体系的に整理し、全 体を俯瞰して理解を深めていただく。 また、開発現場で求められる設計や実装のポ イント等を実践的な課題や演習を通して、丁 寧に解説する。
(C) Recruit Co.,Ltd. All rights reserved. 3 講師自己紹介① 【名前】 藤本
毅(フジモト タケシ) 【所属】 プロジェクト推進部 【経歴】 IT企業、常駐型開発会社、スタート アップ支援会社、通信キャリア等を 通してB2BからB2Cまで(官公庁シ ステムからチャットサービス、広告、 音楽、エンタメ、旅行、金融、飲食、 HR等)様々なシステムの開発に携 わる
(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 講師自己紹介②
(C) Recruit Co.,Ltd. All rights reserved. 5 【直近の活動】 Web(フロントエンド、バックエンド)、インフラ(オンプレミス・クラ ウド)、サイバーセキュリティ、スマートフォン(iOS、Android、
Tyzen)、電子回路・FPGA、機械学習・ディープラーニング、3Dゲー ム開発、OSやネットワーク等の低レイヤー技術等、長年の試作やOSSの 解析、業務経験等を通して得た様々な知見や技術を活かし、それらを統 合する研究を個人でおこなっている 【その他】 総務省異能vationノミネート、大手ベンチャーキャピタルのアクセラ レーションプログラムのファイナリスト..etc 講師自己紹介③
(C) Recruit Co.,Ltd. All rights reserved. 6 この資料の目的 アプリケーションの中心的な概念であるモデ ルとその起源、および各種モデルに関連する
設計手法等について解説します。
(C) Recruit Co.,Ltd. All rights reserved. 7 目次 1. モデルとは
2. モデルの起源 3. 現在のモデル 4. トランザクションスクリプト 5. ドメイン駆動設計 6. 補足:ビジネスロジックについて 7. この資料のまとめ 8. 当講義の資料体系 9. 関連講座『実践データベース設計』について 10.関連リポジトリ
(C) Recruit Co.,Ltd. All rights reserved. 8 1. モデルとは
(C) Recruit Co.,Ltd. All rights reserved. 9 モデルとは • 現実のモノや出来事を用途を限定して
(特定の側面を意図的に強調し、それ以 外の側面を意図的に削ぎ落として)抽 象・簡略化した表現 • 特定の課題を解決することを目的とする
(C) Recruit Co.,Ltd. All rights reserved. 10 モデルの構成要素 データ モデルの対象となる特定の課題に関するデータ(複
数データがある場合はデータ間の”関連性”も含む) ビジネスロジック 特定の課題を解決するためのビジネスルールや操作 を含む”振る舞い”
(C) Recruit Co.,Ltd. All rights reserved. 11 モデルとオブジェクト指向 モデルは、「オブジェクトは属性(データ)と振る 舞い(関数・メソッド)を持つ」というオブジェク
ト指向の原則にも則っている ※データと振る舞いが一体になっていることが重要
(C) Recruit Co.,Ltd. All rights reserved. 12 2. モデルの起源
(C) Recruit Co.,Ltd. All rights reserved. 13 モデルが生まれた背景 モデルが生まれた背景には、研究者のアラン・ケイ が提唱した「Dynabook(ダイナブック)」という構
想が端を発している 引用元:https://www.kyotoprize.org/2019/02/4550/
(C) Recruit Co.,Ltd. All rights reserved. 14 ダイナブックとは 『ダイナブック』は現代のPCやスマートフォンの起 源になっている重要なコンセプト
(※特定の実物を指す用語ではない) 引用元: https://t-press-plus.com/compare_macbook_with_ipad/
(C) Recruit Co.,Ltd. All rights reserved. 15 「ダイナブック」のモックアップ iPadに似た形をしている 引用元:
https://ja.wikipedia.org/wiki/%E3%83%80%E3%82%A4%E3%83%8A%E3%83%96%E 3%83%83%E3%82%AF
(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
(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
(C) Recruit Co.,Ltd. All rights reserved. 18 現在のWebサービスとMVC MVCは現在もWebアプリや RESTfulアプリケー
ション等で幅広く用いられている
(C) Recruit Co.,Ltd. All rights reserved. 19 MVCの構成要素 システムを以下の要素で構成するアーキテクチャ M
: モデル (Model) V : ビュー (View) C : コントローラー (Controller)
(C) Recruit Co.,Ltd. All rights reserved. 20 各構成要素の役割 モデル(Model) ビジネスロジックやデータ処理を担当
ビュー(View) ユーザーに表示される画面やUIを担当 コントローラ(Controller) モデルとビューの間の橋渡し役 ※ViewやControllerはビジネスロジックを持たない
(C) Recruit Co.,Ltd. All rights reserved. 21 MVCとオブジェクト指向 つまり、MVCはオブジェクト指向で実装する ためのアーテクチャでモデルはオブジェクト指
向で実装するために考案された概念といえる
(C) Recruit Co.,Ltd. All rights reserved. 22 “モデル”は元々はシステムに対するユーザの理解(mental model)とシステムの構造を一致させるための概念として考案さ れた
MVCアーキテクチャ提唱当時の『モデル』 引用元:https://folk.universitetetioslo.no/trygver/themes/mvc/mvc-index.html
(C) Recruit Co.,Ltd. All rights reserved. 23 MVC提唱当時の『モデル』 つまり、モデルは当初、ユーザーがシステム に期待する機能や状態(振る舞いや知識)を
体現する概念だった
(C) Recruit Co.,Ltd. All rights reserved. 24 3. 現在のモデル
(C) Recruit Co.,Ltd. All rights reserved. 25 現在のモデルの種類 モデルは以下の2種類に大別される •
データモデル • ドメインモデル
(C) Recruit Co.,Ltd. All rights reserved. 26 システムの対象となるデータに着目したモデル(=データ ベースのモデル)で、「振る舞い(ビジネスロジック)」 はモデリングの対象外。
プレゼンテーション層 アプリケーション層 データアクセス層 データモデル エンティティ / DTO等※ ※データモデルのエンティティ とドメインモデルのエンティティ とは同一の概念ではないので 注意。またDTOは厳密にはモ デルではないが、事実上モデ ルのように使用されることもあ る データモデル
(C) Recruit Co.,Ltd. All rights reserved. 27 事業目的を達成するための知識やルールを抽象化して表現したもの リーンスカウクが提唱したモデルに近い ドメインモデル
プレゼンテーション層 アプリケーション層 インフラストラクチャ層 ドメイン層 ドメインモデル 集約 エンティティ 値オブジェクト ドメインサービス ドメインイベント
(C) Recruit Co.,Ltd. All rights reserved. 28 モデル別のアプリケーションの設計手法 モデルの種類によって設計手法も異なる •
データモデル: トランザクションスクリプト • ドメインモデル: ドメイン駆動設計、(類似手法としてクリーン アーキテクチャ等)
(C) Recruit Co.,Ltd. All rights reserved. 29 4. トランザクションスクリプト
(C) Recruit Co.,Ltd. All rights reserved. 30 トランザクションスクリプトとは データとロジックを別々に設計する手続き型の設計手法 引用元:https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRFzI0s-ihM14eHcwrcXSket8EZmNXlpQQVqaBE9daX5CKOwVLsP8zuSA9G6XpiGPzhy5Y&usqp=CAU
(C) Recruit Co.,Ltd. All rights reserved. 31 トランザクションスクリプトの特徴 データをデータモデルが保持し、ロジックを別の機 能クラス(サービス等)に持たせる
データ データモデル ロジック1 モジュールA ロジック2 モジュールB
(C) Recruit Co.,Ltd. All rights reserved. 32 オブジェクト指向本来の思想 データと振る舞いの両方を持つオブジェクト同士の メッセージパッシングが基本
(C) Recruit Co.,Ltd. All rights reserved. 33 トランザクションスクリプトの データベースとの関係 データモデルをそのままアプリケーションに適用
(C) Recruit Co.,Ltd. All rights reserved. 34 5. ドメイン駆動設計
(C) Recruit Co.,Ltd. All rights reserved. 35 ドメイン駆動設計とは ドメイン(ビジネス領域)フォーカスした設計手法 プレゼンテーション層
アプリケーション層 (ユースケース層) ドメイン層 インフラストラクチャ層 クライアントとの入出力 ユースケースの実現 ドメイン知識の表現 データベースとの入出力 引用元:https://booth.pm/ja/items/1835632
(C) Recruit Co.,Ltd. All rights reserved. 36 ドメイン駆動設計の 設計アプローチ アプリケーションの対象領域(ドメイン)の関心事
を、データとロジックが一体となったモデルとして 整理し、設計に反映させる データ ロジック ドメインモデル
(C) Recruit Co.,Ltd. All rights reserved. 37 ドメイン駆動設計のデータベースとの関係 データベースはあくまで「詳細」
(C) Recruit Co.,Ltd. All rights reserved. 38 6. 補足:ビジネスロジック
(C) Recruit Co.,Ltd. All rights reserved. 39 ビジネスロジック(MVC提唱当時) ビジネスロジックは本来、アプリケーションの特性 や各機能(ビジネス上の課題を解決するための振る
舞い)を表現するために用いられる概念
(C) Recruit Co.,Ltd. All rights reserved. 40 現代のシステム開発においては、プレゼンテーション層 (画面)とデータアクセス層以外の全てのロジックをビ ジネスロジックに該当するとみなすのが一般的
ビジネスロジック(現代解釈) アプリケーションに必要な機 能やビジネスプロセスを実 現するために必要なロジック (データの参照・生成・更新・ バリデーション、演算・判 定...etc) プレゼンテーション層 (ControllerやView) アプリケーション層 (ServiceやModel等を含む) データアクセス層
(C) Recruit Co.,Ltd. All rights reserved. 41 7. この資料のまとめ
(C) Recruit Co.,Ltd. All rights reserved. 42 ここまでのまとめ • モデルはアプリケーションの目的に沿って事象や
概念を抽象化したもの • モデルはオブジェクト指向でアプリケーションを 設計するための概念として提唱された • モデルはデータと振る舞い(ビジネスロジック) を持つ • 現代のシステム開発における、モデルはデータモ デルとドメインモデルの2種類 • モデル別にアプリケーションの設計手法が異なる
(C) Recruit Co.,Ltd. All rights reserved. 43 当講座では 『R書店』の設計・実装を通してデータ中 心の設計(トランザクションスクリプト)
とドメイン駆動設計の両方のアプローチに ついて、それぞれに付随する対応方法等と ともに解説する
(C) Recruit Co.,Ltd. All rights reserved. 44 8. 当講義の資料体系
(C) Recruit Co.,Ltd. All rights reserved. 45 実践アプリケーション設計:①データモデルとドメインモデル 実践アプリケーション設計:②トランザクションスクリプトへの対応 実践アプリケーション設計:③ドメイン駆動設計
当講義の資料構成 各設計の詳細は以下の資料で解説
(C) Recruit Co.,Ltd. All rights reserved. 46 アプリケーションの中心的な概念であるモデルにつ いて解説(※当資料) 実践アプリケーション設計
①データモデルとドメインモデル
(C) Recruit Co.,Ltd. All rights reserved. 47 トランザクションスクリプトの特徴と保守性を高め るための設計・実装上のポイントについて解説 実践アプリケーション設計
➁トランザクションスクリプトへの対応
(C) Recruit Co.,Ltd. All rights reserved. 48 ドメインモデルを用いたドメイン駆動設計について の概要および設計・実装について解説 実践アプリケーション設計
③ドメイン駆動設計
(C) Recruit Co.,Ltd. All rights reserved. 49 9. 関連講座 『実践データベース設計』について
(C) Recruit Co.,Ltd. All rights reserved. 50 実践データベース設計:①データベース設計概論 実践データベース設計:②概念データモデリング 実践データベース設計:③論理データモデリング
実践データベース設計:④物理データモデリング データベース設計講座の資料構成 データベース設計の詳細については以下の資料で解説
(C) Recruit Co.,Ltd. All rights reserved. 51 データベースの仕組みやデータベース設計の概要等 について解説 実践データベース設計
①データベース設計概論
(C) Recruit Co.,Ltd. All rights reserved. 52 架空のECサイト(R書店)のデータベース設計を ベースに概念データモデリングについて解説 実践データベース設計
②概念データモデリング
(C) Recruit Co.,Ltd. All rights reserved. 53 架空のECサイト(R書店)のデータベース設計を ベースに論理データモデリングについて解説 実践データベース設計
③論理データモデリング
(C) Recruit Co.,Ltd. All rights reserved. 54 架空のECサイト(R書店)のデータベース設計を ベースに物理データモデリングについて解説 実践データベース設計
④物理データモデリング
(C) Recruit Co.,Ltd. All rights reserved. 55 10. 関連リポジトリ
(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