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
KAZUMA Ukyo
May 31, 2013
Programming
3
360
モデリングをはじめよう
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
1.2k
Head First TypeScript
yaakaito
2
2.4k
JavaScript TDD Bootcamp
yaakaito
0
150
"Buster.JS" ClinetSide Javascript testing
yaakaito
4
1.1k
Other Decks in Programming
See All in Programming
PHPerKaigi 2024〜10年以上動いているレガシーなバッチシステムを Kubernetes(Amazon EKS) に移行する取り組み〜
tshinowpub
1
220
Cloud RunとCloud PubSubでサーバレスなデータ基盤2024 with Terraform / Cloud Run and PubSub with Terraform
shinyorke
7
1.9k
htmx is fun!
codehex
2
190
ONE WEDGE_Company_Information
1wedge
0
180
フロントエンドパフォーマンス 入門
shouta2
7
1.5k
Building a Smaller App Binary
kateinoigakukun
2
220
どうしてこうなった命名集 ~🔥編~ / OOC 2024 LT
pictiny
4
2.9k
上手な探索的テストとその上達方法について
matsu802
4
660
WebComponentsで フレームワークを1ページに共存させる
webuilder240
0
150
生成 AI の中身を覗いてみよう〜基礎から医療現場での応用まで〜
soh9834
2
770
導入から5年が経って見えた Datadog APM 運用の課題
bgpat
2
540
AppDeveloperCon 2024 EU: Building polyglot developer experiences in 2024
salaboy
0
380
Featured
See All Featured
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
5
1.4k
The Invisible Customer
myddelton
114
12k
A designer walks into a library…
pauljervisheath
199
23k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
58
14k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
39
4.3k
It's Worth the Effort
3n
180
27k
Gamification - CAS2011
davidbonilla
76
4.5k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
8
8.2k
Code Reviewing Like a Champion
maltzj
512
39k
Into the Great Unknown - MozCon
thekraken
10
830
Bootstrapping a Software Product
garrettdimon
PRO
302
110k
The MySQL Ecosystem @ GitHub 2015
samlambert
242
12k
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に保存する」
「商品を購入したら、 注文明細を作成する」
注目すべきは 名詞 と 動詞
やってみよう!