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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Recruit
PRO
August 28, 2025
Technology
8
3.1k
実践アプリケーション設計 ①データモデルとドメインモデル
2025年度リクルート エンジニアコース新人研修の講義資料です
Recruit
PRO
August 28, 2025
Tweet
Share
More Decks by Recruit
See All by Recruit
まなび領域における生成AI活用事例
recruitengineers
PRO
2
110
AI時代にエンジニアはどう成長すれば良いのか?
recruitengineers
PRO
1
160
AIを用いたカスタマーサポートの業務プロセス・組織変革の実現
recruitengineers
PRO
1
97
問い合わせ自動化の技術的挑戦
recruitengineers
PRO
2
200
「Air ビジネスツールズ」のクライアントサポートにおける生成 AI 活用
recruitengineers
PRO
0
71
AI活用のためのアナリティクスエンジニアリング
recruitengineers
PRO
1
87
SaaS事業のデータマネジメント事例
recruitengineers
PRO
0
83
Kaggleで鍛えたスキルの実務での活かし方 競技とプロダクト開発のリアル
recruitengineers
PRO
1
210
LLM のプロダクト導入における開発の裏側と技術的挑戦
recruitengineers
PRO
1
130
Other Decks in Technology
See All in Technology
Kaggleの経験が実務にどう活きているか / kaggle_findy
sansan_randd
7
1.3k
LINE Messengerの次世代ストレージ選定
lycorptech_jp
PRO
19
7.6k
クラウド × シリコンの Mashup - AWS チップ開発で広がる AI 基盤の選択肢
htokoyo
2
100
「ヒットする」+「近い」を同時にかなえるスマートサジェストの作り方.pdf
nakasho
0
150
聲の形にみるアクセシビリティ
tomokusaba
0
150
「Blue Team Labs Online」入門 - みんなで挑むログ解析バトル
v_avenger
0
120
JAWSDAYS2026_A-6_現場SEが語る 回せるセキュリティ運用~設計で可視化、AIで加速する「楽に回る」運用設計のコツ~
shoki_hata
0
2.9k
わたしがセキュアにAWSを使えるわけないじゃん、ムリムリ!(※ムリじゃなかった!?)
cmusudakeisuke
1
430
AIエージェント時代に備える AWS Organizations とアカウント設計
kossykinto
2
410
Oracle Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
1.7k
組織のSREを推進するためのPlatform EngineeringとEKS / Platform Engineering and EKS to drive SRE in your organization
chmikata
0
190
Claude Cowork Plugins を読む - Skills駆動型業務エージェント設計の実像と構造
knishioka
0
300
Featured
See All Featured
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
250
We Have a Design System, Now What?
morganepeng
55
8k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
200
Design in an AI World
tapps
0
160
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
190
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Google's AI Overviews - The New Search
badams
0
930
Paper Plane (Part 1)
katiecoart
PRO
0
5.3k
Agile that works and the tools we love
rasmusluckow
331
21k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
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