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
かとじゅん
June 05, 2019
Programming
4
2.5k
ドメイン駆動設計基礎講座_ドメインと組織編_
かとじゅん
June 05, 2019
Tweet
Share
More Decks by かとじゅん
See All by かとじゅん
なぜイベント駆動が必要なのか - CQRS/ESで解く複雑系システムの課題 -
j5ik2o
15
6.7k
アクターシステムに頼らずEvent Sourcingする方法について
j5ik2o
8
1.1k
メッセージとイベントを中核に置いたシステム設計の有用性について
j5ik2o
12
3.8k
私のキャリアの旅路: 技術をきっかけに変化を楽しむ
j5ik2o
3
910
いかに開発効率と品質を高めるか: ドメイン駆動設計と組織パターンの視点から考える
j5ik2o
4
2.8k
社内のメンバーに「関数型プログラミングの学習・教育」についていろいろ聞いてみた
j5ik2o
2
2k
AWS データベースブログの記事 「Amazon DynamoDBによる CQRSイベントストアの構築」 を勝手に読み解く
j5ik2o
2
3.1k
EIPとAkkaについて
j5ik2o
3
2.8k
モデルを中心にデザイン(設計)すること
j5ik2o
3
3k
Other Decks in Programming
See All in Programming
設計やレビューに悩んでいるPHPerに贈る、クリーンなオブジェクト設計の指針たち
panda_program
6
2.1k
データの民主化を支える、透明性のあるデータ利活用への挑戦 2025-06-25 Database Engineering Meetup#7
y_ken
0
360
レベル1の開発生産性向上に取り組む − 日々の作業の効率化・自動化を通じた改善活動
kesoji
0
210
20250628_非エンジニアがバイブコーディングしてみた
ponponmikankan
0
680
生成AI時代のコンポーネントライブラリの作り方
touyou
1
210
Agentic Coding: The Future of Software Development with Agents
mitsuhiko
0
100
Goで作る、開発・CI環境
sin392
0
230
ruby.wasmで多人数リアルタイム通信ゲームを作ろう
lnit
3
480
RailsGirls IZUMO スポンサーLT
16bitidol
0
180
Result型で“失敗”を型にするPHPコードの書き方
kajitack
5
650
AIともっと楽するE2Eテスト
myohei
6
2.6k
チームのテスト力を総合的に鍛えて品質、スピード、レジリエンスを共立させる/Testing approach that improves quality, speed, and resilience
goyoki
5
870
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Thoughts on Productivity
jonyablonski
69
4.7k
Designing for humans not robots
tammielis
253
25k
Visualization
eitanlees
146
16k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
107
19k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
It's Worth the Effort
3n
185
28k
Being A Developer After 40
akosma
90
590k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Making the Leap to Tech Lead
cromwellryan
134
9.4k
Transcript
υϝΠϯۦಈઃܭجૅߨ࠲ ʙυϝΠϯͱ৫ฤʙ ͔ͱ͡ΎΜ !KJLP
υϝΠϯͱ#$
υϝΠϯͱ#$ w υϝΠϯ ྖҬ w Ϗδωεͷઓུ՝Λੳ໌֬Խ͢ΔྖҬ w #$ڥք͚ͮΒΕͨίϯςΩετ ղܾྖҬ
w Ϗδωεͷઓུ՝Λղܾ͢ΔྖҬ
αϒυϝΠϯ w ίΞυϝΠϯ w ৫Λޭʹಋ͘࠷ॏཁͳ ͷ w αϒυϝΠϯ w ࢧԉυϝΠϯ
w ϏδωεʹඞཁෆՄܽͩ ͕ίΞυϝΠϯ΄ͲॏཁͰ ͳ͍ͷ w ൚༻υϝΠϯ w ϏδωεʹಛผͰͳ͍͕ શମͱͯ͠ඞཁͳͷ ೝূ ܥ ֎෦&31ͳͲࠩ͠ସ͑ Մೳͳͷ υϝΠϯ ࢧԉυϝΠϯ ൚༻υϝΠϯ ίΞυϝΠϯ
&ίϚʔεͷυϝΠϯੳྫ υϝΠϯ &ίϚʔε#$ Χλϩά จ ٻ ൃૹ ࡏݿ w ଟ͘ͷؔ৺ࣄ͕୯Ұ#$ʹด͡ࠐΊΒΕͯ͢ͷཁٻʹରԠͰ͖ͳ͍
w ຊ࣭తͰͳ͍ґଘ͕ൃੜ͠มߋ༰қੑ͕Լ͢Δ w ৫ͷίϛϡχέʔγϣϯෳࡶԽ͢Δ w ຊདྷαϒυϝΠϯɾ#$ຖʹׂ͞ΕΔ͖ w ग़య࣮ફυϝΠϯۦಈઃܭ
αϒυϝΠϯͷੳ w ෳࡶʹབྷΈ߹ͬͨϞ σϧΛղ͠ɺػೳ ʹج͍ͮͨαϒυϝ Πϯʹׂ͢Δ w αϒυϝΠϯ#$ͷ ؔੑཧ͢Δ w
#$͕αϒυϝΠϯ ͚ͩͰΓཱͭͱ ݶΒͳ͍͕ɺͰ͖Ε #$ʹαϒυϝΠ ϯ͕·͍͠ w ग़య࣮ફυϝΠϯۦ ಈઃܭ υϝΠϯ &ίϚʔε#$ ٻ จ Χλϩά ࡏݿ#$ ൃૹ धཁ༧ଌ#$ ࡏݿ
ίΞυϝΠϯͷੳ w ࡏݿͷ࠷దԽ͕՝ w ചΕߦ͖͕Α͍Λޮతʹࡏݿ͠ɺചΕͳ͍ ͷࡏݿΛ֬อ͠ͳ͍ɻ w ࢿۚޮΛվળ͠ചΕےͷࡏݿΛ֬อ͘͢͠ ͢Δɻ·ͨɺ༧Λ্ճΔചΕߦ͖Λݟͤͨͱ͖ɺ ͦͷͷࡏݿ֬อͰ͖ͳ͚ΕͳΒͳ͍ɻ
w কདྷͷࡏݿྔച্ݟࠐΈΛաڈͷ͔ΒஅͰ ͖Εେ͖ͳॿ͚ʹͳΔɻ͜ͷΑ͏ͳधཁ༧ଌػೳ ͷಋೖ৽ͨͳίΞυϝΠϯʹͳΔͩΖ͏
ίϯςΩετϚοϓͷత w γεςϜؒͷؔΛదʹ ѲͰ͖Δ w νʔϜطଘγεςϜͱͷ࿈ ܞํ๏ΛѲͰ͖ɺଞνʔϜ ͱͷίϛϡχέʔγϣϯͷඞ ཁੑΛஅͰ͖ΔΑ͏ʹͳΔ w
ίϯςΩετϚοϓ৫ؒ ͷΛݟ͚ͭग़ͤΔ།Ұͷ υΩϡϝϯτͱͳΔͨΊɺϓ ϩδΣΫτͷޭʹෆՄܽͱ ͞Ε͍ͯΔ w ग़య࣮ફυϝΠϯۦಈઃܭ ೝূɾΞΫηε ΞδϟΠϧ ϓϩδΣΫτཧ ίϥϘϨʔγϣϯ 6 6 6 % % %
ίϯςΩετϚοϓͷύλʔϯ w ৫ύλʔϯ w νʔϜͷؔΛ ද͢ w ౷߹ύλʔϯ w σʔλͱγες
Ϝͷ࿈ܞํ๏Λ ද͢ νʔϜ# νʔϜ" γεςϜ# γεςϜ" ձ σʔλ
৫ύλʔϯ
ύʔτφʔγοϓ w ೋͭͷίϯςΩετΛ୲͢ΔνʔϜ͕ޭɾࣦഊͷ ӡ໋Λڞʹ͢Δ৫ύλʔϯ ӡ໋ڞಉମ w νʔϜؒͰڠྗతͳؔΛங͖ɺ։ൃͷϓϥϯχϯά ΠϯςάϨʔγϣϯͷཧڞಉͰߦ͍ɺ͓ޓ͍ͷ χʔζΛຬͨ͢Α͏ʹ͢Δඞཁ͕͋Δɻ૬ޓґଘ͢Δ
ػೳ͓ޓ͍ͷϦϦʔεʹؒʹ߹͏Α͏ʹ։ൃ͢Δ $POUFYU# $POUFYU"
ผʑͷಓ w ίϯςΩετΛ͢Δ৫ύλʔϯ w ೋͭͷػೳͷू߹͕͓ޓ͍ʹͱͬͯෆՄܽͰͳ͍ͳ Β͢Δ͜ͱ͕Ͱ͖Δ w ΠϯςάϨʔγϣϯͷߴίετΛΘ͟Θ͟͏ඞཁ ͳ͍ɻ։ൃऀ͕ͦͷখ͍͞είʔϓͰγϯϓϧͰಛԽ ͨ͠ղܾࡦΛݟ͚ͭΒΕΔΑ͏ʹ͢Δ
$POUFYU# $POUFYU"
ॱԠऀ w ্ྲྀԼྲྀ͕ؔ͋Δ৫ύλʔ ϯɻͨͩ͠ɺ্ྲྀ͕Լྲྀͷཁٻ ʹԠ͑Δಈػ͕ͳ͍ɻ w ্ྲྀʹԼྲྀͷ൱ͷ͕ͳ͍ w ԼྲྀνʔϜ#$ؒͷมͷखؒ Λলͨ͘Ίʹɺ্ྲྀʹ༩͑ΒΕ
ͨϞσϧͰզຫ͢͠Δ͜ͱʹͳ Δ $POUFYU# $POUFYU" 6QTUSFBN %PXOTUSFBN
ސ٬ڙڅऀ w ্ྲྀԼྲྀ͕ؔ͋Δ৫ύλʔ ϯɻͨͩ͠ɺ্ྲྀͷνʔϜ͕ޭ ͢Δ͔Ͳ͏͔͕Լྲྀͷ݁Ռʹࠨӈ ͞ΕΔ w ্ྲྀνʔϜԼྲྀνʔϜͷχʔζ ʹ༷ʑͳํ๏ͰରԠ͢Δඞཁ͕͋ ΔɻԼྲྀͷ༏ઌॱҐΛߟྀͯ͠ɺ
্ྲྀͷϓϥϯχϯάΛߦ͏ɻԼྲྀ ͷཁ݅ʹඞཁͱͳΔ࡞ۀʹ͍ͭͯ ަব͠ɺ༧ࢉΛཱͯΔ͜ͱͰఏڙ ͷଋͱεέδϡʔϧΛશһ͕ཧ ղͰ͖ΔΑ͏ʹ͢Δ $POUFYU# $POUFYU" 6QTUSFBN %PXOTUSFBN
౷߹ύλʔϯ
ڊେͳటஂࢠ #JH#BMMPG.VE w ڥք͕ͳ͍͘͠ᐆດͳγεςϜΛ ࣔ͢Ξϯνύλʔϯ w ෳͷ֓೦ମܥ͕ࠞ͟Γ߹͍ɺఆٛ ϧʔϧ͕ᐆດͳͬͨΓໃ६͢Δɻػೳ Ճ͞ΕΔͱJGDBTFͳͲͷذϩδο Ϋ͕૿͑ΔɻґଘؔιϑτΣΞ
Λԣஅ͠࠷ऴతʹటஂࢠʹͳΔ w &ίϚʔεͷͱࡏݿͷผͷ ֓೦͕ͩɺڥք͕ͳ͍ͷͰͯ͢ͷཁ ٻΛຬͨ͢ɺਆϞσϧͱͯ͠ͷϞ σϧ͕Ͱ͖͕͋Δɻཧղมߋࠔ ʹʜ w ࠷ਓؾ͕͋Δઃܭख๏Ͱ͋Δʜ $POUFYU# $POUFYU" $POUFYU$
ڞ༗Χʔωϧ w Ұ෦ͷϞσϧͦΕʹؔ࿈͢Δ ίʔυΛڞ༗͢Εɺ૬ޓґଘ ੑ͕ඇৗʹߴ·Δɻ w ઃܭ࡞ۀͷॿ͚ʹͳΔ͜ͱ͋ ΕɺٯʹअຐʹͳΔ͜ͱ͋ ΔɻҰํͷνʔϜʹ૬ஊͤͣʹ มߋͯ͠ͳΒͳ͍ɻ
w ໌ࣔతͳڥքΛఆΊɺೋͭͷ νʔϜ͕߹ҙͨ͠υϝΠϯϞσ ϧͷαϒηοτΛࢦఆ͢Δ $POUFYU# $POUFYU"
ഊࢭ "$- w ഊͨ͠ੈքͷϞσϧΛ৽͍͠ੈքʹ ࣋ͪࠐ·ͳ͍ͨΊͷ౷߹ύλʔϯ w ԼྲྀͷΫϥΠΞϯτִ͢ΔͨΊͷ ϨΠϠʔΛ࡞͢Δ͜ͱʹΑͬͯɺ্ ྲྀͷγεςϜͷػೳΛಠࣗͷυϝΠϯ Ϟσϧͷ༻ޠͰදݱ͢ΔػೳΛఏڙ͢
Δ w "$-طଘͷ*'Λͯ͠ଞͷγες Ϝͱ௨৴͢ΔͷͰɺଞͷγεςϜΛम ਖ਼͢Δඞཁ΄ͱΜͲͳ͍͔ɺ·ͬͨ ͘ͳ͍͜ͱ͋Δɻ෦తʹɺ͜ͷ ϨΠϠʔ͕ඞཁʹԠͯ͡ೋͭͷϞσϧ ؒͰͷมΛ྆ํʹରͯ͠ߦ͏ $POUFYU# $POUFYU" "$-
ެ։ϗεταʔϏε 0)4 w ϓϩτίϧΛαʔϏεͱͯ͠ެ։͠ɺαϒγεςϜͱ ౷߹͢Δඞཁ͕͋Δ৫͕ར༻Ͱ͖ΔΑ͏ʹ͢Δ w ৽͍͠౷߹ͷཁ݅ʹରԠ͢Δࡍɺϓϩτίϧʹػೳ ΛՃ֦͠ு͢Δɻͨͩ͠ɺ͋ΔνʔϜ͚ͩʹಛ༗ͷ ཁٻผͩɻͦͷΑ͏ͳಛघͳέʔεʹɺҰճݶΓ ͷมαʔϏεΛ༻ͯ͠ϓτϩτίϧΛ֦ு͠ɺڞ
༗ϓϩτίϧ୯७ͰҰ؏ੑͷ͋Δঢ়ଶΛอͭ͜ͱɻ $POUFYU# $POUFYU" 0)4
ެද͞Εͨݴޠ 1- w ͭͷڥքͷϞσϧಉ࢜Λม͢ΔͨΊʹڞ௨ͷ ݴޠΛ͏ɻ w ϞσϧΛ͜ͷڞ௨ݴޠʹมͨ͠ޙʹɺҰํͷϞσ ϧม͢Δ w ެද͞Εͨݴޠެ։ϗεταʔϏεͱΈ߹Θͤ
ͯར༻͞ΕΔ͜ͱ͕ଟ͍ $POUFYU# $POUFYU" 1-
#$ͱϚΠΫϩαʔϏε
#$ͱϚΠΫϩαʔϏε w #$ʹԊͬͯαʔϏεڥքΛҾ͘ɻνʔϜ#$ʹҰக ͢Δ͜ͱʹͳΔɻ#$ͷυϝΠϯ֓೦ΛѲ͢͠ ͘ͳΔɻཁٻมԽ࣌ʹมߋରͷαʔϏε͕ಛఆ͞ Εɺมߋ͢Δඞཁͷ͋ΔՕॴ͕ݮΓɺਝʹσϓϩΠ Ͱ͖ΔΑ͏ʹͳΔ w #$ͷαʔϏε͕͓ޓ͍ʹର͢ΔαʔϏεʹ͋Δ Մೳੑ͕ߴ·ΓɺγεςϜઃܭͱϦϦʔεௐ͕༰қ
ʹͳΔɻ w Ϗδωεརؔऀͱͷରͷํʹؔͯ͠ɺνʔϜ ͕ͷઐՈͱΑ͍ؔΛங͖͘͢ͳΔ
#$γεςϜͷڥքʹ৫ͷڥք
৫ΞʔΩςΫνϟʹӨ͞ΕΔ w ΠϊϕʔγϣϯͷδϨϯϚΑΓ
ίϯΣΠͷ๏ଇ w γεςϜΛઃܭ͢Δ͋ΒΏΔ৫ɺඞͣͦͷ৫ͷίϛϡχ έʔγϣϯߏʹ฿ ͳΒ ͬͨߏΛ࣋ͭઃܭΛੜΈग़͢ɻ w ͭ·Γɺ৫ͷߏγεςϜͷߏͱἧ͑ͯͳ͚ΕͳΒͳ ͍ɻ w
ٯίϯΣΠઓུ ग़య"/"(*-&8": w lࣗͨͪͷ·͍͠ΞʔΩςΫνϟઃܭΛଅਐ͢ΔΑ͏ ʹɺνʔϜͱ৫ଆΛػಈతʹਐԽͤ͞Δ͜ͱΛਪ͢Δɻ ཧతʹʮٕज़తΞʔΩςΫνϟʯ͕ʮϏδωεΞʔΩς Ϋνϟʯͷಉܗࣸ૾ʹͳΔΑ͏ʹz w ʮਓؒ৫ؒͷίϛϡχέʔγϣϯʢใྲྀʣʯͱ͍͏ ͷ͕ιϑτΣΞ։ൃʹܾఆతͳΠϯύΫτΛ༩͑Δɺͱ ͍͏͜ͱΛ·ͣೝΊɺͦΕΛੵۃతʹ׆༻͢ΔΑ͏ʹɺͱ͍ ͏͜ͱͰ͢ɻ
·ͱΊ w ڥք͚ͮΒΕͨίϯςΩετ #$ Ϟσϧͷ༗ޮൣ ғͱݴΘΕΔɻͦͷϞσϧརؔऀؒγεςϜ ؒͰར༻͞ΕΔɻ͜ͷಛੑʹ߹Θͤͯɺ৫ͷڥք ʹγεςϜͷڥքͱͳΔΑ͏ʹ͢Δ͜ͱ͕·ΕΔ w ʮιϑτΣΞձͰͰ͖ͯΔʯͱ͍͏ݴ༿͋
Δɻ৫͕վม͞ΕΔͱ͖ɺίϛϡχέʔγϣϯ ͷมԽ͕ιϑτΣΞ༩͑ΔӨڹΛແࢹͰ͖ͳ ͍ɻࡶͳίϛϡχέʔγϣϯγεςϜΛෳࡶʹ͢ ΔՄೳੑ͋Δ͠ɺ৫ؒͷׂ͕γϯϓϧʹͳΕ ɺͦΕΛӨͨ͠γεςϜγϯϓϧʹͳΔ͔͠ Εͳ͍