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
PSA review
Search
nunulk
August 30, 2017
Programming
3
2.8k
PSA review
「現場で役立つシステム設計の原則」をウェブサービスの現場で役立てたい at DDD Alliance! 現場で役立つシステム設計の原則 Night!
nunulk
August 30, 2017
Tweet
Share
More Decks by nunulk
See All by nunulk
Laravelでテストしやすいコードを書く5 / 5 tips of building testable modules in Laravel
nunulk
0
260
Design It! in a nutshell
nunulk
1
220
PHP Getting Faster
nunulk
0
210
How does learning English broaden your world?
nunulk
0
310
Testing on Laravel
nunulk
1
1.4k
Vue.js + TypeScript + Firebase
nunulk
0
890
Nuxt.js in TypeScript
nunulk
1
380
A startup meets Laravel + Vue.js
nunulk
1
1.9k
Unit Testing Laravel
nunulk
0
430
Other Decks in Programming
See All in Programming
DROBEの生成AI活用事例 with AWS
ippey
0
130
コミュニティ駆動 AWS CDK ライブラリ「Open Constructs Library」 / community-cdk-library
gotok365
2
140
sappoRo.R #12 初心者セッション
kosugitti
0
260
苦しいTiDBへの移行を乗り越えて快適な運用を目指す
leveragestech
0
630
PHPカンファレンス名古屋2025 タスク分解の試行錯誤〜レビュー負荷を下げるために〜
soichi
1
210
定理証明プラットフォーム lapisla.net
abap34
1
1.8k
ファインディの テックブログ爆誕までの軌跡
starfish719
2
1.1k
さいきょうのレイヤードアーキテクチャについて考えてみた
yahiru
3
760
Grafana Cloudとソラカメ
devoc
0
170
『品質』という言葉が嫌いな理由
korimu
0
160
『GO』アプリ バックエンドサーバのコスト削減
mot_techtalk
0
150
ARA Ansible for the teams
kksat
0
150
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
PRO
50
11k
The Cost Of JavaScript in 2023
addyosmani
47
7.3k
How to Ace a Technical Interview
jacobian
276
23k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.6k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
27
1.9k
Building Your Own Lightsaber
phodgson
104
6.2k
What's in a price? How to price your products and services
michaelherold
244
12k
BBQ
matthewcrist
87
9.5k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
30
4.6k
A better future with KSS
kneath
238
17k
Optimizing for Happiness
mojombo
376
70k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
Transcript
ʮݱͰཱͭγεςϜઃܭͷݪଇʯΛ ΣϒαʔϏεͷݱͰཱ͍ͯͨ OVOVML BU%%%"MMJBODFݱͰཱͭγεςϜઃܭͷݪଇ/JHIU
ࣗݾհ w OVOVML w ϑϦʔϥϯεͷϓϩάϥϚʔ w ओʹΣϒαʔϏεͷΞϓϦέʔγϣϯ։ൃ w 1)1X-BSBWFM w
+BWB/&5ͰۀܥγεςϜͬͯͨ͜ͱ͋Γ ·ͨ͠
w ʮݱͰཱͭγεςϜઃܭ ͷݪଇʯͷॻධ w ΣϒαʔϏε։ൃͷݱ w ΣϒαʔϏε։ൃͷݱʹ ͓͚Δຊॻͷཱͯํ ࠓ͢͜ͱ
ຊॻͷಛ w ΦϒδΣΫτࢦઃܭʗϓϩάϥϛϯάΛɺతͰ ͳ͘ɺมߋΛָͰ҆શʹ͢ΔͨΊͷखஈͱ͍ͯ͠ Δ w ϦϑΝΫλϦϯάલͱޙͷίʔυྫʢ+BWBʣ͕ଟ ࡌ͍ͬͯΔ w
ΞϓϦέʔγϣϯͷίʔυͷΈΛରͱͤͣɺςʔ ϒϧઃܭ63-ઃܭʹݴٴ͍ͯ͠Δ
ຊॻͷಛ w ܁Γฦ͠ମݧ͢Δ͜ͱΛਪ w ੳʗઃܭʗ࣮ͦΕͧΕͷϑΣʔζͰ୲ऀΛ ͚ͳ͍͜ͱΛਪ w ۀͷؔ৺ࣄͷ୯ҐΛɺͦͷ··ϓϩάϥϛϯά୯ Ґͱͯ͠ΫϥεͰදݱ͢Δ͜ͱΛਪ
ΣϒαʔϏεͷݱ lҰํͰɺΠϯλʔωοταʔϏεͷ։ൃͳͲͰɺগͷ ٕज़ऀ͕ͯ͢ͷఔΛ୲͢Δέʔε͕૿͍͑ͯ·͢ɻ͠ ͔͠ɺͪ͜Βͷ߹ɺੳઃܭʹ΄ͱΜͲ࣌ؒΛ͔͚ͣ ʹɺͱʹ͔͘ϓϩάϥϛϯά͢Δɺͱ͍͏Γํ͕ଟ͍Α͏ Ͱ͢ɻ͜ͷΓํɺੳ͠ͳ͕Βઃܭ͢Δͱ͍͏ΦϒδΣ ΫτࢦΒ͍͠։ൃͷΓํͰ͋Γ·ͤΜɻz 1 ʮΦϒδΣΫτࢦͷ։ൃ͏·͍͍ͬͯ͘Δͷ͔ʯ
ΣϒαʔϏεͷݱ lҰํͰɺΠϯλʔωοταʔϏεͷ։ൃͳͲͰɺগͷ ٕज़ऀ͕ͯ͢ͷఔΛ୲͢Δέʔε͕૿͍͑ͯ·͢ɻ͠ ͔͠ɺͪ͜Βͷ߹ɺੳઃܭʹ΄ͱΜͲ࣌ؒΛ͔͚ͣ ʹɺͱʹ͔͘ϓϩάϥϛϯά͢Δɺͱ͍͏Γํ͕ଟ͍Α͏ Ͱ͢ɻ͜ͷΓํɺੳ͠ͳ͕Βઃܭ͢Δͱ͍͏ΦϒδΣ ΫτࢦΒ͍͠։ൃͷΓํͰ͋Γ·ͤΜɻz 1 ʮΦϒδΣΫτࢦͷ։ൃ͏·͍͍ͬͯ͘Δͷ͔ʯ
ΣϒαʔϏεͷݱ lҰํɺੳઃܭΛ͋·ΓߦΘͳ͍ϓϩάϥϛϯάॏࢹͷ ։ൃελΠϧɺͪΐͬͱن͕େ͖͘ͳΔͱɺίʔυͷݟ ௨͕͠ٸʹѱԽ͠·͢ɻ ͞Βʹ͔࣍Β࣍ͱ૿վஙΛ܁Γฦ͍ͯ͠Δ͏ͪʹɺख͕ ͚ΒΕͳ͍΄Ͳཧղ͕͘͠ɺ͓͍ͦΕͱมߋ͕Ͱ͖ͳ͍େ ͖ͳίʔυͷ͔ͨ·Γ͕ੜΈग़͞Ε·͢ɻz 1 ʮͲͪΒͷΓํͰ͔͍ͬͳιϑτΣΞ͕ੜ·Ε͍͢ʯ
ΣϒαʔϏεͷݱ lҰํɺੳઃܭΛ͋·ΓߦΘͳ͍ϓϩάϥϛϯάॏࢹͷ ։ൃελΠϧɺͪΐͬͱن͕େ͖͘ͳΔͱɺίʔυͷݟ ௨͕͠ٸʹѱԽ͠·͢ɻ ͞Βʹ͔࣍Β࣍ͱ૿վஙΛ܁Γฦ͍ͯ͠Δ͏ͪʹɺख͕ ͚ΒΕͳ͍΄Ͳཧղ͕͘͠ɺ͓͍ͦΕͱมߋ͕Ͱ͖ͳ͍େ ͖ͳίʔυͷ͔ͨ·Γ͕ੜΈग़͞Ε·͢ɻz 1 ʮͲͪΒͷΓํͰ͔͍ͬͳιϑτΣΞ͕ੜ·Ε͍͢ʯ
͍ɺ͓ͬ͠ΌΔ௨ΓͰ͢ স
ݴ͍༁͍ͤͯͩ͘͞͞
TUBHFTPGCVTJOFTTHMPXUI TUBHFTPGCVTJOFTTHMPXUI &YJTUFODF 4VSWJWBM 4VDDFTT 5BLFP⒎ .BUVSJUZ
ΣϒαʔϏεͷݱ w εϐʔυʼ࣭ w ΞδϟΠϧ˺ߦ͖ͨΓͬͨΓ w গਫ਼Ӷˠߴ͍ଐਓੑ ˞ݸਓͷײͰ͢
ͦ͏͍͏ݱͰɺগ͠ͰʮΦϒ δΣΫτࢦΒ͍͠։ൃʯΛ͢Δ ʹͲ͏͢Ε͍͍ͩΖ͏͔ʁ
։ൃϓϩηεʗମ੍ lۀΛཧղ͠ཧ͢ΔͨΊͷʮੳʯͱɺιϑτΣ Ξͱͯ͠ͷ࣮ݱํ๏Λߟ͑ΔʮઃܭʯΛɺಉ͡ਓؒʗ νʔϜ͕Ұ؏ͯ͠୲͢Δ͜ͱ͕ޮՌతͰ͢ɻz 1 ʮυϝΠϯϞσϧΛத৺ʹͨ͠ιϑτΣΞ։ൃͷਐΊํʯ
lۀΛཧղ͠ཧ͢ΔͨΊͷʮੳʯͱɺιϑτΣ Ξͱͯ͠ͷ࣮ݱํ๏Λߟ͑ΔʮઃܭʯΛɺಉ͡ਓؒʗ νʔϜ͕Ұ؏ͯ͠୲͢Δ͜ͱ͕ޮՌతͰ͢ɻz 1 ʮυϝΠϯϞσϧΛத৺ʹͨ͠ιϑτΣΞ։ൃͷਐΊํʯ ։ൃϓϩηεʗମ੍ Ͱ͖ͦ͏
υΩϡϝϯςʔγϣϯ lੳ͢Δਓ͕ؒઃܭ͠ɺઃܭ༰Λιʔείʔυͱ ͯ͠ه͢ΔͷͰ͋Εɺੳऀͱઃܭऀɺઃܭ ऀͱ࣮ऀͷؒͰɺυΩϡϝϯτΛͬͯୡ͢Δඞ ཁ͋Γ·ͤΜɻʢதུʣੳͱઃܭ͕Ұக͢Εɺ ιʔείʔυ͕υΩϡϝϯτͱͯ͠ػೳ͠·͢ɻz 1 ʮιʔείʔυΛୈҰڃͷυΩϡϝϯτͱͯ͠׆༻͢Δʯ
lੳ͢Δਓ͕ؒઃܭ͠ɺઃܭ༰Λιʔείʔυͱ ͯ͠ه͢ΔͷͰ͋Εɺੳऀͱઃܭऀɺઃܭ ऀͱ࣮ऀͷؒͰɺυΩϡϝϯτΛͬͯୡ͢Δඞ ཁ͋Γ·ͤΜɻʢதུʣੳͱઃܭ͕Ұக͢Εɺ ιʔείʔυ͕υΩϡϝϯτͱͯ͠ػೳ͠·͢ɻz 1 ʮιʔείʔυΛୈҰڃͷυΩϡϝϯτͱͯ͠׆༻͢Δʯ υΩϡϝϯςʔγϣϯ Ͱ͖ͦ͏
ੳͱઃܭ lۀͷؔ৺ࣄΛώτʗϞϊʗίτͷͭʹྨ͢Δํ ๏͕͋Γ·͢ɻ͜ͷྨɺۀͷͱΒ͑ํͱͯ͠Θ ͔Γ͘͢ɺ·࣮ͨࡍʹʹཱͭ͜ͱ͕͘ೝΊΒΕ ͍ͯ·͢ɻz 1 ʮυϝΠϯΦϒδΣΫτͷݟ͚ͭํʯ
ੳͱઃܭ lۀͷؔ৺ࣄΛώτʗϞϊʗίτͷͭʹྨ͢Δํ ๏͕͋Γ·͢ɻ͜ͷྨɺۀͷͱΒ͑ํͱͯ͠Θ ͔Γ͘͢ɺ·࣮ͨࡍʹʹཱͭ͜ͱ͕͘ೝΊΒΕ ͍ͯ·͢ɻz 1 ʮυϝΠϯΦϒδΣΫτͷݟ͚ͭํʯ Ͱ͖ͦ͏
࣮ lυϝΠϯΦϒδΣΫτ͕)5.-ͷDMBTTଐੑͷΛ ฦ͢͜ͷΓํɺϞσϧʹϏϡʔͷؔ৺ࣄ͕ೖΓࠐ ΜͰ͍Δͱײ͡Δਓ͕͍Δ͔͠Ε·ͤΜɻ͔͠͠ɺ ͦ͏Ͱ͋Γ·ͤΜɻυϝΠϯΦϒδΣΫτͰදݱ͢ Δཧతͳঢ়ଶΛɺϏϡʔଆ͕ར༻͢Δɺͱ͍͏ߟ͑ ํͰ͢ɻz 1 ʮ)5.-ͷDMBTTଐੑΛυϝΠϯΦϒδΣΫτ͔Βग़ྗ͢Δʯ
࣮ lυϝΠϯΦϒδΣΫτ͕)5.-ͷDMBTTଐੑͷΛ ฦ͢͜ͷΓํɺϞσϧʹϏϡʔͷؔ৺ࣄ͕ೖΓࠐ ΜͰ͍Δͱײ͡Δਓ͕͍Δ͔͠Ε·ͤΜɻ͔͠͠ɺ ͦ͏Ͱ͋Γ·ͤΜɻυϝΠϯΦϒδΣΫτͰදݱ͢ Δཧతͳঢ়ଶΛɺϏϡʔଆ͕ར༻͢Δɺͱ͍͏ߟ͑ ํͰ͢ɻz 1 ʮ)5.-ͷDMBTTଐੑΛυϝΠϯΦϒδΣΫτ͔Βग़ྗ͢Δʯ Ͱ͖ͦ͏
ଞʹ ΦϒδΣΫτʗϑΝʔετΫϥείϨΫγϣϯʗ۠ΦϒδΣ ΫτʗυϝΠϯϞσϧʗํʢ1PMJDZʣύλʔϯʗϦϑΝΫλ ϦϯάʗϓϩάϥϜͷࣗݾจॻԽʗαʔϏεΫϥεʗγφϦΦ Ϋϥεʗίτʹ͢ΔσʔλϕʔεઃܭʗλεΫϕʔεͷϢʔ βʔΠϯλʔϑΣʔεʗը໘ͷؔ৺ࣄͱҰகͤͨ͞Ϋϥεʗඇ ಉظϝοηʔδϯάʗ"1*Ϩεϙϯε༻ͷΫϥεʗϚΠΫϩαʔ ϏεʗϗϫΠτϘʔυʹॻ͍ͨϥϑεέονͷࣸਅʗۀཁ݅ Λͦͷ··ιʔείʔυͰදݱͰ͖ΔਓࡐΛɺެࣜʹඇެ ࣜʹධՁ͢Δ͜ͱ
ଞʹ ΦϒδΣΫτʗϑΝʔετΫϥείϨΫγϣϯʗ۠ΦϒδΣ ΫτʗυϝΠϯϞσϧʗํʢ1PMJDZʣύλʔϯʗϦϑΝΫλ ϦϯάʗϓϩάϥϜͷࣗݾจॻԽʗαʔϏεΫϥεʗγφϦΦ Ϋϥεʗίτʹ͢ΔσʔλϕʔεઃܭʗλεΫϕʔεͷϢʔ βʔΠϯλʔϑΣʔεʗը໘ͷؔ৺ࣄͱҰகͤͨ͞Ϋϥεʗඇ ಉظϝοηʔδϯάʗ"1*Ϩεϙϯε༻ͷΫϥεʗϚΠΫϩαʔ ϏεʗϗϫΠτϘʔυʹॻ͍ͨϥϑεέονͷࣸਅʗۀཁ݅ Λͦͷ··ιʔείʔυͰදݱͰ͖ΔਓࡐΛɺެࣜʹඇެ ࣜʹධՁ͢Δ͜ͱ
Ͱ͖ͦ͏
None
ΣϒαʔϏεͷݱ w εϐʔυʼ࣭ w ΞδϟΠϧ˺ߦ͖ͨΓͬͨΓ w গਫ਼Ӷˠߴ͍ଐਓੑ ˞ݸਓͷײͰ͢
ΣϒαʔϏεͷݱ w εϐʔυʼ࣭ ˠશһੳʗઃܭͰ͖ΔΑ͏ʹ͍ͯ͘͠ ˠ࣭Λ্͛Δ͜ͱͰεϐʔυΛ্͍͛ͯ͘ ˠྫʣϦϑΝΫλϦϯάσʔɺࣾษڧձɺখ͞ ͳ1VMM3FRVFTUɺίʔυϨϏϡʔɺFUD
ΣϒαʔϏεͷݱ w ΞδϟΠϧ˺ߦ͖ͨΓͬͨΓ ˠΤϯδχΞओಋͰੳʗઃܭʗ࣮αΠΫϧΛ ճ͍ͯͨ͘͠Ίʹɺ#J[Λר͖ࠐΉɺ6*69ɺϚʔ έςΟϯάྖҬ৯͍ࠐΉ ˠܭըత͔ͭૉૣ͘։ൃ͢Δ ˠྫʣϓϩτλΠϐϯάπʔϧɺνϟοτπʔϧɺ ใڞ༗πʔϧɺΧϯόϯϘʔυɺ(PPHMF "OBMZUJDTɺFUD
ΣϒαʔϏεͷݱ w গਫ਼Ӷˠߴ͍ଐਓੑ ˠਨʢػೳʣׂͰ୲Λ͚ͣʹɺͳΔ͘ ·ΜΜͳ͘ίʔυશମΛ৮ΔΑ͏ʹ͢Δ ˠφϨοδͷฏ४Խ ˠྫʣ੩తղੳπʔϧɺϦϑΝΫλϦϯάσʔɺ ࣾษڧձɺϖΞϓϩάϥϛϯά ɺίʔυϨϏϡʔɺ ίʔυεχϖοτͷγΣΞɺใڞ༗πʔϧɺFUD
ݱͰऔΓೖΕΒΕͦ͏ͳ͜ͱΛ ͻͱͭͰଟ͘ຊॻ͔ΒϐοΫΞο ϓͯ͠ɺ׆༻͍͖͍ͯͨ͠Ͱ͢ɻ
Έͳ͞ΜͷݱͰ͍ͭ͘औΓ ೖΕΒΕͦ͏Ͱ͠ΐ͏͔ʁ
ݱ͔ΒҕৡͰ͢ɻ