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
ふんわりとDDD実践してみた
Search
tenmihi
March 09, 2019
Programming
0
380
ふんわりとDDD実践してみた
Fukuoka Perl Workshop #28 で発表しました
tenmihi
March 09, 2019
Tweet
Share
Other Decks in Programming
See All in Programming
AIに仕事を丸投げしたら、本当に楽になれるのか
dip_tech
PRO
0
180
Go1.26 go fixをプロダクトに適用して困ったこと
kurakura0916
0
320
RAGでハマりがちな"Excelの罠"を、データの構造化で突破する
harumiweb
9
2.4k
メタプログラミングで実現する「コードを仕様にする」仕組み/nikkei-tech-talk43
nikkei_engineer_recruiting
0
150
AIコーディングの理想と現実 2026 | AI Coding: Expectations vs. Reality 2026
tomohisa
0
980
PJのドキュメントを全部Git管理にしたら、一番喜んだのはAIだった
nanaism
0
230
AIとペアプロして処理時間を97%削減した話 #pyconshizu
kashewnuts
1
190
CDIの誤解しがちな仕様とその対処TIPS
futokiyo
0
160
AI時代でも変わらない技術コミュニティの力~10年続く“ゆるい”つながりが生み出す価値
n_takehata
2
630
TROCCOで実現するkintone+BigQueryによるオペレーション改善
ssxota
0
130
CSC307 Lecture 11
javiergs
PRO
0
590
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
370
Featured
See All Featured
How GitHub (no longer) Works
holman
316
140k
The browser strikes back
jonoalderson
0
760
A Soul's Torment
seathinner
5
2.4k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
120
Making Projects Easy
brettharned
120
6.6k
Facilitating Awesome Meetings
lara
57
6.8k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.4k
The Invisible Side of Design
smashingmag
302
51k
[SF Ruby Conf 2025] Rails X
palkan
2
810
Site-Speed That Sticks
csswizardry
13
1.1k
Google's AI Overviews - The New Search
badams
0
930
The Curious Case for Waylosing
cassininazir
0
260
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͡Όͳ͘ͱڞ௨ͷݴޠΛ༻͍ͯ ઃܭ͢Δ͜ͱ͕ઃܭख๏ͷΤοηϯεͱͯ͠ ෯͘༗༻ͦ͏