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
940
新人さんでもテストを書くべきだっていう話
自分の経験談として、新人さんがテストを書くと割といいですよっていう話をしました。
初心者ほどテスト駆動開発の効果っていうのが高いなーって感じました
NIIKURA Ryota
October 31, 2018
Tweet
Share
More Decks by NIIKURA Ryota
See All by NIIKURA Ryota
SwooleでLaravelを高速化してみる
niisantokyo
0
4.9k
一次元畳み込みフィルターによる音声データのオートエンコーダ
niisantokyo
1
3.5k
タグ付けデプロイの話
niisantokyo
1
1.1k
TensorFlow.jsに保存機能が実装された件
niisantokyo
1
300
PHP-FPMのコンテナログ2重出力問題
niisantokyo
0
260
Laradockの紹介
niisantokyo
0
1k
deeplearnjsの紹介
niisantokyo
1
230
ひたすら楽して、PHPアプリをコンテナ運用の縮小版
niisantokyo
0
820
PHPでニューラルネットを作った話
niisantokyo
2
3.9k
Other Decks in Programming
See All in Programming
すべてのコンテキストを、 ユーザー価値に変える
applism118
3
1.3k
イベントストーミング図からコードへの変換手順 / Procedure for Converting Event Storming Diagrams to Code
nrslib
2
850
Startups on Rails in Past, Present and Future–Irina Nazarova, RailsConf 2025
irinanazarova
0
130
XP, Testing and ninja testing
m_seki
3
250
Is Xcode slowly dying out in 2025?
uetyo
1
280
AI時代の『改訂新版 良いコード/悪いコードで学ぶ設計入門』 / ai-good-code-bad-code
minodriven
20
7.6k
生成AI時代のコンポーネントライブラリの作り方
touyou
1
230
Google Agent Development Kit でLINE Botを作ってみた
ymd65536
2
250
たった 1 枚の PHP ファイルで実装する MCP サーバ / MCP Server with Vanilla PHP
okashoi
1
260
MDN Web Docs に日本語翻訳でコントリビュートしたくなる
ohmori_yusuke
1
130
ruby.wasmで多人数リアルタイム通信ゲームを作ろう
lnit
3
490
Azure AI Foundryではじめてのマルチエージェントワークフロー
seosoft
0
180
Featured
See All Featured
Become a Pro
speakerdeck
PRO
29
5.4k
Designing for Performance
lara
610
69k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
5.9k
Designing Experiences People Love
moore
142
24k
A Tale of Four Properties
chriscoyier
160
23k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.9k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
We Have a Design System, Now What?
morganepeng
53
7.7k
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