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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
honodera
February 10, 2017
Programming
1.1k
0
Share
ドメイン駆動設計 コンテキストマップについて
社内勉強会にて発表した、
ドメイン駆動設計に全く触れたことがない人向けに作成したスライドです。コンテキストマップのみに内容を絞っています。
honodera
February 10, 2017
More Decks by honodera
See All by honodera
(なんとなくわかった気になれる)ドメイン駆動設計の概要
honodera
5
980
Other Decks in Programming
See All in Programming
安いハードウェアでVulkan
fadis
1
890
年間50登壇、単著出版、雑誌寄稿、Podcast出演、YouTube、CM、カンファレンス主催……全部やってみたので面白さ等を比較してみよう / I’ve tried them all, so let’s compare how interesting they are.
nrslib
4
700
AWS re:Invent 2025の少し振り返り + DevOps AgentとBacklogを連携させてみた
satoshi256kbyte
2
140
iOS機能開発のAI環境と起きた変化
ryunakayama
0
140
Symfonyの特性(設計思想)を手軽に活かす特性(trait)
ickx
0
120
飯MCP
yusukebe
0
480
VueエンジニアがReactを触って感じた_設計の違い
koukimiura
0
150
存在論的プログラミング: 時間と存在を記述する
koriym
5
770
Nuxt Server Components
wattanx
0
240
Feature Toggle は捨てやすく使おう
gennei
0
410
「速くなった気がする」をデータで疑う
senleaf24
0
140
AI活用のコスパを最大化する方法
ochtum
0
370
Featured
See All Featured
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
880
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
250
Un-Boring Meetings
codingconduct
0
250
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
What does AI have to do with Human Rights?
axbom
PRO
1
2.1k
My Coaching Mixtape
mlcsv
0
92
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.7k
Between Models and Reality
mayunak
3
260
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
160
So, you think you're a good person
axbom
PRO
2
2k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.2k
Transcript
υϝΠϯۦಈઃܭ ίϯςΩετϚοϓͷ ֓ཁ
લճDDDͷ֓ཁ ʹ͍ͭͯઆ໌͠·ͨ͠ ࠓճίϯςΩετϚοϓʹ ͍ͭͯ
(ಋೖ) ίϯςΩετϚοϓ ͬͯͳΜͰ͔͢ʁ
ίϯςΩετϚοϓͱ • DDDͷύλʔϯϥϯήʔδͷ̍ͭ ίϯςΩετϚοϓDDDΛߟҊͨ͠ΤϰΝϯ εͬͯਓ͕OO+XPͰͬͨͱ͖ͷ࣮ફΛ׆͔͠ ͯߟҊͨ͠ܦݧଇɺ๏ଇͷ̍ͭ(͜͏͍͏ͱ͖ʹ͜ ΜͳऔΓΈΛߦͳͬͨΒ͏·͍ͬͨ͘తͳ) ※ύλʔϯϥϯήʔδ...ൃݟ͔Βղܾͷϓϩ ηεͷҰఆͷϧʔϧΛهड़ͨ͠ͷ
DDDͷଞͷύλʔϯׂѪ • ϢϏΩλεݴޠ ϓϩδΣΫτʹؔ͢ΔʮاըɺઃܭɺϓϩάϥϚɺσβΠφʔɺ ސ٬ɺίʔυɺυΩϡϝϯτʯ͕ڞ௨ͷݴޠͰཧղ͞ΕΔ͜ͱ • ϨΠϠԽΞʔΩςΫνϟ υϝΠϯʹؔ͢Δίʔυ͕֤ϨΠϠʹࢄ͢ΔͱɺίʔυΛಡΜͰ ҙຯΛཧղ͢Δ͜ͱ͕ࠔʹͳΔɻυϝΠϯʹؔ͢ΔॲཧυϝΠ ϯʹدͤΔ
• υϝΠϯͷߏཁૉ(ΤϯςΟςΟɺΦϒδΣΫτɺαʔϏε...) υϝΠϯͷΫϥεΛͲͷΑ͏ʹ࡞͍͔ͬͯ͘ • ଞ͍Ζ͍Ζ
(ຊ) ίϯςΩετϚοϓ ͷৄࡉͳઆ໌
υϝΠϯΛྨͯ͠ ͦΕͧΕͷؔ࿈Λཧ͢Δ
͜Μͳײ͡Ͱᶃ UUpstream(ఏڙ͢Δଆ) DDownstream(ఏڙ͞ΕΔଆ)
͜Μͳײ͡Ͱᶄ
υϝΠϯʹ͍ͭͯ෮श • ࠷େ͖͍υϝΠϯ(ϏδωευϝΠϯ/Ϗδωε ͷେ)ʮhogeࣾͷఏڙ͍ͯ͠ΔαʔϏεfooʯ →େͱͳΔ↑ษڧձͰࢼ͠ʹ࡞Δࡍɺ·ͣ࠷ॳ ʹશһͰܾΊͯಉҙͨ͠΄͏͕͍͍͔ • Ұ෦Λࢦ͢߹ʹʮίΞυϝΠϯʯٴͼʮαϒ υϝΠϯʯͱ͍͏ݴ༿Λ͏
αϒυϝΠϯͬͯ (খചۀऀʹΑΔΦϯϥΠϯൢചΛྫʹ͢Δͱ...) • ϏδωευϝΠϯʮECίϚʔεʯͱ͔ • 4ͭͷओཁͳαϒυϝΠϯ 1.Χλϩά(ങ͍٬ʹݟͤΔ)ɺ2.จ(ങ͍٬͔Βड͚ ͚Δ)ɺ3.ٻ(ۚΛऩ͢Δ)ɺ4.ൃૹ(ങ͍खʹΛൃૹ͢ Δ)ɺଞࡏݿͱ͔͍Ζ͍Ζ... ※ൢച͢Δ෯͍ͷͰͦͷৄࡉؾʹ͠ͳ͍
ίΞυϝΠϯͬͯ • ڝ߹ଞࣾʹର͢Δ༏ҐΛཱ֬Ͱ͖ΔͳͲɺϏδωεΛߦͳͬ ͍ͯ͘͏͑Ͱॏཁͳ͜ͱؚ͕·Ε͍ͯΔͷ • αϒυϝΠϯͷྫ(DDDຊͷྫ)Ͱɺݕ౼͍ͯͬͨ݁͠Ռ ʮधཁ༧ଌػೳʯͱ͍͏υϝΠϯ͕Ճ͞ΕɺίΞυϝΠ ϯͱͨ͠ • ৫Λޭʹಋ͘ॏཁͳͷ
ษڧձͰ͏ͪʹͱͬͯ࠷ॏཁͳͷͳʹ͔ɺͦΕͧ Εߟ͑ͯΈ͍ͯͩ͘͞
ίϯςΩετϚοϓ࡞ͷ ਐΊํ 1. ͲΜͳαϒυϝΠϯ͕͋Δ͔ڍ͛Δ 2. ίΞυϝΠϯͲΕ͔ΈΜͳͰ͠߹ܾͬͯΊΔ 3. αϒυϝΠϯಉ࢜ͷؔ࿈ΛΈΜͳͰ͠߹ܾͬͯΊΔ 1.ʙ3.Λ܁Γฦ͢(ҰͰᘳʹͰ͖͕͋ΔͷͰͳ͍ ͷͰɺ܁Γฦٞ͢ΛॏͶΔ)
ࡉ͔͍ਐΊํ֤νʔϜʹ͓·͔ͤ
ίϯςΩετؒͷؔᶃ • ύʔτφʔγοϓ ྆νʔϜ͕ڠྗ͢Δɻ૬ޓґଘͷؔ • ڞ༗Χʔωϧ ໌ࣔతʹڥքΛܾΊɺҰͭͷυϝΠϯΛ2ͭͷνʔϜ͕ڞ༗͢Δɻ ͦͷࡍϢϏΩλεݴޠ߹ΘͤΔ • ސ٬/ڙڅऀͷ։ൃ
(্ྲྀνʔϜͷޭͷͨΊʹ)্ྲྀ͕ԼྲྀνʔϜͷχʔζʹԠ͑Δ • ॱԠऀ ্ྲྀ(ఏڙ͢Δଆ)͕Լྲྀ(ఏڙ͞ΕΔͷΛ͏ଆ)ͷཁٻʹԠ͑ͯ͘Εͳ͍ͷͰ͖͋ ΒΊΔɻզຫɻ
ίϯςΩετؒͷؔᶄ • ഊࢭ(ACL AntiCorruptin Layer) ͦΕͧΕͷίϯςΩετʹͯར༻͢ΔϞσϧΛมΛ྆ํʹରͯ͠ߦ͏ɻ ͦΕͧΕͷίϯςΩετʹӨڹͳ͍ • ެ։ϗεταʔϏε(Open Host
Service) αϒγεςϜΛΞΫηεͰ͖ΔΑ͏ʹ͢ΔϓϩτίϧΛఆٛɻશһ͕༻Ͱ͖Δ • ެද͞Εͨݴޠ(Published Language) ίϯςΩετͷϞσϧಉ࢜Λม͢Δࡍʹڞ༗ͷݴޠΛఆٛ͢Δ • ผʑͷಓ ॱԠऀͷΑ͏ʹզຫ͢Δ͜ͱͳ͘ɺ͓ผΕɻඞཁͳͷΛࣗͨͪͰ࡞Δ • େ͖ͳటஂࢠ (ίϯςΩετؒͷؔͱ͍͏͔ίϯςΩετͷঢ়ଶ?)ͻͲ͍ঢ়ଶͷશମΛେ͖͘ғΉڥքΛ ࡞Δ
ίϯςΩετϚοϓΛ࡞Δత ʗϝϦοτ • ΓऔΓ͕ඞཁʹͳΔγεςϜΛѲͰ͖Δ • ڊେͳటͩΜ͝ͷΑ͏ͳίϯςΩετͱؔΘΔࡍʹ༗༻ ൴Βͱͷؔ࿈Λ͖ͪΜͱөͤ͞ݟΛಘ͓ͯ͘ɻͲ͜ͰνʔϜؒͷίϛϡ χέʔγϣϯ͕ඞཁʹͳΔ͔அͰ͖ΔΑ͏ʹͳΔ • νʔϜؒͷΓऔΓΛԁʹ͢ΔͨΊʹར༻Ͱ͖Δ
ਤʹͳ͍ͬͯΔͨΊ͔Γ͍͢ • ґଘ͢ΔଞͷϓϩδΣΫτͱͷؔΛҙਂ͘ߟ͑ΒΕΔΑ͏ʹͳΔ • ৫ͷߏʹؔΘͬͯ͘Δ ݱঢ়ίϯςΩετ㲈νʔϜʹͳ͍ͬͯΔʁ
࡞্ͷҙ • ͋͘·Ͱݱঢ়ɺݱଘ͢ΔͷΛਤࣔ͢Δ͜ͱ কདྷΉ࢟ɺ͋Δ͖࢟Λਤࣔ͢ΔͷͰͳ͍ • ڽΒͳ͍͍ͯ͘ ϗϫΠτϘʔυʹϚʔΧͰॻ͘ఔͰΑ͍ ↑ͱΓ͋͑ͣษڧձͰ্ه̎ͭΛҙ͢ΕΑ͍ • ίϯςΩετϚοϓΛߋ৽͢Δ
• ࡞ͬͨͷډࣨʹܝࣔ͢ΔͳͲͯ͠ϝϯόʔ͕͍ͭͰݟΕΔΑ͏ ʹ