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
develop-with-domain-expert
Search
haljik
August 31, 2019
Programming
1
1.1k
develop-with-domain-expert
haljik
August 31, 2019
Tweet
Share
More Decks by haljik
See All by haljik
ドメイン駆動設計の紹介
haljik
0
86
Isolating-the-domainの紹介
haljik
3
1.7k
普段使いのDDD
haljik
21
9.1k
実録Spring MVC
haljik
10
4.7k
ドメイン駆動設計を軽快に実践するための工夫
haljik
22
7.5k
Other Decks in Programming
See All in Programming
Rails 1.0 のコードで学ぶ find_by* と method_missing の仕組み / Learn how find_by_* and method_missing work in Rails 1.0 code
maimux2x
1
260
Datadog DBMでなにができる? JDDUG Meetup#7
nealle
0
160
Rubyと自由とAIと
yotii23
6
1.9k
AIレビュー導入によるCIツールとの共存と最適化
kamo26sima
1
220
技術を改善し続ける
gumioji
0
180
Visual StudioのGitHub Copilotでいろいろやってみる
tomokusaba
1
220
JAWS Days 2025のインフラ
komakichi
1
280
PHPのバージョンアップ時にも役立ったAST
matsuo_atsushi
0
230
AIプログラミング雑キャッチアップ
yuheinakasaka
19
5.1k
Drawing Heighway’s Dragon- Recursive Function Rewrite- From Imperative Style in Pascal 64 To Functional Style in Scala 3
philipschwarz
PRO
0
150
CloudRun, Spanner に対する負荷試験の反省と オブザーバビリティによるアプローチ
oyasumipants
1
150
Datadog Workflow Automation で圧倒的価値提供
showwin
1
300
Featured
See All Featured
Faster Mobile Websites
deanohume
306
31k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Building Your Own Lightsaber
phodgson
104
6.2k
How to train your dragon (web standard)
notwaldorf
91
5.9k
Rebuilding a faster, lazier Slack
samanthasiow
80
8.9k
Being A Developer After 40
akosma
89
590k
Making the Leap to Tech Lead
cromwellryan
133
9.1k
We Have a Design System, Now What?
morganepeng
51
7.4k
Six Lessons from altMBA
skipperchong
27
3.6k
Product Roadmaps are Hard
iamctodd
PRO
51
11k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Site-Speed That Sticks
csswizardry
4
420
Transcript
υϝΠϯΤΩεύʔτͱ ߦ͏ۀγεςϜ։ൃ ݄ !IBMKJL
ͱ͋ΔେاۀͰ ࣮ࡍʹߦΘΕͨۀγ εςϜ։ൃʹͯ ˞ҙਤతʹ΅͔ͨ͠Γݴ༿Λม͑ͨΓ͠ ͨΓ͍ͯ͠·͢
݄தࠒ w ։ൃମ੍·ͩͳ͍ w !JSPG͞ΜɺϓϦϯε͞Μ͕গ͠ઌʹίϯαϧςΟϯάʹ ೖ͍ͬͯͨ w ྻºߦ΄Ͳ͋Δɺͳʹ͔ͷ༧࣮Λཧͯͦ͠͏ ͳΤΫηϧϑΝΠϧ w
γεςϜԽͷ༧ࢉΛऔಘ͢ΔͨΊͷը໘Πϝʔδͱࢿྉ
ԿΘ͔Βͳ͍ ࢿྉ͋Δ͕ͦ͜ʹ͋Δݴ༿ͷॏΈ ҙਤ͕ෆ໌ͩͱ಄ʹೖͬͯ͜ͳ͍
݄ υϝΠϯΤΩεύʔτͱ։ൃϝϯόʔͷإ߹ͤ
ମ੍ͷ֬ೝ
ମ੍ w υϝΠϯΤΩεύʔτ w 'ࢯݱۀΛؒ୲͍ͯͯ͠ΛѲ͓ͯ͠ΓɺγεςϜԽ͍ͨ͠ਓ w ΦʔΨφΠβʔ w 0ࢯ'ࢯΑΓ࠷ॳʹ૬ஊΛड͚ͯ͜ͷΛ࡞ͬͨਓ w
։ൃଆ w !JSPGϓϩάϥϚʔ w !LB[VIJUP@NϓϩάϥϚʔ w SJUPϓϩάϥϚʔ w ϓϦϯεσβΠφʔ w ࢲ !IBMKJL ϓϩάϥϚʔ
։ൃଆશһύʔτλΠϚʔ ͭϦϞʔτϫʔΫ ʮΈΜͳͲΕ͙Βׂ͍͚࣌ؒΔͷʁʯ JSPGʮि͙Β͍ʯ LB[VIJUP@Nʮि͙Β͍ʯ SJUPʮि͔͙Β͍ʯ IBMKJLʮि͙Β͍ʯ ˞࣌ؒͰ͢
υϝΠϯΤΩεύʔτ'ࢯ ۀͷ֓ཁΛઆ໌
ۀͷ֓ཁ w ෦ͷԼͰ͋Δ෦߹Θͤͯ΄Ͳ͋Δࣄۀͷ݄࣍අ༻ΛΤΫηϧͰܭը w ࣮ͱಥ͖߹Θͤͯ༧࣮Λཧ w ෦͝ͱʹ·ͱΊͨͷΛ͞Βʹ̍ͭʹ·ͱΊΔϚʔδۀ͕ͱͯେม มߋ͕ࠩѲͰ͖ͣɺΤΫηϧϑΝΠϧͷσάϨʔυ͕සൃ w ܭըཱҊԼهͷ໊લͰ͝ͱʹ̑ճߦΘΕΔɻ
w ॳϚΫϩ w ॳ݄ผ w मਖ਼ϚΫϩ w मਖ਼݄ผ w ணݟࠐ w ࣮ͱͷಥ͖߹Θͤຖ݄ w ͲͷܭըཱҊ࣌ظͰมΘ͔ͬͨɺॳͱ࣮ͷࠩͲ͏͔ͱ͍͏Α͏ͳνΣοΫΛߦ͏ͷͰܭ ըཱҊ࣌ظ͝ͱͷࣈ͓ͯ͘͠ඞཁ͕͋Δ
݄த०·ͰʹγεςϜԽ͍ͨ͠
ϛʔςΟϯάޙ ಄ʹඳ͍ͨϞσϧ
ཌ݄ ճͷϛʔςΟϯά w ਖ਼݄ٳΈ໌͚Ͱ·ͩԿ࡞ͬͯͳ͍ w ݄̍·ͰͷਐΊํͷେ·͔ͳ߹ҙ w Ұ൪ࠔ͍ͬͯΔ෦Ͱ͋Δɺ֤෦ͰऔΓ·ͱΊͨ ϑΝΠϧͷ౷߹࡞ۀͰɺσάϨʔυ͕ى͜Βͳ͍ɺฤ ूϛεΛݟͭΒΕΔΑ͏ͳΈΛ࡞Δ
w ؆қతͳαϚϦݟΕΔΑ͏ʹ͢Δ w ܭըཱҊ࣌ظʹ͍ͭͯυϝΠϯΤΩεύʔτ'ࢯͱձ
ܭը࣌ظʹ͍ͭͯͷձ w ։ൃऀʮ֤ܭը࣌ظҎ֎ʹܭըΛมߋ͍ͯ͠ΔͱܯࠂΛදࣔ͠Α͏ͱߟ͑ͯ ͍·͢ɻ֤ܭըࡦఆͷ۩ମతͳ࣌ظܾ·͍ͬͯ·͔͢ʁʯ w 'ࢯʮܾ·͍ͬͯ·͢ɻ ॳϚΫϩ݄ʙཌ݄ɺॳ݄ผ݄ʙ݄ मਖ਼ϚΫϩ݄ʙ݄ɺमਖ਼݄ผ݄ʙ݄ ணݟࠐ݄ʙ݄̏ͱͳΓ·͢ɻ ͔͠͠ɺϚΫϩͱ݄ผͰฤू͢ΔॴҰॹͳͷͰ۠ผແͯ͘ྑ͍Ͱ͢ɻʯ
w ։ൃऀʮͳΔ΄ͲɻͰॳ͕݄ʙ݄ɺमਖ਼͕݄͔Β݄ɺணݟࠐ͕ ݄͔Β݄Ͱ͢Ͷɻʯ w 'ࢯʮͦͷ௨ΓͰ͢ʯ
ϛʔςΟϯάޙ ಄ʹඳ͍ͨϞσϧ
ͱΓ͋͑ͣ࡞Δ w ͬ͘͟Γ಄ͷதʹ͋ͬͨϞσϧΛ࣮ w ΤΫηϧΛಡΈࠐΜͰϞσϧʹϚοϐϯά w Ϛοϐϯάͨ͠ϞσϧΛӬଓԽ w อଘͨ͠ͷΛ·ͨΤΫηϧͰग़͢ w
ΤϥʔνΣοΫܯࠂͳͲࢴࣳډϨϕϧͰʮ͜Μͳͷ͕ग़· ͢Αʯ͕Θ͔Δ͚ͩ w ؆қαϚϦ์ஔ
Ұिؒޙ݄ ճͷϛʔςΟϯά w ؆қαϚϦͷత֬ೝͷ݁ՌɺଞͰ༻Ͱ͖Δ͠໌֬ͳ త͕ͳ͍ͷͰɺ༏ઌΛԼ͛Δ͜ͱʹ w ̍िؒͰͭͬͨ͘ͷΛσϞ w ϑΟʔυόοΫΛΒ͏
σϞʹର͢ΔϑΟʔυόοΫ w 'ࢯʮ෦ΛऔΓ·ͱΊ͍ͯΔ୲ऀ͕ใࠂͰ͖ΔΑ͏ʹ ͯ͠΄͍͠ʯ w ։ൃऀʮΘ͔Γ·ͨ͠ɻػೳͷܗͪ͜Β͔ΒఏҊ͠· ͢ɻૣΊʹ෦ͷऔΓ·ͱΊ୲ऀͷํʑʹू·͍ͬͯͨ ͖ͩɺ͓൸࿐ͯ͠ҙݟΛΒ͍·͠ΐ͏ʯ
͜ͷ࣌ͷϞσϧ
Ұिؒޙ݄ ճͷϛʔςΟϯά w ෦୲ऀʹΑΔʮใࠂʯ͔ΒɺͦΕΛ౷߹͢ΔʮϚʔδʯ ۀΛσϞ w ݄ॳ०෦୲ऀʹݟͤͯҙݟΛΒ͏͜ͱʹ
̎िؒޙ݄ w ෦ͷऔΓ·ͱΊ୲ऀ໊͕ॳΊͯࢀը w 'ࢯ͕ݱࡏ·ͰͷऔΓΈΛઆ໌ w γεςϜͰͷۀΛσϞ w 'ࢯͱ෦औΓ·ͱΊ୲ऀͰ࣭ٙԠ
'ࢯͱ෦୲ͷձ w ෦୲ʮաڈ݄ͷ࣮Λมߋ͢Δ͜ͱͰ͖·͔͢ʁʯ w 'ࢯʮܯࠂग़·͕͢ɺͰ͖·͢ɻʯ w ෦୲ʮશ෦͕ใࠂ͢Δ͚ͲͦͷؒϚʔδͰ͖Δ ͷʁʯ w 'ࢯʮͰ͖·͢ɻʯ
͜͏͍͏ΓऔΓ͕ଓ͘
ಈ࡞͢ΔιϑτΣΞͱɺͦΕΛݟͨυϝΠϯΤΩεύʔτ ಉ࢜ͷձΛฉ͘͜ͱͰࣗͨͪͷϞσϧͷ͔֬Β͠͞Λݕ ূͰ͖ͨ
͜͜·Ͱ͕ॳظͷϞσϦϯά
ͦͷޙ w ݄̏த०·Ͱผཁ݅ͷϞσϦϯάͱฏߦͭͭ͠ɺத֩ ͷۀ͕ճΔΑ͏ʹࡉ෦ΛϒϥογϡΞοϓ w ݄ʹத֩ۀ෦͚ͩͷຊ൪ӡ༻͕ແࣄ։࢝͞ΕΔ
͜ͷஈ֊ͰͷϞσϧ
ͪΐͬͱͨ͠ϒϨʔΫεϧʔ
ϒϨʔΫεϧʔલ ཁ݅ɿܭը࣌ظʹೖྗॴ͕มΘΔͷͰɺؒҧͬͨॴ͕มߋ ͞Ε͍ͯΔͱܯࠂΛग़͍ͨ͠ w ݄͔Β݄·ͰॳܭըͷཱҊ࣌ظͳͷͰमਖ਼ܭըɺணݟࠐ͕ม ߋ͞Ε͍ͯΔͱܯࠂΛग़͢ w ݄͔Β݄͕मਖ਼ܭըͷཱҊ࣌ظͳͷͰॳܭըɺணݟࠐ͕มߋ͞ Ε͍ͯΔͱܯࠂΛग़͢ w
݄͔Β݄·Ͱ͕ணݟࠐͷཱҊ࣌ظͳͷͰॳܭըணݟࠐ͕ม ߋ͞Ε͍ͯΔͱܯࠂΛग़͢ ݱࡏ͕Ͳͷ࣌ظʹ͋ͨΔ͔ΛΔඞཁ͕͋Δ
֘෦ͷϞσϧ ͜ͷϞσϧͰݱʹ͓͍ͯͲͷܭըཱҊظؒʹ͋ͨΔ͔Λݕग़Մೳ
ϒϨʔΫεϧʔͷ͖͔͚ͬ ͋Δଧͪ߹ΘͤͰͷձʹग़͖ͯͨݴ༿ w ̛ࢯʮ݄ʙ݄ॳܭըͳͷͰʯ w ։ൃऀʮॳܭը݄͔ͬͯΒ݄ͩͱݴ͏͓Ͱ͕ͨ͠ ͜ͷ߹ͷҙຯͲ͏͍͏͜ͱͰ͠ΐ͏͔ʁʯ w ̛ࢯʮॳܭըΛݟΔͷ͕݄͔Β݄ͱ͍͏ҙຯͰ͢ɻʯ w
։ൃऀʮͳΔ΄ͲɺཱͯͨܭըΛӡ༻͢Δɻ༧࣮ΛݟΔ࣌ ظ͕݄͔Β݄ͱ͍͏ҙຯͰ͢Ͷʯ
ϒϨʔΫεϧʔޙ ͜ͷมԽʹΑͬͯݱࡏ͕ͲͷܭըཱҊ࣌ظ͔ʹՃ͑ͯɺ Ͳͷӡ༻࣌ظͰ͋Δ͔Λݕग़͢ΔೳྗΛ֫ಘͨ͠ ݁Ռͱͯ͠අ༻ೖྗʹ͓͚Δܯࠂ͕ΑΓࡉ͔͘ग़ྗͰ͖ΔΑ͏ʹͳΔ
ݱࡏͷঢ়گ w ݄ʹӡ༻։͍͕࢝ͯͨ͠ɺͦͷޙϒϥογϡΞοϓ ΛॏͶ݄͔ͯΒຊ֨Քಇ͍ͯ͠Δ w ॳͷ෦ॺ෦͚ͩͰͳ͘࠷ऴ෦ॺͰར༻͞Ε͍ͯΔ w 'ࢯᐌ͘ ʮύοέʔδɺϕϯμʔʹґཔ͢Δͷͱൺֱ͔ͯ͠ ͳΓίετͰޮՌతͳγεςϜΛ࡞Δ͜ͱ͕Ͱ͖ͨʯ
ࠓͷॴେޭͱݴͬͯྑͦ͞͏
ϙΠϯτ w ࡞Γॏཁ Ͱ͖ΔݶΓతͳಈػΛ࣋ͭਓΛΞαΠϯ͢Δ w త͕ᐆດͳػೳ༏ઌॱҐΛԼ͛ͯίΞʹूத͢Δ w ॏཁͳεςʔΫϗϧμʔΛૣΊʹ·͖͜Ή ʮҰॹʹߟ͑ͯͭͬͨ͘ײʯ͕ޙͷڠྗؔʹͭͳ͕Δ w
༷ΤϯδχΞ͕ߟ͑ͯఏҊ͢Δ ͦΕΛಋ͖ͩͨ͢ΊͷϧʔϧΛυϝΠϯΤΩεύʔτ͔ΒҾ͖ग़͢ w ձΛϞσϧʹө͢Δ w ձͰϞσϧΛݕࠪ͢Δ
࠶ݱੑ w 0ࢯ͔ͩΒ͜ͷΛ༻ҙͰ͖ͨ w 'ࢯ͕͍͔ͨΒૣ͍ஈ֊ͰίΞʹूதͰ͖ͨ w ։ൃϝϯόʔ͕ۀܥͰ%%%Λࢦ͖ͯͨ͠ਓͨͪͩͬ ͨ ࠶ݱͰ͖Δؾ͍ͯ͠ͳ͍
্࣮Ͱͨ͜͠ͱ ΤΫηϧ্ʹ͋Δେྔͷ߲ΛͲ͏ѻ͏͔ w ϞσϧԽ͢ΔͷίΞͷؔ৺ࣄͷΈ w ଞจࣈͲ͓Γʮͦͷଞʯͱͯ͠ΩʔόϦϡʔͰอ࣋ w ඞཁʹͳͬͨΒϞσϧԽ͢Δ
ΞʔΩςΫνϟ υϝΠϯϞσϧ ৄ͘͠IUUQTHJUIVCDPNTZTUFNTFLLFJJTPMBUJOHUIFEPNBJO
ͬͨπʔϧ w υϝΠϯΤΩεύʔτͱͷΓͱΓ 'BDFCPPLϝοηϯδϟʔ ҙਤతͰͳ͍͚Ͳ w ։ൃऀಉ࢜ͷΓͱΓ 4MBDL(JUIVC*446& w
ϞσϧͷՄࢹԽ +*(IUUQTHJUIVCDPNEEEKBWB+JH