Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
ふんわりとDDD実践してみた
tenmihi
March 09, 2019
Programming
0
180
ふんわりとDDD実践してみた
Fukuoka Perl Workshop #28 で発表しました
tenmihi
March 09, 2019
Tweet
Share
Other Decks in Programming
See All in Programming
GoogleI/O2022 LT報告会資料
shinsukefujita1126
0
390
Improving Developer Experience Through Tools and Techniques 2022
krzysztofzablocki
0
1.2k
Cybozu GoogleI/O 2022 LT会 - Input for all screens
jaewgwon
0
370
JetPackComposeは宣言型プログラミングパラダイムって実はよくわかってないんですが、別に使ってもいいんですよね、
conigashima
0
190
Meet Swift Regex
usamik26
0
370
インターン生・新卒向け、学校でもっと教えてほしいITエンジニア基本スキル
nearme_tech
0
130
実践エクストリームプログラミング / Extreme Programming in Practice
enk
1
560
Android Compose Component - mapping.
taehwandev
0
140
Licences open source : entre guerre de clochers et radicalité
pylapp
2
510
Angular‘s Future without NgModules: Architectures with Standalone Components @enterJS
manfredsteyer
PRO
0
240
Get Ready for Jakarta EE 10
ivargrimstad
0
990
Cross Deviceチームにおけるスマートテレビアプリ開発ってどんな感じ?
cokaholic
0
120
Featured
See All Featured
Automating Front-end Workflow
addyosmani
1351
200k
Done Done
chrislema
174
14k
BBQ
matthewcrist
74
7.9k
A Philosophy of Restraint
colly
192
15k
Testing 201, or: Great Expectations
jmmastey
21
5.4k
A better future with KSS
kneath
225
15k
How STYLIGHT went responsive
nonsquared
85
3.9k
Typedesign – Prime Four
hannesfritz
34
1.4k
Code Reviewing Like a Champion
maltzj
506
37k
Gamification - CAS2011
davidbonilla
75
3.9k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
151
13k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
5
510
Transcript
;ΜΘΓͱDDD࣮ફͯ͠Έͨ Fukuoka Perl Workshop #28 - tenmihi
ࣗݾհ • tenmihi (ͯΜΈͻ) • גࣜձࣾϞόΠϧϑΝΫτϦʔ • Perl, JS •
20189݄͔Β࡚Ͱ ϑϧϦϞʔτͯ͠·͢
͓͢Δ͜ͱ • ࠷ۙDDDΛ࣮ફͨ͠ͷͰͦΕʹ͍͓ͭͯΛ • ઓུతͳͱ͜ΖίϯςΩετਂ͗͢ΔͷͰ υϝΠϯϞσϧͷߏஙʹؔͯ͠ͷΈ৮Ε·͢
΄ͱΜͲPerlཁૉ͋Γ·ͤΜ
ࣗͷόοΫάϥϯυ • ࠓ·ͰαʔϏεͷӡ༻ΛόϦόϦͬͯͨ • େ͖ΊͷઃܭʹͪΌΜͱ͖߹ͬͨͷ ࠓճ͕ॳΊͯ
ͲΜͳϓϩδΣΫτ • طଘαʔϏεͷཧը໘ • ࣾͰ͏ͷͰެ։͢ΔͷͰͳ͍ • ӡ༻ʹؔ͢ΔಛఆͷۀϑϩʔΛࢧԉ͢Δ • 8ׂ΄Ͳ։ൃ͕ऴΘͬͯগ͠ͷظؒܦ͍ͬͯͨ
Γ2ׂͷ։ൃΛߟ͕͑ͨ • ͕࣌ܦͪӡ༻νʔϜͷϝϯόʔมΘͬͯ ۀϑϩʔมΘͬͨ • ։ൃ్தͷՌ৽͍͠ۀϑϩʔʹ ߹Θͳ͘ͳ͍ͬͯͨ
ཁ݅ͷ֬ೝɾઃܭʹ ཱͪͬͯ։ൃ͢͜͠ͱʹ
DDDΛ࠾༻ͨ͠ཧ༝ • ઃܭख๏ͷதͰϝδϟʔͰྑͦ͞͏ͱ͍͏ओ؍ • ͱͱ͕DDDʹ͍ۙख๏Ͱઃܭ͞Ε͍ͯͨͨΊ • ࣾͰDDDͷ࣮ફྫ͕গͳ͘ɺ࣮ફͷྑ͍ػձ ͩͱߟ͑ͨͨΊ
࣮ફͨ͠༰
υϝΠϯϞσϧͷߏஙखॱ 1. ۀϑϩʔͷ֬ೝ 2. ۀͷؔ৺ࣄʹ͍ͭͯௐΔ 3. νʔϜͰυϝΠϯϞσϧͷਫ਼ࠪ
ۀϑϩʔͷ֬ೝ • σΟϨΫλʔͱҰॹʹۀϑϩʔΛ֬ೝ • Ҏલͷ࣮֬ೝͭͭ͠ۀϑϩʔͷมԽѲ
ۀͷؔ৺ࣄʹ͍ͭͯௐΔ • ରͱͳΔαʔϏεͷTableΛͱʹચ͍ग़͠ • ͍͘Β͔࣮ࡁΈͩͬͨ͜ͱ͋Γɺ ઌʹܰ͘ϞσϧΛॻ͍ͯUMLͰు͖ग़ͨ͠
ۀͷؔ৺ࣄʹ͍ͭͯௐΔ package Fugafuga; use Mouse; has name_en => ( isa
=> Str ); has timestamp => ( isa => Int ); has item => ( isa => PiyoPiyo ); package Piyopiyo; use Mouse; has title => ( isa => Str ); has description => ( isa => Str );
νʔϜͰυϝΠϯϞσϧͷਫ਼ࠪ • ༻ޠදΛݩʹϢϏΩλεݴޠΛɺ ੜͨ͠UMLΛݩʹϞσϧͷؔΛ֬ೝͨ͠ • νʔϜϝϯόʔ୭ͰݟΕΔ&ߋ৽Ͱ͖Δ ͱ͜ΖʹυΩϡϝϯτΛஔ͍ͨ
νʔϜͰυϝΠϯϞσϧͷਫ਼ࠪ
ײͨ͜͡ͱ
ίʔυ্ͰͷදݱܾΊͨ͜ͱͰ ্࣮ͰදݱͷϒϨΛͳͤͨ͘ • ࣮αʔϏεͷ࣮Ͱͷݺͼํͱࠞͬͯ͟ ᐆດʹͳΓͦ͏ͩͬͨͷͰΑ͔ͬͨ • ͨͩɺͲ͏ͯ͠ҧײ͋ΔදݱʹͳΔ ͷ͋ΓΜͩ
ϞσϧΛϒϥογϡΞοϓ͍͢͠ ڥΛ࡞Δͷॏཁ ߋ৽͢ΔͷΊΜͲ͍͘͞ͱ͙͢͞· υΩϡϝϯτ͕ݹ͘ͳͬͯᴥᴪ͕ੜ͡Δ
ڞ௨ͷݴޠΛܾΊͯ νʔϜͰ༻͍Δ͚ͩͰ༗ӹ DDD͡Όͳ͘ͱڞ௨ͷݴޠΛ༻͍ͯ ઃܭ͢Δ͜ͱ͕ઃܭख๏ͷΤοηϯεͱͯ͠ ෯͘༗༻ͦ͏