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
Laravel × オニオンアーキテクチャで始めるテスト駆動開発
Search
kazuma.murata
December 12, 2020
Programming
5
2.4k
Laravel × オニオンアーキテクチャで始めるテスト駆動開発
PHP Conference 2020
トラック4-3での発表スライドです。
kazuma.murata
December 12, 2020
Tweet
Share
More Decks by kazuma.murata
See All by kazuma.murata
ROSCAFE_2社に聞く_DevOpsの最新事例__SocialDog発表スライド_.pdf
canon1ky
1
270
BDDフレームワークで始める、E2Eテストのススメ
canon1ky
1
580
20200109サポーターズ勉強会
canon1ky
0
300
2019年11月20日 ビアバッシュ LT発表資料
canon1ky
0
480
仲間と起業、経営から廃業に至る中で学んだ「ビジョン」の本当の大切さ
canon1ky
2
83
Other Decks in Programming
See All in Programming
コントリビューターによるDenoのすゝめ / Deno Recommendations by a Contributor
petamoriken
0
200
Rust 製のコードエディタ “Zed” を使ってみた
nearme_tech
PRO
0
130
CSC307 Lecture 09
javiergs
PRO
1
830
OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcodeを直せる時代になっている ダイアモンド問題編
yimajo
3
600
インターン生でもAuth0で認証基盤刷新が出来るのか
taku271
0
190
今から始めるClaude Code超入門
448jp
7
8.3k
20260127_試行錯誤の結晶を1冊に。著者が解説 先輩データサイエンティストからの指南書 / author's_commentary_ds_instructions_guide
nash_efp
0
880
AIエージェントの設計で注意するべきポイント6選
har1101
7
3.4k
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
190
組織で育むオブザーバビリティ
ryota_hnk
0
170
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
12
6.4k
フルサイクルエンジニアリングをAI Agentで全自動化したい 〜構想と現在地〜
kamina_zzz
0
400
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.7k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
400
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
440
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
50
How to build a perfect <img>
jonoalderson
1
4.9k
How STYLIGHT went responsive
nonsquared
100
6k
The Curse of the Amulet
leimatthew05
1
8.2k
The Curious Case for Waylosing
cassininazir
0
230
Crafting Experiences
bethany
1
46
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
420
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.8k
Transcript
ଜాओຏ -BSBWFMºΦχΦϯΞʔΩςΫνϟ Ͱ࢝ΊΔςετۦಈ։ൃ 1)1$POGFSFODF
ҙॻ͖ w ೖ͚ͷ༰Ͱ͢ w ࠓճ͢ΦχΦϯΞʔΩςΫνϟɺख๏Λઆ໌͢Δ্Ͱͷૉࡐఔͱͯ͠ ͝ཧղ͍ͩ͘͞ɻͳ͓ɺհ͢Δ༰ଞͷΞʔΩςΫνϟͰྲྀ༻Ͱ͖· ͢ɻ w εϥΠυ%JTDPSE USBDLBMBSBWFMPOJPO
Ͱڞ༗͠·͢ɻ w ίʔυͷจࣈαΠζ͕গ͠খ͍͞ͷͰɺखݩʹεϥΠυΛ༻ҙͯ͠Έ͍ͯͨͩ ͚ΔͱΑΓݟ͍͔͢ͱࢥ͍·͢ɻ
ຊτʔΫͰ͢͜ͱ͞ͳ͍͜ͱ w ͢͜ͱ w ιϑτΣΞઃܭͱ୯ମςετͷಋೖ w 5%%ͷखॱ w -BSBWFMͰςετΛॻ͘ɾϨΠϠʔΛΔͨΊͷख๏ͷհͱ͍ํ w
͞ͳ͍͜ͱ w ΦχΦϯΞʔΩςΫνϟͷϕετϓϥΫςΟε w 5%%ʹؔ͢ΔϕετϓϥΫςΟε w ιϑτΣΞઃܭͷਂ͍
ࣗݾհ w ଜాओຏ w גࣜձࣾ4IPXDBTF(JH γϣʔέʔεΪάʣ w ୲όοΫΤϯυΤϯδχΞ w ؼΓಓͰԻήʔΓ͕ͪ
w 5XJUUFS!DBOPOLZ
୯ମςετΛॻ͘ར w ςετ͍ͨ͠ՕॴͷΈΛґଘ͢ΔଞͷॴͱΓͯ͠ݕূͰ͖Δ w ྫ֎ॲཧࡉ͔͍ذͳͲͷςετ͕ߦ͍͍͢ w ࣮Օॴ͕Ͳ͏ಈ͖͔͘Λɺ࣮࣌ʹλΠϜϦʔʹݕূͰ͖Δ w ߴʹςετ࣮ߦΛߦ͑ΔͨΊɺଟ͘ͷݕূΛߦ࣮ͬͯߦ͕࣌ؒΊ
ͳͥιϑτΣΞઃܭ͕େͳͷ͔ ςετʹযΛͯͨ߹ w ෳͷ͕ूத͢ΔͱείʔϓΛߜͬͯςετ͢Δ͜ͱ͕Ͱ͖ͳ͍ w %#ͷσʔλग़͠ೖΕ w ֎෦"1*ͷݺͼग़͠ w ۀϞσϧͷՃɺܭࢉɺஅ
ςετ͕͠ʹ͍͘ྫ ෳͷ͕ͭͷϞδϡʔϧʹೖ͍ͬͯΔ 3%#ʹΫΤϦΛඈ͢ ۀϩδοΫ ϦΫΤετύϥϝʔλऔಘ Ϩεϙϯεฦ٫
ςετ͕͍͢͠ྫ ͝ͱʹϞδϡʔϧΛׂ 3%#ʹΫΤϦΛඈ͢ Ϟδϡʔϧ ϦΫΤετϨεϙϯεͱ ۀॲཧͰѻ͏ͷมΛߦ͏ Ϟδϡʔϧ
ΦχΦϯΞʔΩςΫνϟ Ҿ༻IUUQTRJJUBDPNMJUUMF@IBOE@TJUFNTGCBECGD ϙΠϯτۀॲཧͰ͋Δ"QQMJDBUJPO4FSWJDF͕*OGSBTUSVDUVSFͰ͋Δ%#ʹґଘ͠ͳ͍
ྫ w ຊΛཧ͢ΔΞϓϦέʔγϣϯ w ຊCPPLϞσϧͱͯ͠දݱ͞ΕɺԼهͷΛ࣋ͭ w *% λΠτϧ ஶऀ*% w
1045CPPLT"1*Λୟ͘ͱɺຊ͕ొ͞ΕΔ w *%ࣗಈ࠾൪ w ଘࡏ͠ͳ͍ஶऀ*%Λࢦఆͨ͠߹ɺ/PU'PVOE
Ϋϥεͱґଘํ 6* 1SFTFOUBUJPO "QQMJDBUJPO4FSWJDF *OGSBTUSVDUVSF %PNBJO.PEFM &OUJUZ ۀॲཧ σʔλͷശ *OUFSGBDF
ۀͰ͏Ϟσϧ &MPRVFOUΛͬͨσʔλͷശ %PNBJO4FSWJDF
֤Ϋϥεͷׂ w #PPL$POUSPMMFSϦΫΤετΛड͚औΓɺ#PPL6TFDBTFʹॲཧΛґཔͯ͠Ϩ εϙϯε w #PPL6TFDBTFۀͷखଓ͖ɻ"VUIPS3FQPTJUPSZʹ"VUIPS*%ͷஶऀ͕ଘࡏ ͢Δ͔͍߹Θͤɺஶऀ͕͍ΕຊΛ࡞ͯ͠#PPL3FQPTJUPSZʹอଘ͢Δɻ w "VUIPS3FQPTJUPSZ *OUFSGBDF
"VUIPSΛӬଓԽ͓ͯ͘͠ശ w #PPL3FQPTJUPSZ *OUFSGBDF #PPLΛӬଓԽ͓ͯ͘͠ശ w "VUIPS#PPLґଘͷ࠷্ҐͱͳΔϞσϧ
ςετۦಈ։ൃͷखॱ ςετΛॻ͘ ࣦഊ͢ΔίʔυΛॻ͘ ޭ͢ΔίʔυΛॻ͘ ϦϑΝΫλϦϯά͢Δ
&OUJUZ .PEFM ࣮ ۀॲཧͰ͏ ΦϒδΣΫτ -BSBWFMͷ.PEFMΛΘͣɺ ϑϨʔϜϫʔΫʹґଘͤ͞ͳ͍
3FQPTJUPSZ *OUFSGBDF ఆٛ σʔλΛग़͠ೖΕ͢ΔͨΊͷശ อଘઌͲ͜Ͱྑ͍͕ɺ ʮ͜͏͍͏ΓํͰσʔλΛอଘͨ͠ΓऔΓग़ͯ͠Ͷʯͱ͍͏એݴ
མͪΔ6TF$BTFςετ࣮ ςετΛམͱͨ͢Ίʹ /VMMΛฦͯ͠ΈΔ 6TF$BTFΛݺͿͱɺ ࡞͞Εͨຊ͕ฦͬͯ͘Δ ຊΛ࡞ͯ͠%#ʹอଘ͢Δ ۀॲཧΛߦ͏Ϋϥε
ςετ࣮ߦ ςετ͕ಈ͖ɺ མ͍ͪͯΔ͜ͱΛ֬ೝ
ςετ͕མͪΔͱ͜Ζ·Ͱ֬ೝͰ͖ͨΒ ৽͍͠ຊ͕อଘ͞Εͨ͜ͱ͕ςετ͞ΕΔΑ͏ʹॻ͖͢ σʔλग़͠ೖΕͷৼΔ͍ΛϞοΫͰςετ ςετ͕௨ΔΑ͏ʹ͢
ϞοΫΦϒδΣΫτ ґଘઌΦϒδΣΫτͷସ w ςετର͕ґଘ͢ΔΫϥεͷಈ࡞Λఆٛɺݕূ͢ΔͨΊͷΦϒδΣΫτ w ςετରͷΫϥε͕ґଘ͢ΔΫϥεΛϞοΫͰࠩ͠ସ͑Δ w ଞͷΫϥεʹґଘ͍ͯ͠ΔΫϥεͷςετΛ༰қʹߦ͏͜ͱ͕Ͱ͖Δ
ϞοΫΦϒδΣΫτ .PDLFSZ w -BSBWFMͰ.PDLFSZͱ͍͏ϥΠϒϥϦ͕ඪ४Ͱ༻ҙ͞Ε͍ͯΔ w ґଘઌΫϥεͷؔݺͼग़͠ͷҾͷςετ w ґଘઌΫϥεͷؔݺͼग़͠ճͷςετ w ґଘઌΫϥεͷؔͷฦΓΛఆٛͳͲ
6TF$BTF5FTU࣮ ଓ͖ ஶऀ*%ͰஶऀΛ%#͔Βऔಘ͢ΔৼΔ͍͕ߦΘΕɺ ஶऀ໊NVSBUBͷஶऀ͕ฦ͞ΕΔ ࢦఆ͞Εͨஶऀ*%ͱλΠτϧͰɺ %#ͷຊͷ৽ن࡞ॲཧ͕͚ͩݺΕΔ ฦΓ͕৽ن࡞͞ΕͨຊͰ͋Δ 6TF$BTFʹৼΔ͍Λఆٛͨ͠3FQPTJUPSZΛ ֎͔Βೖ %*
6TF$BTF࣮ ଓ͖ 6TF$BTFͰ֎͔Βೖ͞Εͨ3FQPTJUPSZΛ ༻͢Δ
࣮ՔಇͰ%#·Ͱܨ͙3FQPTJUPSZͲ͏͢Δͷ
3FQPTJUPSZ4FSWJDF1SPWJEFS ΠϯλʔϑΣʔε͕ೖ͞Εͨ࣌ɺ ࣗಈͰೖ͞ΕΔ࣮ଶͷΫϥεࢦఆͰ͖Δ ґଘؔͷҰ൪֎ଆʹ͋Δɺ JOGSBTUSVDUVSFͷΫϥεΛ͜͜Ͱೖ
&MPRVFOU3FQPTJUPSZςετ࣮ #PPL $SFBUFͨ͠Β %#ʹࢦఆͨ͠Ϩίʔυ͕อଘ͞Ε͍ͯΔ͔ ςετ ෳճ$SFBUFͨ͠Β *%͕"VUP*ODSFNFOU͞Ε͍ͯΔ͔ςετ
&MPRVFOU3FQPTJUPSZ࣮ #PPL ͜͜Ͱ-BSBWFMͷ.PEFMΛ༻ 3FQPTJUPSZ4FSWJDF1SPWJEFSͰ͜ͷΫϥεΛೖ͢ΔͨΊɺ 6TF$BTF͕-BSBWFMͷ.PEFMʹґଘ͠ͳ͍ܗʹͳΔ -BSBWFMͷ.PEFMΛΤϯςΟςΟʹ٧Ίସ͑
&MPRVFOU3FQPTJUPSZςετ࣮ "VUIPS ࢦఆͨ͠*%ͷϨίʔυ͕طʹ%#ʹଘࡏͨ͠߹ɺ ΤϯςΟςΟʹม͞Εͯฦ͞ΕΔ͜ͱΛςετ ࢦఆͨ͠*%ͷϨίʔυ͕%#ʹଘࡏ͠ͳ͍߹ɺ /VMM͕ฦ͞ΕΔ͜ͱΛςετ
'BDUPSZ࣮ "VUIPS 'BDUPSZύλʔϯΛ౿ऻͨ͠ -BSBWFMඪ४ͷΈ े݅σʔλΛ·ͱΊͯ༻ҙͨ͠Γɺ ಛఆͷΧϥϜΛϥϯμϜจࣈྻϥϯμϜͰఆٛͰ͖Δ
&MPRVFOU3FQPTJUPSZ࣮ "VUIPS ͜͜Ͱ-BSBWFMͷ.PEFMΛ༻ -BSBWFMͷ.PEFMΛΤϯςΟςΟʹ٧Ίସ͑
'PSN3FRVFTU5FTU࣮ ϦΫΤετύϥϝʔλ͕ਖ਼ৗͷ߹WBMJE λΠτϧ͕ۭͷ߹JOWBMJE -BSBWFMඪ४ͷ'PSN3FRVFTUΛ༻
'PSN3FRVFTU࣮ ϦΫΤετύϥϝʔλͷϧʔϧΛఆٛ
$POUSPMMFSςετ࣮ -BSBWFMͰςετͰ "1*Λୟ͘߹Ͱɺ ґଘ͢ΔͷΛ֎෦ೖͰ͖Δ 6TF$BTFͷॲཧ͕ޭ͢Δͱ 6TF$BTF͔Β/PU'PVOEྫ֎͕ ు͔ΕΔͱ
$POUSPMMFS࣮ 6TF$BTFॲཧΛґཔͯ͠ ϦΫΤετϨεϙϯεͷ٧Ίସ͑ ίϯετϥΫλΠϯδΣΫγϣϯ ຊ൪Ͱͷ࣮ߦ࣌ʹɺ-BSBWFMͰࣗಈͰґଘઌ ΦϒδΣΫτ͕ੜ͞ΕΔ
ςετ
͍͞͝ʹ w -BSBWFMͰςετۦಈͰ։ൃ͢Δํ๏Λઆ໌͠·ͨ͠ w ͝ͱʹ࣮Λ͚ͯςετ͍͢͠ίʔυΛॻ͖·͠ΐ͏ w .PDLFSZΛͬͯࡉ͔͍ύʔπ͝ͱʹςετΛͯ͠Έ·͠ΐ͏
גࣜձࣾ4IPXDBTF(JH ϛογϣϯ ৗͷফඅʹ༹͚ࠐΉςΫϊϩδʔʹΑΓੜ׆Λ্ͤ͞Δ͜ͱ
ϓϩμΫτ ళ͚ϞόΠϧɾςʔϒϧΦʔμʔαʔϏεɻ ͓٬༷͕ࣗͷεϚϗͰจ͠ɺ٬ελοϑଞͷαʔϏεʹूதɻ ͜Ε͔Βͷҿ৯ళͷʮ͋ͨΓ·͑ʯΛʑ։ൃத
༻ٕज़ ͳͲͳͲ "84'BSHBUF ,VCFSOFUFT
ΤϯδχΞେืूʂ ΦϑϥΠϯʹΔະղܾͷ՝Λൃݟ͠ɺ ͦͷ՝ΛΠϯλʔωοτςΫϊϩδʔͰղܾ͍ͨ͠ΤϯδχΞ Λืूͯ͠·͢ʂ গ͠ͰڵຯΛ࣋ͬͨํɺҿ৯ͷαʔϏεʹؔΘΓ͍ͨํɺ ੋඇ͓͠͠·͠ΐ͏ɻ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ