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
新人さんでもテストを書くべきだっていう話
Search
NIIKURA Ryota
October 31, 2018
Programming
1
870
新人さんでもテストを書くべきだっていう話
自分の経験談として、新人さんがテストを書くと割といいですよっていう話をしました。
初心者ほどテスト駆動開発の効果っていうのが高いなーって感じました
NIIKURA Ryota
October 31, 2018
Tweet
Share
More Decks by NIIKURA Ryota
See All by NIIKURA Ryota
SwooleでLaravelを高速化してみる
niisantokyo
0
4.7k
一次元畳み込みフィルターによる音声データのオートエンコーダ
niisantokyo
1
3.3k
タグ付けデプロイの話
niisantokyo
1
1.1k
TensorFlow.jsに保存機能が実装された件
niisantokyo
1
290
PHP-FPMのコンテナログ2重出力問題
niisantokyo
0
240
Laradockの紹介
niisantokyo
0
990
deeplearnjsの紹介
niisantokyo
1
230
ひたすら楽して、PHPアプリをコンテナ運用の縮小版
niisantokyo
0
800
PHPでニューラルネットを作った話
niisantokyo
2
3.9k
Other Decks in Programming
See All in Programming
さいきょうのレイヤードアーキテクチャについて考えてみた
yahiru
3
750
color-scheme: light dark; を完全に理解する
uhyo
3
280
CloudNativePGがCNCF Sandboxプロジェクトになったぞ! 〜CloudNativePGの仕組みの紹介〜
nnaka2992
0
230
How mixi2 Uses TiDB for SNS Scalability and Performance
kanmo
36
14k
PHPカンファレンス名古屋2025 タスク分解の試行錯誤〜レビュー負荷を下げるために〜
soichi
1
190
Ruby on cygwin 2025-02
fd0
0
140
Writing documentation can be fun with plugin system
okuramasafumi
0
120
『品質』という言葉が嫌いな理由
korimu
0
160
責務と認知負荷を整える! 抽象レベルを意識した関心の分離
yahiru
1
210
一休.com のログイン体験を支える技術 〜Web Components x Vue.js 活用事例と最適化について〜
atsumim
0
450
iOSエンジニアから始める visionOS アプリ開発
nao_randd
3
130
Formの複雑さに立ち向かう
bmthd
1
840
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
6
240
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.1k
How to train your dragon (web standard)
notwaldorf
91
5.8k
Practical Orchestrator
shlominoach
186
10k
Bash Introduction
62gerente
611
210k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Docker and Python
trallard
44
3.3k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.4k
How to Think Like a Performance Engineer
csswizardry
22
1.3k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Transcript
৽ਓ͞Μʹڭ͑Δͱ͖ɺ ͪΌΜͱςετॻ͍ͯΒ ͓͏ͱ͍͏ ୈճ1)1ษڧձ!(.0:PVST גࣜձࣾχδϘοΫε৽ྋଠ 1
ϫλγ 2 /BNF৽ྋଠ (JUIVCOJJTBOUPLZP 5XJUUFS!OJJTBOUPLZP 0UIFS*OGPSNBUJPO wχδϘοΫε wΤϯδχΞྺ1)1ྺ͘Β͍ ߨԋཤྺ w1)1ΧϯϑΝϨϯεؔ
w1)1ΧϯϑΝϨϯεؔ w1)1ΧϯϑΝϨϯε
എܠ w ݚम్தͰΓ্͛ͨɺۀະܦݧͷ৽ਓ͞Μ͕ࣗ ͷϓϩδΣΫτʹΤϯδχΞͱͯ͠+PJO͖ͯͨ͠ w ϓϩδΣΫτ-BSBWFMͰ࡞Δ༧ఆͰɺݚमͰ͍ͬͯ ͨΒ͍͚͠Ͳɺόʔδϣϯ͕ҧ͏ ݚम ϓϩδΣΫ τ
w ͡Ίͷ͏ͪɺϓϩάϥϜͷ࣮ࢪॱʹΜͰ͍ΔϨϕ ϧͰ͋ͬͨ 3
4
4 ཁ͢Δʹ
4 ཁ͢Δʹ 0+5
4 ཁ͢Δʹ 0+5 ͱ͍͏໊ͷ
4 ཁ͢Δʹ 0+5 ͱ͍͏໊ͷ ࣮ઓೖ
4 ཁ͢Δʹ 0+5 ͱ͍͏໊ͷ ࣮ઓೖ ͞Εͨ৽ਓ͞Μʹɺςετ·Ͱॻ͔ͤΔͱ͍͏εύϧλΛͨ͠ͱ͖ʹײͨ͡ ܦݧஊͰ͢
ҙ w ͦͦࣗಈςετ͕ಋೖ͞Ε͍ͯͳ͍γεςϜΛੈʹग़ ͢ͷɺਫ਼ਆӴੜతʹ͖͍ͭͷͰɺ͕ࣗܞΘΔϓϩδΣ ΫτͰɺ୭Ͱ͋ΕςετΛॻ͔ͳ͍ͱ͍͚·ͤΜɻ w ςετΛॻ͔ͳ͍ͱ͍͚ͳ͍ཧ༝ʹ͍ͭͯɺ৭ΜͳॴͰ ٞ͞Ε͍ͯΔͷͰɺল͖·͢ 5
ະܦݧͷ৽ਓ͞Μ๊͕͑ͯ ͍ͨ՝ΛѲͯ͠ΈΔ 6
7 ͦͦ৽ਓͱͲ͏͍͏ঢ়ଶͷਓ͔ ܦݧͱ͕ࣝΓͳ͍ͷͰɺ ͍͍ײ͡ͷίʔυ͕ॻ͚ͳ͍ɺ ࣮͕͘͠ਐ·ͳ͍ঢ়ଶͷਓ
ྫɿϒϩάهࣄ w هࣄͷҰཡΛ࡞Γ͍ͨ w Ұཡͷ֤هࣄʹهࣄΛॻ͍ͨϢʔβʔ໊͕΄͍͠ w Ұཡͷ֤هࣄͷίϝϯτҰॹʹද͍ࣔͨ͠ w ͦͷίϝϯτʹίϝϯτΛॻ͍ͨϢʔβʔ໊͕΄͍͠ 8
ྫ͑͜Μͳॻ͖ํ 9
͜ΕΛॻ͘ͷʹඞཁͳࣝ w ϝιουνΣʔϯ Βͳ͍ͱ͘͢͝ͼͬ͘Γ͢Δ w 3FMBUJPOͱ͍͏֓೦ ͜Ε͕ͳ͍ͱϚχϡΞϧʹͨͲΓண͚ͳ͍ w
&MPRVFOUʹ͓͚Δ3FMBUJPO ֮͑Δඞཁ͕͋Δ w &BHFSMPBEJOH / Λ͍ͬͯͳ͍ͱͨͲΓண͚ͳ͍͔
͡Ίଟ͜͏ͳΔ 11
৽ਓ͞Μ๊͕͍͑ͯͨ w ࣝͱܦݧ͕ઈରతʹΓͯͳ͍ͷͰɺ͍͍ײ͡ͷίʔυ ͕ॻ͚ͳ͍ w ͔͠͠ͳ͕Βɺۀʹೖͬͯ͠·ͬͨͷͰɺ࣭ͷ୲อΛ ͠ͳ͚ΕͳΒͳ͍ w ԿΛฉ͚͍͍ͷ͔Θ͔Βͳ͍ঢ়ଶʹΉ w
࣭ʹ͍ͭͯϫλγΜͩ 12
ͰͲ͏͢Ε͍͍ͷ͔ w ͙͢ʹ֮͑ΒΕͦ͏ͳͷ͔Βॻ͍ͯΒ͏͜ͱʹ͢Δ w ԿΛॻ͖͍ͨͷ͔Λ໌Β͔ʹͯ͠ɺదٓϖΞϓϩͰҰॹʹ ࣮ͯ͠ɺ࣮֬ʹ࣮ͷܦݧΛੵΜͰ͍ΈΔ w ͕͖ࣝͬͯͨΒɺϦϑΝΫλϦϯάΛ࣭ͯ͠Λվળ ͯ͠Β͏ 13
͜ΕΒΛղܾ͢Δͱ͍͏ ؍ͰςετΛݟͯΈΔ 14
ςετͷׂ w ͙͢ʹ֮͑ΒΕͦ͏ͳͷ͔Βॻ͍ͯΒ͏͜ͱʹ͢Δ w ԿΛॻ͖͍ͨͷ͔Λ໌Β͔ʹͯ͠ɺదٓϖΞϓϩͰҰॹʹ ࣮ͯ͠ɺ࣮֬ʹ࣮ͷܦݧΛੵΜͰ͍ΈΔ w ͕͖ࣝͬͯͨΒɺϦϑΝΫλϦϯάΛ࣭ͯ͠Λվળ ͯ͠Β͏ 15
ςετ͖ͬͱ͙͢ʹ֮͑ΒΕΔ
ςετͰ֮͑Δ͖͜ͱ 16 ͓͓ɾɾɾ͜Ε֮͑Δ༰͕ଟͦ͏͕ͩɾɾɾ
ςετͰ֮͑Δ͖͜ͱ w ςετͷཧతഎܠ ࠓͷॴ͍Βͳ͍ w ςετͷ࣮ߦํ๏ ͬͪ͜Ͱ༻ҙ͓ͯ͘͠WFOEPSCJOQIQVOJU w ςετʹ͑Δ๛ͳΞαʔγϣϯϝιουͳͲ BTTFSU&RVBMTͱ-BSBWFMͷΞαʔγϣϯͷҰ෦Ҏ֎Βͳ
͍͍ͯ͘ w ςετͷॻ͖ํ ͜Ε͚͓͚͍͍ͩͬͯʂ 17
ςετͷجຊܗ 18 -BSBWFMͰ୯७ͳܝࣔ൘Λ࡞Δͱ͖ͷςετྫ
ςετͷجຊܗ 18 -BSBWFMͰ୯७ͳܝࣔ൘Λ࡞Δͱ͖ͷςετྫ ςετͩΑʔͬͯએݴ
ςετͷجຊܗ 18 -BSBWFMͰ୯७ͳܝࣔ൘Λ࡞Δͱ͖ͷςετྫ ςετͩΑʔͬͯએݴ Կͷςετ͔
ςετͷجຊܗ 18 -BSBWFMͰ୯७ͳܝࣔ൘Λ࡞Δͱ͖ͷςετྫ ςετͩΑʔͬͯએݴ Կͷςετ͔ લఏ݅
ςετͷجຊܗ 18 -BSBWFMͰ୯७ͳܝࣔ൘Λ࡞Δͱ͖ͷςετྫ ςετͩΑʔͬͯએݴ Կͷςετ͔ લఏ݅ ը໘ΞΫηε
ςετͷجຊܗ 18 -BSBWFMͰ୯७ͳܝࣔ൘Λ࡞Δͱ͖ͷςετྫ ςετͩΑʔͬͯએݴ Կͷςετ͔ લఏ݅ ը໘ΞΫηε ͔֬Ί͍ͨ༰Λॻ͘
ςετΛॻ͘खॱ લఏ݅Λ࡞͢Δ σʔλϕʔεɺίϯϑΟάʹԾσʔ λΛೖΕΔ ϦΫΤετΛ͛Δ HFU QPTU
FUD Ϩεϙϯεͷ༰͕ظͨ͠ͱ͓Γ͔ɺ%#ʹظͨ͠ ͕ೖ͍ͬͯΔ͔ͳͲΛ֬ೝ͢Δ جຊతʹ͜Εͷ܁Γฦ͠ 19
ςετͰΔ͜ͱ ܾ·͍ͬͯΔ w ࣮ίʔυͰɺಉ͡Α͏ͳίʔυ͕ग़ݱ͢Δ͜ͱΛ͋ ·Γͳ͍ ͋ͬͯϦϑΝΫλϦϯά͞ΕΔ ͷͰύλʔ ϯΛ֮͑Δʹ͋Δఔͷܦݧ͕ඞཁ w ҰํͰɺςετͰΔ͜ͱܾ·͍ͬͯΔͷͰɺԿճಉ
͡Α͏ͳ͜ͱΛॻ͘͜ͱʹͳΓɺ͍֮͑͢ w GBDUPSZϦΫΤετͷγϛϡϨʔτɺΞαʔγϣϯ ΛɺϖΞϓϩͳͲͰҰॹʹॻ͖ͳ͕Βڭ͑Δͱॱ൪Λ֮͑ ͍ͯ͘ͷͰ͍͍Α͏ʹࢥ͏ 20
ςετͷׂ w ͙͢ʹ֮͑ΒΕͦ͏ͳͷ͔Βॻ͍ͯΒ͏͜ͱʹ͢Δ w ԿΛॻ͖͍ͨͷ͔Λ໌Β͔ʹͯ͠ɺదٓϖΞϓϩͰҰॹʹ ࣮ͯ͠ɺ࣮֬ʹ࣮ͷܦݧΛੵΜͰ͍ΈΔ w ͕͖ࣝͬͯͨΒɺϦϑΝΫλϦϯάΛ࣭ͯ͠Λվળ ͯ͠Β͏ 21
ςετ͖ͬͱ͙͢ʹ֮͑ΒΕΔ Կ͕ॻ͖͍ͨͷ͔Λςετʹॻ͍ͯΒ͏
͜Μͳঢ়گ 22 ༷ΛѲ͢Δ ॲཧΛ࣮͢Δ ݁ՌΛ͔֬ΊΔ
͜Μͳঢ়گ 22 ༷ΛѲ͢Δ ॲཧΛ࣮͢Δ ݁ՌΛ͔֬ΊΔ ͕͜͜Θ͔Βͳ͍ͷͰ࣮͕ਐ·ͳ͍
͜Μͳঢ়گ 22 ༷ΛѲ͢Δ ॲཧΛ࣮͢Δ ݁ՌΛ͔֬ΊΔ ͕͜͜Θ͔Βͳ͍ͷͰ࣮͕ਐ·ͳ͍ ࣮͕ਐ·ͳ͍ͷͰ͜͜ʹ౸ୡ͠ͳ͍
͜͏ͯ͋͛͠Δͱ͍͍ 23 ༷ΛѲ͢Δ ॲཧΛ࣮͢Δ ݁ՌΛ͔֬ΊΔ
͜͏ͯ͋͛͠Δͱ͍͍ 23 ༷ΛѲ͢Δ ॲཧΛ࣮͢Δ ݁ՌΛ͔֬ΊΔ ઌʹςετΛॻ͍͓͍͔ͯͯ֬Ί͍ͨ݁ ՌΛৗʹ໌֬ʹ͓ͯ͘͠
͜͏ͯ͋͛͠Δͱ͍͍ 23 ༷ΛѲ͢Δ ॲཧΛ࣮͢Δ ݁ՌΛ͔֬ΊΔ ͙͢ʹͰ͖ͳ͍ͷͰɺςετʹॻ ͍ͨ݁ՌΛ͔֬Ίͳ͕Βɺ ͬ͘͡Γ࣮ΛਐΊΔ ઌʹςετΛॻ͍͓͍͔ͯͯ֬Ί͍ͨ݁ ՌΛৗʹ໌֬ʹ͓ͯ͘͠
ͱΓ͋͑ͣςετॻ͚Δ 24
ͱΓ͋͑ͣςετॻ͚Δ 24 ͱΓ͋͑ͣɺ͜ͷϢʔβʔ͕ग़ͯ ͍ͯɺ͜ͷϢʔβʔ͕ग़͍ͯͳ͍ঢ়گ ͕΄͍͠Ͱ͢
ͱΓ͋͑ͣςετॻ͚Δ 24 ͓͚ͬʔ ΄ΜͳΒ͜Μͳ࣮Ͱߦ͚ͦ͏͡Όͳ͍ʁ ͱΓ͋͑ͣɺ͜ͷϢʔβʔ͕ग़ͯ ͍ͯɺ͜ͷϢʔβʔ͕ग़͍ͯͳ͍ঢ়گ ͕΄͍͠Ͱ͢
͓ʁ͜Εɾɾɾ 25
ςετۦಈ։ൃ w ςετΛઌʹॻ͘͜ͱͰɺ࣮͘͢͢͠Δख๏ w ಛผͳํ๏Ͱͳ͘ɺΉ͠Ζॳ৺ऀͦ͜ɺԸܙͷଟ͍։ൃ ख๏Ͱ͋Δͱߟ͍͑ͯΔ w ͋ΔఔܦݧΛੵΜͰ͍Δͱɺςετॻ͔ͳͯ͘ඪʹ ͚࣮͕ͨεϥεϥॻ͚ΔͷͰɺςετۦಈ։ൃ͕ԯ߷ ʹײ͡Δ͔͠Εͳ͍
26
ςετͷׂ w ͙͢ʹ֮͑ΒΕͦ͏ͳͷ͔Βॻ͍ͯΒ͏͜ͱʹ͢Δ w ԿΛॻ͖͍ͨͷ͔Λ໌Β͔ʹͯ͠ɺదٓϖΞϓϩͰҰॹʹ ࣮ͯ͠ɺ࣮֬ʹ࣮ͷܦݧΛੵΜͰ͍ΈΔ w ͕͖ࣝͬͯͨΒɺϦϑΝΫλϦϯάΛ࣭ͯ͠Λվળ ͯ͠Β͏ 27
ςετ͖ͬͱ͙͢ʹ֮͑ΒΕΔ ςετۦಈ։ൃऔΓೖΕΔ ςετೖ͍ͬͯΕɺϦϑΝΫλϦϯάزΒͰͰ͖Δ
͡Ί͜͏ͩͬͨͷ͕ 28
͜͏ͳͬͨΒؾ͍͍࣋ͪʂ 29 ͍ͭͰʹࣗϋοϐʔ ৽ਓ͞Μ΄ͲɺϦϑΝΫλϦϯάΛ࣮ײ͍͢͠
30 ςετ͕௨͍ͬͯΔ͜ͱΛ࣠ʹͯ͠ɺ࣮ͷमਖ਼Λ͢Δ͜ͱ ϦϑΝΫλϦϯά
࣮ײͱͯ͠ͷ ϦϑΝΫλϦϯά w ࣝܦݧ͕Γͳ͍ঢ়ଶͰɺίʔυ͕ͰՄಡੑͷ ѱ͍ͷʹͳΔ w ίʔυΛॻ͘ʹ࿈ΕͯɺԿΛͲ͏͔͚͍͍͔Θ͔ͬͯ͘ Δ w ੲॻ͍ͨͳίʔυΛϦϑΝΫλϦϯάͯ͠εοΩϦॻ
͚ΔΑ͏ʹͳͬͨ͜ͱΛ࣮ײ͢Δ 31
ڭ͑Δଆͷ͓ಘ͞ w ςετΛݟΔ͜ͱͰɺ৽ਓ͞Μͷ༷ͷѲ۩߹͕Θ͔Δ w ςετ͕ॻ͍ͯ͋ΔͷͰɺՄಡੑͷ͍ίʔυͰɺ༰ ͕͍͋ͬͯΔ͔Ͳ͏͔Θ͔Γ͍͢ w ςετͷࣦഊ͕͋ΕɺϚʔδ͠ͳ͍Α͏ʹ͓ͯ͘͜͠ͱ Ͱɺ·͍ͣίʔυ͕ฆΕࠐΉ͜ͱΛ͙͜ͱ͕Ͱ͖Δ w
ϦϑΝΫλϦϯάΛ௨ͯ͠৽ਓ͞Μͷ۩߹͕Θ͔Δ w ςετۦಈ։ൃͷϝϦοτΛ࣮ײͰ͖Δ͔͠Εͳ͍ 32
ͱ͍͏Θ͚Ͱ৽ਓ͞Μ͜ ͦςετॻ͘ͱ͍͍Ͱ͢Αʂ 33
ڭ͑Δଆ͕ ؾΛ͚ͭΔ͖͜ͱ 34
ใաଟʹؾΛ͚ͭΔ w ৽ਓ͞Μɺ΄ͱΜͲ͕ࣝͳ͍ͷͰɺҰؾʹେྔͷ͜ͱ Λڭ͑Δͱɺࠞཚͯ͠ٯޮՌʹؕΓ͍͢ ࣗͬͯ͠·͔ͬͨ w ςετίʔυαϯϓϧͱͳΔΑ͏ͳίʔυྫΛࣔͯ͋͠ ͛Δͱྑ͍ ίϐϖͰ࡞ͬͨͷΛɺςετ༰ʹ߹Θͤͯमਖ਼͢Δͩ
͚Ͱɺ݁ߏ֮͑ͪΌ͏ 35
ϨϏϡʔϖΞϓϩΛ͢Δ w ͍͠ͱͯ͠ɺϨϏϡʔϖΞϓϩʹੵۃతʹԠ͡Δ ͖ w ϨϏϡʔ͢Δͱ͖ɺେྔͷࣝܦݧΛඞཁͱ͢ΔՕ ॴʹ͍ͭͯ͋͑ͯमਖ਼͠ͳ͍ͰɺޙʑͷϦϑΝΫλϦϯ άͷ͜ͱ·Ͱߟ͓͑ͯ͘ͱϕλʔ w ϖΞϓϩ͢Δͱ͖ɺͳͥͦ͏͍͏࣮Λ͢Δͷ͔ޱʹग़
͠ͳ͕ΒΔͱ͍͍ͷͰͱࢥ͏ 36
ϖΞϓϩʹ͏πʔϧ 37 ͛͢ʔ͓͢͢Ί
38 (JUIVCΞΧϯτͰϩάΠϯͰ͖ΔͷͰɺ͓खܰͰ͢ʂ
ϨϏϡʔ 39 ී௨ʹ(JUIVCͷ13ͱ͔(JU-BCͷ.3ͱ͔͏ͰΑ͍͔ͱ $*Ͱςετճͯ͠ɺࣦഊͨ͠ ΒϚʔδͰ͖ͳ͍Α͏ʹͯ͠ ͍Δ ༻γεςϜͰɺສҰͷϛε Λͨ͘͠ͳ͍ͱ͖ʹอݥͱ ͯ͠ೖΕ͓ͯ͘ͱ͍͍
·ͱΊ w ৽ਓ͞ΜʹςετΛॻ͍ͯΒ͏ͱɺ͍͍͜ͱ͕ͨ͘͞Μ ͋Δ w ֮͑Δ͜ͱ͕ଟ͍தͰςετಉ͡Α͏ͳͷΛ܁Γฦ ͠ॻ͘͜ͱʹͳΔͷͰɺ͍֮͑͢ w ςετΛॻ͘͜ͱͰɺ৽ਓͷͱίʔυ࣭ͷվળΛ྆ ཱͤ͞Δ͜ͱ͕Ͱ͖ΔͷͰɺͥͻͱॻ͍ͯΒ͓͏ʂ
40
41 ৽ਓͰςετΛॻ͔ͳ͚ΕͳΒͳ͍
41 ৽ਓͰςετΛॻ͔ͳ͚ΕͳΒͳ͍
41 ৽ਓͰςετΛॻ͔ͳ͚ΕͳΒͳ͍
41 ৽ਓͰςετΛॻ͔ͳ͚ΕͳΒͳ͍ ৽ਓ͞Μ͕ςετΛॻ͘ͱɺͱ͓ͯಘ
͝ਗ਼ௌ͋Γ͕ͱ͏͟͝ ͍·͢ʂ 42