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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
NIIKURA Ryota
October 31, 2018
Programming
1.1k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
新人さんでもテストを書くべきだっていう話
自分の経験談として、新人さんがテストを書くと割といいですよっていう話をしました。
初心者ほどテスト駆動開発の効果っていうのが高いなーって感じました
NIIKURA Ryota
October 31, 2018
More Decks by NIIKURA Ryota
See All by NIIKURA Ryota
SwooleでLaravelを高速化してみる
niisantokyo
0
5.2k
一次元畳み込みフィルターによる音声データのオートエンコーダ
niisantokyo
1
3.8k
タグ付けデプロイの話
niisantokyo
1
1.2k
TensorFlow.jsに保存機能が実装された件
niisantokyo
1
330
PHP-FPMのコンテナログ2重出力問題
niisantokyo
0
280
Laradockの紹介
niisantokyo
0
1.1k
deeplearnjsの紹介
niisantokyo
1
250
ひたすら楽して、PHPアプリをコンテナ運用の縮小版
niisantokyo
0
880
PHPでニューラルネットを作った話
niisantokyo
2
4k
Other Decks in Programming
See All in Programming
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
110
Cloudflare is Agents
chimame
0
160
Foundation Models frameworkで画像分析
ryodeveloper
1
610
freeeにおけるEvalsの実践例の紹介
freee
PRO
0
110
yield再入門 #phpcon
o0h
PRO
0
1k
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
360
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
470
プロポーザルを書いてもらう
pvcresin
0
500
テーブルをDELETEした
yuzneri
0
140
Japan Community Day at Kubecon + CloudNativeCon Japan 2026: Learning Container Privilege Control by Building My Own Low-Level Container Runtime
ternbusty
1
150
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
260
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
4.3k
Featured
See All Featured
Automating Front-end Workflow
addyosmani
1369
210k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
370
Rails Girls Zürich Keynote
gr2m
96
14k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Why Our Code Smells
bkeepers
PRO
340
58k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
200
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
KATA
mclloyd
PRO
35
15k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
410
Exploring anti-patterns in Rails
aemeredith
3
460
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
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