Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
モデリングをはじめよう
KAZUMA Ukyo
May 31, 2013
Programming
3
290
モデリングをはじめよう
DDDのキッカケをつくるためのプレゼン
KAZUMA Ukyo
May 31, 2013
Tweet
Share
More Decks by KAZUMA Ukyo
See All by KAZUMA Ukyo
JavaScript+DDD実践編?
yaakaito
8
35k
Functional JavaScript/TypeScript
yaakaito
4
1k
Head First TypeScript
yaakaito
2
2k
JavaScript TDD Bootcamp
yaakaito
0
140
"Buster.JS" ClinetSide Javascript testing
yaakaito
4
1.1k
Other Decks in Programming
See All in Programming
パスワードに関する最近の動向
kenchan0130
1
340
Pluggable Storage in PostgreSQL
sira
1
200
Efficient UI testing in Android
alexzhukovich
2
130
Introduction to Property-Based Testing @ COSCUP 2022
cybai
1
150
SwiftUIで「意図」を伝える / swiftui_intention
uhooi
2
150
レビュー駆動学習のススメ_StaPy#83
soogie
0
330
アジャイルで始める データ分析基盤構築
nagano
1
930
一口目から美味しいReactのスルメ本🦑
taro28
2
710
タップルでComposeの段階的な導入を進めている話
ymshun
1
180
10Xの検索を10xしたい
metalunk
3
460
クラウド KMS の活用 / TOKYO BLOCKCHAIN TECH MEETUP 2022
odanado
PRO
0
200
MLOps勉強会_リアルタイムトラフィックのサーバレスMLOps基盤_20220810
strsaito
1
470
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
157
12k
10 Git Anti Patterns You Should be Aware of
lemiorhan
638
53k
Documentation Writing (for coders)
carmenintech
48
2.6k
The Art of Programming - Codeland 2020
erikaheidi
32
11k
Why You Should Never Use an ORM
jnunemaker
PRO
47
7.7k
The Invisible Side of Design
smashingmag
290
48k
Build your cross-platform service in a week with App Engine
jlugia
219
17k
Thoughts on Productivity
jonyablonski
44
2.4k
Mobile First: as difficult as doing things right
swwweet
213
7.6k
Bash Introduction
62gerente
598
210k
Scaling GitHub
holman
451
140k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
237
19k
Transcript
モデリングを はじめよう
ソフトウェアって何?
プログラム?
サーバー?
エク◦ル?
例
買い物する ソフトウェア amaz◦nみたいな
ありそうなフロー ϩάΠϯ͢Δ ݕࡧ͢Δ ϖʔδΛ։͘ $MJDLߪೖ͢Δ Λड͚औΔ
Login(user, password) items = Search(query) item.openPage() Buy(item) ありそうなコード
ϩάΠϯ͢Δ ݕࡧ͢Δ ϖʔδΛ։͘ $MJDLߪೖ͢Δ Λड͚औΔ
つまり
これがソフトウェア ϩάΠϯ͢Δ ݕࡧ͢Δ ϖʔδΛ։͘ $MJDLߪೖ͢Δ Λड͚औΔ
そして
買い物のドメイン ϩάΠϯ͢Δ ݕࡧ͢Δ ϖʔδΛ։͘ $MJDLߪೖ͢Δ Λड͚औΔ
これを 投影したのが
Login(user, password) items = Search(query) item.openPage() Buy(item)
で
ϩάΠϯ͢Δ ݕࡧ͢Δ ϖʔδΛ։͘ $MJDLߪೖ͢Δ Λड͚औΔ
誤解を恐れずに言えば あなたとamaz◦nの 間にあるユビキタス言語
ユビキタス言語?
要するに 名前
名前とは 名付けられたもの
名前とは 意味を持つもの
名前とは より簡潔であるもの
名前とは 意図を伝えるもの
名前とは 使われるもの
ところで
さっきのコードは ドメインを 投影できていません
Login(user, password) items = Search(query) item.openPage() Buy(item)
Login(user, password) items = Search(query) item.openPage() Buy(item)
Login(user, password) items = Search(query) item.openPage() 1ClickBuy(item)
誤解を恐れずに言えば ユビキタス言語を 使うということ
誤解を恐れずに言えば 名前を定義し理解し使用する これがドメイン駆動
ドメインを学ぶ
名前を知る
None
None
名前を見つける
「商品の購入」
「商品を購入したら、 その情報をDBに保存する」
「商品を購入したら、 その情報をDBに保存する」
「商品を購入したら、 注文明細を作成する」
注目すべきは 名詞 と 動詞
やってみよう!