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
テスト駆動開発 輪読会 Vol.4
Search
K
August 05, 2020
Programming
0
140
テスト駆動開発 輪読会 Vol.4
This is a deck for Test-Driven Development reading session
K
August 05, 2020
Tweet
Share
More Decks by K
See All by K
Clean-Architecture-Session-12
kentaro555
0
200
Clean-Architecture-Session
kentaro555
0
140
My thought about what to create as a indie hacker
kentaro555
2
620
Other Decks in Programming
See All in Programming
Kiroで始めるAI-DLC
kaonash
2
590
OSS開発者という働き方
andpad
5
1.7k
@Environment(\.keyPath)那么好我不允许你们不知道! / atEnvironment keyPath is so good and you should know it!
lovee
0
120
ソフトウェアテスト徹底指南書の紹介
goyoki
1
150
Navigating Dependency Injection with Metro
zacsweers
3
260
アセットのコンパイルについて
ojun9
0
120
Updates on MLS on Ruby (and maybe more)
sylph01
1
180
今だからこそ入門する Server-Sent Events (SSE)
nearme_tech
PRO
3
200
AIでLINEスタンプを作ってみた
eycjur
1
230
AIコーディングAgentとの向き合い方
eycjur
0
270
テストカバレッジ100%を10年続けて得られた学びと品質
mottyzzz
2
590
もうちょっといいRubyプロファイラを作りたい (2025)
osyoyu
1
430
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.5k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
51
5.6k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
810
How to train your dragon (web standard)
notwaldorf
96
6.2k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
It's Worth the Effort
3n
187
28k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.7k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
Designing for humans not robots
tammielis
253
25k
Embracing the Ebb and Flow
colly
87
4.8k
Transcript
ςετۦಈ։ൃྠಡձ7PM ষʙষ ݄#Zೆ݈ଠ
લճ·Ͱͷ͓͞Β͍ɻ
લճ·Ͱͷ͓͞Β͍ɻ ɾઃܭ্ෳͷ௨՟Λѻ͍ͬͯΔͱ͍͏͜ͱΛ ҙࣝ͠ͳ͍ͰࡁΉΑ͏ʹ͍ͨ͠ɻ ɾ࣮ʹۙͮͨ͘Ίʹɺ࣌ʹ͘͏͔Θ͔Βͳ͍ςετΛ ॻ͘͜ͱඞཁɻ ɾςετͷதʹɺఆ͍ͯ͠Δಈ͖Λͯ͘͠ΕΔ͔Λ֬ೝ͢Δςετ ֶश༻ςετ ࣮ͷࡍʹߟྀ͞Ε͍ͯͳ͔ͬͨςετʢճؼςετʣ ͳͲ͕͋Δɻ
લճ·Ͱͷ͓͞Β͍ɻ ɾςετΛॻ͍͍ͯΔͱςετͷநΛམͱͯ͠ɺ۩ମతͳςετΛॻ͖ ண࣮ʹਐΉ࣌ͱɺίϯύΠϧΤϥʔΛ50%0ϦετΘΓʹ࣮͢Δ͕࣌͋ Δɻ ɾςετΛॻ࣌͘ɺςετΛಡΉଆʹςετΛॻ͍ͨਓͷҙਤ͕ΘΔΑ ͏ʹ͢Δ͕ඞཁɻ ɾ5%%ʮύϑΥʔϚϯεςετʯɺʮෛՙςετʯɺʮϢʔβϏϦςΟς ετʯͷସʹͳΒͳ͍ɻ
ୈষ Y6OJU͔͏খ͞ͳҰา
ୈষͷओͳ༰ ςετέʔεΛॻͨ͘Ίʹ͏ϑϨʔϜϫʔΫΛ࡞Γɻ ࡞ͬͨϑϨʔϜϫʔΫͷςετέʔεΛ࡞Δɻ ୈ̍̔ষͰɺςετ͕࣮ߦ͞Ε͔ͨͲ͏͔ͷϝιουΛ࡞Γɺ ࡞ͬͨϝιουͷςετέʔεΛॻ͘ͱ͍͏ͷɻ
ୈষͰग़͖ͯͨ༻ޠ ɾY6OJU ɾࣗݾݴٴϓϩάϥϛϯά ɾςετϝιου ɾϝιουͷநग़ ɾ1MVHHBCMF4FMFDUPSύλʔϯ
Y6OJUʹ͍ͭͯ ίϯϐϡʔλʔϓϩάϥϜͷ୯ମςετ Λߦ͏ͨΊͷςεςΟϯάϑϨʔϜϫʔΫͷ૯শɻ
ࣗݾݴٴϓϩάϥϛϯάʹ͍ͭͯ ࣗݾݴٴࣗવݴޠܗࣜݴޠͰจ͕ࣜ ͦΕࣗʹݴٴ͢Δ͜ͱ
ςετϝιουʹ͍ͭͯ ςετέʔε͕ఆٛ͞Εͨɺ UFTU͔Β࢝·Δϝιουͷ͜ͱɻ
ϝιουͷநग़ʹ͍ͭͯ ͍ϝιουͷҰ෦Λผͷϝιουʹͯ͠ɺ ͦͷϝιουΛݺͼग़͢Α͏ʹ͢Δํ๏ɻ
1MVHHBCMF4FMFDUPSύλʔϯ Πϯελϯε͝ͱʹҟͳΔৼΔ͍Λͤ͞ΔͨΊʹɺ ϝιου໊Λ֨ೲ͠ɺͦͷϝιουΛಈతʹىಈ͢Δ σβΠϯύλʔϯɻ
ୈষ લ४උ
ୈষͷओͳ༰ ςετΛॻ࣌͘ɺ"ͱݺΕΔجຊύλʔϯ͕͋Δɻ ςετΛ࡞͍ͯ͠Δ࣌ʮύϑΥʔϚϯεʯͱʮಠཱੑʯͷ ͭͷ੍͕ݱΕΔɻ
ୈষͰग़͖ͯͨ༻ޠ ɾ" ɾύϑΥʔϚϯεͱಠཱੑ ɾϑΟΫενϟʔ
"ʹ͍ͭͯ ४උ "SSBOHF ΦϒδΣΫτΛ࡞Δɻ ࣮ߦ "DU ͦͷΦϒδΣΫτʹରͯ͠ૢ࡞Λߦ͏ɻ Ξαʔτ "TTFSU ݁ՌͷݕূΛߦ͏ɻ
ύϑΥʔϚϯεͱಠཱੑʹ͍ͭͯ ύϑΥʔϚϯεςετՄೳͳݶΓૣ͘ಈ࡞ͯ͠΄͍͠ɻ ྫੜͨ͠ΦϒδΣΫτΛ͍·Θ͍ͨ͠ɻ ಠཱੑςετͷޭࣦഊ ଞͷςετͷ݁ՌʹӨڹͨ͠Γ͞ΕͨΓͯ͠΄͘͠ͳ͍ɻ ྫ͍·Θͨ͠ΦϒδΣΫτ͕มߋ͞ΕͨΒɺ ςετ݁Ռʹҧ͍͕ͰΔͳͲɻ
ςετઈରʹґଘؔΛ࡞ͬͯͳΒͳ͍ɻ ςετ͕ࣦͭഊͨ࣌͠ʹ͕ͭͭ͋Δͱɺ मਖ਼͕ࠔʹͳΔͨΊɻ
ϑΟΫενϟʔ ςετΛߦ͏࣌ʹ༻͢ΔΦϒδΣΫτͷݕূΛߦ͏ࡍʹɺ ΦϒδΣΫτͷݕূίʔυΑΓɺςετΛߦ͏ͨΊͷࣄલ ४උͷίʔυͷํ͕͘ͳΓɺॏෳͯ͠͠·͏͜ͱɻ
ϑΟΫενϟʔͷϝϦοτɾσϝϦοτ ϝϦοτɿͯ͢ͷςετ४උίʔυ͕ॻ͔Ε͍ͯΔ߹ɺ ςετΛ্͔ΒಡΊྑ͍ঢ়ଶʹͳΔɻ σϝϦοτɿॻ͘ͷʹ͕͔͔࣌ؒΓɺมߋ͕͋ͬͨ߹ෳ ͷՕॴΛมߋ͢Δඞཁ͕͋Δɻ
ϑΟΫενϟʔΛղܾ͢ΔͨΊʹɺڞ௨Խ͗͢͠Δͱɺ ςετΛߦ͍ͬͯΔ࣌ʹଞʹͲΜͳॲཧ͕ಈ͍͍ͯΔ͔ Ѳ͢Δඞཁ͕͋ΔͨΊɺྑ͍ԘകΛݟ͚ͭΔඞཁ͕͋Δɻ
ୈষ ޙย͚
ୈষͷओͳ༰ ςετϝιουͰɺUFBS%PXOϝιουͱݺΕΔͷ͕͋Δɻ TFU6QͰςετʹඞཁͳ֎෦ϦιʔεΛ४උ͠ɺUFBS%PXOͰ༻ҙ͠ ͨ֎෦ιʔεΛ։์͢Δɻ
ୈষͰग़͖ͯͨ༻ޠ ɾUFBS%PXOϝιου ɾ-PH4USJOHύλʔϯ ɾ໌നͳ࣮
UFBS%PXOϝιουʹ͍ͭͯ TFU6QϝιουͰׂΓͯΒΕͨ֎෦Ϧιʔε ϑΝΠϧ ιέοτͳͲ ߹ͷΈɺͦΕΒΛ։์͢ΔΛͭϝ ιουɻ
-PH4USJOHύλʔϯʹ͍ͭͯ ਖ਼͍͠ॱ൪Ͱϝιου͕ݺΕ͍ͯΔ͜ͱΛ ςετ͍ͨ͠߹ʹ༻͢Δɻ
໌നͳ࣮ʹ͍ͭͯ ͲΜͳ࣮Λ͢Δ͖͔طʹѲ͍ͯͯ͠ɺࡉ͔͍εςοϓ Ծ࣮ͳͲ Λ౿·ͣʹ࣮͢Δ͜ͱɻ
ୈষ ্͑͛ɻ
ୈষͷओͳ༰ ςετΛಈ͔ͨ࣌͠ʹɺʮSVO GBJMFEΤϥʔ༰dʯͱ͍͏Α͏ ʹදࣔ͞ΕΔͨΊʹɺ·͍ͣͭ͘ςετ͕͔ͬͨΛࣔ͢ϩάΛग़ ྗ͢ΔॲཧΛ࡞ɻ
ୈষ ࣦഊͷѻ͍ɻ
ୈষͷओͳ༰ ୈষͰߦͬͨॲཧͷଓ͖ɻ ষͰΤϥʔͷྫ֎ΛΩϟον͢ΔΈͳ͔͕ͬͨɺςετͷ தͰࣦഊϝιουͷݺͼग़͠ɺྫ֎ͷॱʹςετΛࡉ͔͘ߦ͍ςετ ʹࣦഊͨ͠߹ʮSVO GBJMFEʯͱ͍ͬͨܗͰදࣔ͞ΕΔΑ͏ʹ ࣮ɻ
ୈষ εΠʔτʹ·ͱΊΔɻ
ୈষͷओͳ༰ ࠓ·Ͱߦ͖ͬͯͨςετΛΒͤΔͨΊʹॻ͍ͨॲཧΛ 5FTU4VJUFʹ·ͱΊΔͱ͍͏ͷɻ
#FGPSF ষऴྃ࣌ͷίʔυɻ
"GUFS ষऴྃ࣌ͷίʔυɻ
ୈষͰग़͖ͯͨ༻ޠ ɾ5FTU4VJUF ɾ$PNQPTJUFύλʔϯ ɾ$PMMFDUJOH1BSBNFUFSύλʔϯ
5FTU4VJUFʹ͍ͭͯ ͋ΔϓϩάϥϜ͕ͭɺಛఆͷৼΔ͍Λ·ͱΊͨ ςετέʔεͷմͷ͜ͱɻ
$PNQPTJUFύλʔϯʹ͍ͭͯ ೖΕͱதͷͷΛಉҰͷͷͱଊ͑ͯɺ࠶ؼతͳߏ ͰॲཧΛ؆୯ʹ͢Δ͜ͱ͕Ͱ͖ΔσβΠϯύλʔϯɻ
࣮ࡍͷྫͱͯ͠ࢀߟʹͳΓͦ͏ͳͷɻ IUUQTXXXSJUPMBCDPNFOUSZ
֓ཁ $PNQPTJUFύλʔϯΛ༻͍ͯɺσΟϨΫτϦͷ߹ σΟϨΫτϦͱͦΕʹ࿈ͳΔϑΝΠϧදࣔɻ ϑΝΠϧͷΈͷ߹ɺϑΝΠϧͷΈͷදࣔΛग़͚͠ ͍ͯΔॲཧ͕ྫͱͯ͠ॻ͍ͯ͋Δɻ
$PMMFDUJOH1BSBNFUFSύλʔϯʹ͍ͭͯ ϝιουͷΓΛϕʔεʹσʔλΛ࡞͢ΔͷͰͳ ͘ɺҾʹͨ͠ΦϒδΣΫτʹσʔλΛੵ͍ͯ͘͠ σβΠϯύλʔϯɻ
#FGPSF $PMMFDUJOH1BSBNFUFSύλʔϯલͷίʔυɻ
"GUFS $PMMFDUJOH1BSBNFUFSύλʔϯޙͷίʔυɻ
ୈষ Y6OJUͷશମ;Γ͔͑Γ
ୈষͷओͳ༰ Y6OJUΛ࣮͢Δͭͷҙ͕ٛ͋Δɻ ̍ͭɺࣗࣗͰ࣮͢Δ͜ͱʹΑͬͯɺ͕ࣗҰ൪Α͍ͬͯ͘͠ Δಓ۩͕खʹೖΔͱ͍͏͜ͱɻ ख़ୡ ͏̍ͭɺY6OJUͷ࣮Λ௨ͯ͡৽͍͠ϓϩάϥϛϯάݴޠͰඞཁ ͳػೳΛཏ͢Δ͜ͱ͕Ͱ͖Δɻ
·ͱΊٴͼײ Y6OJUͬͯཪͰ͜͏͍͏෩ʹͳ͍ͬͯΔͷ͔ͱ͍ͬͨยྡྷΛΔ͜ͱ ͕Ͱ͖ͨɻ ·ͨɺ్தͷνϟϓλʔͰ͕͋ͬͨɺΑΓྑ͍ςετΛॻͨ͘Ίʹ ɺͱʹ͔͘ςετΛॻ͍ͯܦݧΛੵ͍ͯ͘͠ඞཁ͕͋Δͱ͍͏ ͜ͱΛ࣮ײͨ͠ɻ