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
飯MCP
yusukebe
0
480
生成 AI 時代のスナップショットテストってやつを見せてあげますよ(α版)
ojun9
0
340
Symfonyの特性(設計思想)を手軽に活かす特性(trait)
ickx
0
120
仕様漏れ実装漏れをなくすトレーサビリティAI基盤のご紹介
orgachem
PRO
8
4.5k
AI活用のコスパを最大化する方法
ochtum
0
370
今年もTECHSCOREブログを書き続けます!
hiraoku101
0
220
Feature Toggle は捨てやすく使おう
gennei
0
410
一度始めたらやめられない開発効率向上術 / Findy あなたのdotfilesを教えて!
k0kubun
4
2.8k
「接続」—パフォーマンスチューニングの最後の一手 〜点と点を結ぶ、その一瞬のために〜
kentaroutakeda
5
2.4k
Reactive ❤️ Loom: A Forbidden Love Story
franz1981
2
220
Java 21/25 Virtual Threads 소개
debop
0
320
Migration to Signals, Signal Forms, Resource API, and NgRx Signal Store @Angular Days 03/2026 Munich
manfredsteyer
PRO
0
230
Featured
See All Featured
Designing Experiences People Love
moore
143
24k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.5k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
68
38k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.4k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
300
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
370
How to Talk to Developers About Accessibility
jct
2
170
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
310
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.9k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
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) ίϯςΩετͷϞσϧಉ࢜Λม͢Δࡍʹڞ༗ͷݴޠΛఆٛ͢Δ • ผʑͷಓ ॱԠऀͷΑ͏ʹզຫ͢Δ͜ͱͳ͘ɺ͓ผΕɻඞཁͳͷΛࣗͨͪͰ࡞Δ • େ͖ͳటஂࢠ (ίϯςΩετؒͷؔͱ͍͏͔ίϯςΩετͷঢ়ଶ?)ͻͲ͍ঢ়ଶͷશମΛେ͖͘ғΉڥքΛ ࡞Δ
ίϯςΩετϚοϓΛ࡞Δత ʗϝϦοτ • ΓऔΓ͕ඞཁʹͳΔγεςϜΛѲͰ͖Δ • ڊେͳటͩΜ͝ͷΑ͏ͳίϯςΩετͱؔΘΔࡍʹ༗༻ ൴Βͱͷؔ࿈Λ͖ͪΜͱөͤ͞ݟΛಘ͓ͯ͘ɻͲ͜ͰνʔϜؒͷίϛϡ χέʔγϣϯ͕ඞཁʹͳΔ͔அͰ͖ΔΑ͏ʹͳΔ • νʔϜؒͷΓऔΓΛԁʹ͢ΔͨΊʹར༻Ͱ͖Δ
ਤʹͳ͍ͬͯΔͨΊ͔Γ͍͢ • ґଘ͢ΔଞͷϓϩδΣΫτͱͷؔΛҙਂ͘ߟ͑ΒΕΔΑ͏ʹͳΔ • ৫ͷߏʹؔΘͬͯ͘Δ ݱঢ়ίϯςΩετ㲈νʔϜʹͳ͍ͬͯΔʁ
࡞্ͷҙ • ͋͘·Ͱݱঢ়ɺݱଘ͢ΔͷΛਤࣔ͢Δ͜ͱ কདྷΉ࢟ɺ͋Δ͖࢟Λਤࣔ͢ΔͷͰͳ͍ • ڽΒͳ͍͍ͯ͘ ϗϫΠτϘʔυʹϚʔΧͰॻ͘ఔͰΑ͍ ↑ͱΓ͋͑ͣษڧձͰ্ه̎ͭΛҙ͢ΕΑ͍ • ίϯςΩετϚοϓΛߋ৽͢Δ
• ࡞ͬͨͷډࣨʹܝࣔ͢ΔͳͲͯ͠ϝϯόʔ͕͍ͭͰݟΕΔΑ͏ ʹ