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+Layerd+TDD
Search
gozaing
February 01, 2018
Programming
0
2.4k
Laravel+Layerd+TDD
Laravelでレイヤードアーキテクチャを利用した実装サンプルです。
ソース:
https://github.com/gozaing/reminder
gozaing
February 01, 2018
Tweet
Share
More Decks by gozaing
See All by gozaing
What I want to tell those who will become engineer managers from now on
tobaru
1
1.1k
ListeningTemplate
tobaru
0
68
coachable
tobaru
0
150
self-introduce
tobaru
0
120
Experiment with self-change
tobaru
3
99
201904_scrum_seven_things
tobaru
0
940
スクラムとは。見積もりとは。
tobaru
0
870
Other Decks in Programming
See All in Programming
PHPのバージョンアップ時にも役立ったAST
matsuo_atsushi
0
120
Spring gRPC について / About Spring gRPC
mackey0225
0
220
『テスト書いた方が開発が早いじゃん』を解き明かす #phpcon_nagoya
o0h
PRO
2
290
Djangoアプリケーション 運用のリアル 〜問題発生から可視化、最適化への道〜 #pyconshizu
kashewnuts
1
250
Grafana Cloudとソラカメ
devoc
0
170
昭和の職場からアジャイルの世界へ
kumagoro95
1
380
ファインディLT_ポケモン対戦の定量的分析
fufufukakaka
0
740
SwiftUIで単方向アーキテクチャを導入して得られた成果
takuyaosawa
0
270
時計仕掛けのCompose
mkeeda
1
300
color-scheme: light dark; を完全に理解する
uhyo
5
390
負債になりにくいCSSをデザイナとつくるには?
fsubal
10
2.4k
動作確認やテストで漏れがちな観点3選
starfish719
6
1k
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
12
960
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
4
330
Making the Leap to Tech Lead
cromwellryan
133
9.1k
Being A Developer After 40
akosma
89
590k
Raft: Consensus for Rubyists
vanstee
137
6.8k
Automating Front-end Workflow
addyosmani
1368
200k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7k
Designing Experiences People Love
moore
140
23k
Building an army of robots
kneath
303
45k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.2k
Build The Right Thing And Hit Your Dates
maggiecrowley
34
2.5k
Measuring & Analyzing Core Web Vitals
bluesmoon
6
240
Transcript
-BSBWFMΛͬͨ ϨΠϠʔυΞʔΩςΫνϟ 5%% αʔόαΠυΤϯδχΞ ϑϧʔπύʔϥʔ!גࣜձࣾΫΠοΫ
͓ͷରͱ͍ͯ͠Δํ w 'BU$POUSPMMFS'BU.PEFMΛճආ͍ͨ͠ʢͷʣ w %%%Λ࢝Ί͍͕ͨͲ͔͜Βʁͱࢥ͍ͬͯΔ w .7$Ͱͳ͍ΞʔΩςΫνϟͰ࣮͍ͨ͠ w ςετ͍͢͠ίʔυͱʁͱߟ͍͑ͯΔ w
-BSBWFMʢ1)1ʣΛར༻͍ͯ͠Δʢ࣮αϯϓϧͰར༻ʣ
͓͢Δࣄ w ʢલʣຊεϥΠυͰ͢ w ϨΠϠʔυΞʔΩςΫνϟ w ࡞͢ΔΞϓϦέʔγϣϯͷઆ໌ w $POUSPMMFSͱ4FSWJDFΫϥε w
$POUSPMMFSΫϥεͷςετʢͷ͢͠͞ʣ w ʢޙʣιʔεΛ$MPOF֬͠͝ೝ͍ͩ͘͞ w 4FSWJDFΫϥεͱ3FQPTJUPSZΫϥε w 4FSWJDFΫϥεͱ3FQPTJUPSZΫϥεͷςετʢͷ͢͠͞ʣ
ޙΛͨͣʹશମΛݟ͍ͨํίνϥ w (JU)VC w IUUQTHJUIVCDPNHP[BJOHSFNJOEFS w ϝʔϧૹ৴ॲཧ࣮͞Ε͍ͯ·ͤΜ w मਖ਼ɺ࣮ͳͲࣗ͝༝ʹ͓ࢼ͠Լ͍͞ w
13Λ͓͓ͪͯ͠Γ·͢
࡞͢ΔΞϓϦέʔγϣϯͷཁ݅ʢ3FNJOEFS"QQʣ w ϝϯόʔਓ͕ࢀՃ͢Δ൪੍Πϕϯτ w కΊΓ·ͰͷΛදࣔ w ରऀʹϝοηʔδʢ˓લʣΛදࣔ w ରऀʹϦϚΠϯυϝʔϧʢ˓લʣૹ৴ "͞Μ
#͞Μ $͞Μ Γ Γ Γ
ΞʔΩςΫνϟͷઆ໌
༻͢ΔΞʔΩςΫνϟ w ϨΠϠʔυΞʔΩςΫνϟ w ্ҐԼҐʹґଘ͍͚ͯ͠ͳ͍ w ԼҐͷมԽʹΑ্ͬͯҐʹมߋ͕͋Δࣄڐ͞ͳ͍ w ϏδωεϩδοΫΛ%PNBJOͰٵऩ w
.7$ύλʔϯͰ͍͏$POUSPMMFS.PEFMʹϏδωεϩδοΫ͕ ᷓΕΔࣄΛ͙ʢ.7$Ͱ.PEFM͕ؤுΓ͗͢Δنͷ߹ʣ w ॲཧΛϨΠϠʔԽ͢ΔࣄͰΛ͠ςετ͍͢͠
.7$ͱϨΠϠʔυΞʔΩςΫνϟͷҧ͍ .7$ ϨΠϠʔυ $MBTT 7JFX 6* $POUSPMMFS "QQMJDBUJPO .PEFM %PNBJO
4FSWJDF %PNBJO.PEFM 7BMVF0CKFDU *OGSBTUSVDUVSF 3FQPTJUPSZ .7$Ͱ$POUSPMMFS.PEFM͕ؤுΓ͗͢Δࣄ͕ଟ͍
֤ϨΠϠʔͷׂ w ʢ%PNBJOʣ4FSWJDFΫϥε w ϏδωεϩδοΫͷ࣮ʢϧʔϧ༷Λຬͨ͢ʣ w ʢ%PNBJOʣ%PNBJO.PEFMΫϥε w υϝΠϯݻ༗ͷৼΔ͍ w
υϝΠϯݻ༗ͷΫϥε࣮ʢ7BMVF0CKFDUʣ w ʢ*OGSBTUSVDUVSFʣ3FQPTJUPSZΫϥε w ӬଓԽͷΞΫηεΛ࣮ʢσʔλιʔεɺϑΝΠϧʣ
ґଘΠϝʔδʢґଘؔٯసͷ๏ଇʣ 7JFX6* $POUSPMMFS"QQMJDBUJPO %PNBJO4FSWJDF 3FQPTJUPSZ *OUFSGBDF *OUFSGBDF
ґଘ্͕ҐϨΠϠʔ͔ΒԼҐϨΠϠʔʹ͘ͱʁ w 3FNJOEFS"QQͰɺࢀՃऀҰཡΛ$POpH͔Βऔಘ͍ͯ͠Δ w %#͔Βऔಘ͢ΔΑ͏ʹมߋ͍ͨ͠߹Ͳ͏Өڹ͢Δ͔ w ςετͷ߹͚ͩ$POpH42-JUFΛར༻͍ͨ͠߹Ͳ͏Өڹ ͢Δ͔ʢ݅ذͰରॲͯ͠͠·͍͕ͪʣ w ্هέʔεͰ্Ґͷมߋ͕ඞཁͱͳΔ
w ӨڹΛগͳ͘͢ΔͨΊ֤ϨΠϠʔΛૄ݁߹ʹ͢Δࣄ͕ॏཁ w ૄ݁߹ʹ͢ΔΈͱͯ͠ϨΠϠʔυΞʔΩςΫνϟΛར༻͢Δ
࣮ͱղઆ
ඞཁͳཁ͔݅Β࣮Λ࢝ΊΔ w ࢀՃऀҰཡΛऔಘ w ࢀՃऀҰཡ͔ΒకΛऔಘ w ࠓకΛߦ͍ɺΓΛࢉग़ w ΓΛ7JFXͰදࣔ ͜͏͍͏ॲཧ͕ඞཁͦ͏ͳͷͰ
$POUSPMMFSʹॻ͍͍ͯ͘
͋ͬͱ͍͏ؒʹ'BU$POUSPMMFS w ߇͑Ίʹॻ͍ͯ͜͏͍͏ϩδοΫʹͳΔ
ςετ͔͚Δ͕ w JOEFY ॲཧͷதͰ"#$ͱϩδοΫ͕ଓ͖ɺͲ͔͜Ͱࣦഊͨ͠߹ ͷέʔεΛఆ͢Δࣄ͕͍͠ w ԿΛͬͯਖ਼ৗऴྃͱ͢Δ͔ w ֤ॲཧΛׂ࣮ͯ͢͠ΔࣄͰέʔεఆΛগͳ͘͢Δࣄग़དྷΔ͕ τϥϯβΫγϣϯεΫϦϓτʹͳΓ͍͢
w Ͳ͜Ͱׂ࣮ͯ͢͠Δ͔ w $POUSPMMFS4UBUVT͕Λฦ͠ɺࢀՃऀҰཡ͕7JFXʹ͞ΕΔࣄͷ ΈΛ͓͍͍͑ʢࠓ͕ଟ͍'BUʣ w Ͳ͏ΛΓ͔͢ʁ w औಘɺՃ͕ͯ͢ಉ͡ॲཧͷதͰߦΘΕ͍ͯΔ
Ͳ͏࣮͢Δ͔ w 4FSWJDFΫϥεͰϩδοΫΛ࣮ w $POUSPMMFSͲͷΑ͏ͳॲཧͰࢀՃऀҰཡ͕ੜ͞ΕΔ͔Δඞཁ͕ͳ͍ w ੜ͞ΕͨࢀՃऀҰཡʹΓϝοηʔδؚ͕·Ε͍ͯΔ w UIJTTFSWJDFHFU"SSBZ-JTU ΛݺͿͷΈ
ίϯετϥΫλͰλΠϓώϯτ͞Ε͍ͯΔ͕ʁ w 4FSWJDFΫϥεͷ*OUFSGBDFΛλΠϓώϯτ w ৄࡉͷ࣮Λߦ͏4FSWJDFΫϥεɺ$POUSPMMFSʹλΠϓώϯτ͠ ͨ*OUFSGBDFʹґଘʢԼҐϨΠϠʔ্ҐϨΠϠʔͷநʹґଘʣ w JOEFYϝιουͷதͰɺ4FSWJDFΫϥεͷϝιουΛݺͿͷΈ w $POUSPMMFSʹॻ͖͕ͪͳۀϩδοΫΛ4FSWJDFΫϥεʹ
w $POUSPMMFSΛγϯϓϧʹอͭ
ΠϯλʔϑΣʔεͱ۩ΫϥεΛͲ͜Ͱඥ͚Δʁ w 4FSWJDF1SPWJEFSΛར༻ w ͜ͷొʹΑΓ$POUSPMMFSͰ۩Ϋϥε͕ੜ͞ΕΔʢ%*ίϯςφʣ w 1BSUJDJQBOU4FSWJDF*OUFSGBDF1BSUJDJQBOU4FSWJDF͕ੜ͞ΕΔ
͍ͯ͘͠͠ͳ͍͔ʁ w 4FSWJDFΫϥεɺ4FSWJDF1SPWJEFSɺ*OUFSGBDFͷར༻ʹΑΓొΫ ϥε૿͑Δʢίʔυͷهड़ྔ૿͑Δʣ w ϩδοΫΛڬ·ͳ͍$36%ΞϓϦέʔγϣϯʢϚελཧͷΑ͏ ͳʣͰ͋Εɺͷෆཁ͔͠Εͳ͍ w ϑΥʔΧεΛߜΓΛ͢Δࣄ͕త w
मਖ਼Օॴ͕໌֬ɺมߋͷӨڹΛड͚ʹ͍͘
࣮͕நʹґଘ͢ΔࣄʹΑΔϝϦοτ w 6OJU5FTU࣌4UVC4FSWJDFΫϥεʹࠩ͠ସ͑ͯςετ͢Δࣄ͕ग़དྷΔ 4UVC$MBTTʹࠩ͠ସ͑ ςετ࣌͜ͷϝιου͕ݺΕΔ
·ͱΊ w ϨΠϠʔʹΑׂ͕ͬͯ͋ΔʢϨΠϠʔυΞʔΩςΫνϟʣ w ׂΛ͚ΔࣄͰγϯϓϧ͞Λอͭ w ϑΥʔΧεΛߜΔࣄͰςετʹΑΔ୲อΛߦ͍͍͢ w ґଘؔΛཧղ͢Δ w
্ҐԼҐʹґଘ͍͚ͯ͠ͳ͍ w நʹґଘ͢ΔࣄͷϝϦοτΛཧղ w ςετ࣌ʹ4UVCͱࠩ͠ସ͑ʢଞʹߟ͑ΒΕΔ͕ࠓճ͜ ͷͷΈݴٴʣ
ࠓճ͓ͨ͠ൣғ 7JFX6* $POUSPMMFS"QQMJDBUJPO %PNBJO4FSWJDF 3FQPTJUPSZ *OUFSGBDF *OUFSGBDF ຊεϥΠυͰ"QQMJDBUJPO 4FSWJDFͷ͕͠ओͰ͢ 4FSWJDF3FQPTJUPSZಉ
༷ʹநʹґଘͨ͠Έͱ ͳΓ·͢ ͝ڵຯ͋ΕιʔεΛ͝ ཡ͍ͩ͘͞
8F"SF)JSJOH IUUQTKQSFDSVJUNJENBSLFU