Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
agile20150512-150512055145-lva1-app6892.pdf
Search
toshi0383
March 07, 2023
Programming
0
240
agile20150512-150512055145-lva1-app6892.pdf
toshi0383
March 07, 2023
Tweet
Share
More Decks by toshi0383
See All by toshi0383
CoreDataはじめました
toshi0383
0
170
Swiftコードバトル必勝法
toshi0383
1
310
Sheets API使ってみた
toshi0383
2
360
visionOSについてGlobeeが取り組んでいること
toshi0383
0
550
たのしいAirPlay
toshi0383
1
740
Profiling using Signpost
toshi0383
2
990
AVPlayer周りの設計tips
toshi0383
6
890
cmdshelf::from("Swift")
toshi0383
3
900
AbemaTV iOSのダウンロード再生機能
toshi0383
4
990
Other Decks in Programming
See All in Programming
レイトレZ世代に捧ぐ、今からレイトレを始めるための小径
ichi_raven
0
490
Rediscover the Console - SymfonyCon Amsterdam 2025
chalasr
2
130
Micro Frontendsで築いた 共通基盤と運用の試行錯誤 / Building a Shared Platform with Micro Frontends: Operational Learnings
kyntk
1
1.9k
エディターってAIで操作できるんだぜ
kis9a
0
640
30分でDoctrineの仕組みと使い方を完全にマスターする / phpconkagawa 2025 Doctrine
ttskch
3
720
WebRTC と Rust と8K 60fps
tnoho
2
1.9k
Building AI with AI
inesmontani
PRO
1
470
関数の挙動書き換える
takatofukui
4
770
tsgolintはいかにしてtypescript-goの非公開APIを呼び出しているのか
syumai
2
650
手が足りない!兼業データエンジニアに必要だったアーキテクチャと立ち回り
zinkosuke
0
360
Media Capture and Streams: W3C仕様と現場での知見
nowaki28
0
130
MAP, Jigsaw, Code Golf 振り返り会 by 関東Kaggler会|Jigsaw 15th Solution
hasibirok0
0
210
Featured
See All Featured
A designer walks into a library…
pauljervisheath
210
24k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.4k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Why You Should Never Use an ORM
jnunemaker
PRO
60
9.6k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
RailsConf 2023
tenderlove
30
1.3k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.1k
Raft: Consensus for Rubyists
vanstee
140
7.2k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
Transcript
@toshi0383 ΞδϟΠϧΞΧσϛʔ ͷݚमʹࢀՃͨ͠Α 1 2015/05/12
❖ ླɹढ़༟ ❖ δϟζɺυϥϜɺଡ଼༲͛ ❖ GWͣͬͱReact.js ৮ͬͯ·ͨ͠
3/5 Scrum Boot Camp(ଜਓ͞Μ) 3/6 Ϧʔμϒϧίʔυ(ਢ౻ޭฏ͞Μଞ) 3/10 TDD(t-wada͞Μଞ) ʹࢀՃ͠·ͨ͠ɻ
ࢀՃͷಈػ ❖ ͬͱ͍͍ࣄͷΓํΛֶΜ Ͱɺݱʹੜ͔͍ͨ͠ͱ͍͏ࢥ ͍ ❖ ७ਮʹ৮Εͯମײͯ͠Έ͔ͨͬ ͨ
ࠓ͢͜ͱ 5 ❖ εΫϥϜʹ͍ͭͯॴײ ❖ Ϧʔμϒϧίʔυͷ࣮ફํ๏ ❖ TDDͷෑډ͕Լ͕Δ
εΫϥϜʹ͍ͭ ͯॴײ
εΫϥϜͬͯʁ 7 ❖ ΞδϟΠϧʁ ❖ ΠςϨʔγϣϯΛճͯ͠ʁ ❖ ேձͱ͔ͬͯʁ ❖ ΈΜͳָͦ͠͏ɺΈ͍ͨͳʁ
ࢲ·ͩΑ͘Θ͔Βͳ͍ͷͰ͕͢ɺ ͋Γͷ··ͷ༷ࢠΛ͓͠͠·͢ɻ
ͱ͍͑ͬͨ͜ͱͱ͍͑ ຊͷදࢴ͕ϓϦϯτ͞ΕͨࢴΛ ΓࠁΜͰγϟοϑϧ ݩͲ͓ΓʹςʔϓͰ͚ͬͭ͘Δ Γࠁ·ͳ͚ΕΑ͔ͬͨͷʹͱ ޙչ͢Δ
ڭ܇ ❖ ࢁ͔ΒͲ͏ͬͯݟ͚ͭग़͔͢ʁ ❖ ςʔϓͰ͚ͬͭ͘Δͷ͕ҙ֎ͱ ͍͠ʢٕज़ྗඞཁʣ ❖ ྃͷఆٛʁ
ଞͷΞδϟΠϧͱͲ͏ҧ͏Μʁ
֮͑Δ͜ͱ͕গͳ͍ͷͰಋೖ͍ͬͯ͢͠ݴͬͯͨ ❖ ̏ͭͷϩʔϧʢׂʣ ❖ ̐ͭͷձٞମ ❖ ̏ͭͷՌ ❖ ͪΐͬͱͨ͠ઐ༻ޠ
ϫʔΫΛͬͯΈͯɺ͍͍ͱࢥͬͨ͜ͱ ❖ ৗʹϥετεύʔτ ❖ ϑΟʔυόοΫͷ࿈ଓ ❖ ݟੵΓͷਫ਼͕͕͋ͬͯΏ͘ ❖ ৼΓฦΓͷҙٛ
ৗʹϥετεύʔτ ❖ కΊΓ͕සൟʹͬͯ͘ΔͷͰɺຖ͕ϦϦʔεؒࡍ ͷςϯγϣϯɻ ❖ ΅ʔͬͱͯ͠ΔՋ͕ͳ͍ͷͰޮ্͕͕Δ + ୡײɻ
ϑΟʔυόοΫͷ࿈ଓ νʔϜֶ͕ͼΛಘΔΈ ❖ σΠϦʔεΫϥϜ aka ேձʢຖʣ ❖ ৼΓฦΓʢΠςϨʔγϣϯ͝ͱʣ
ݟੵΓͷਫ਼্͕͕͍ͬͯ ͘
Α͋͘Δͭ ػೳ1~5ͷ։ൃ νʔϜͷ࣮ྗ 2ϲ݄ઌͷకΊΓ ऴΘΔͱࢥͬͨΜ͚ͩͲɻɻ
εΫϥϜͩͱʂ ػೳ1 కΊ Γ ػೳ2 ػೳ3 కΊ Γ కΊ Γ
ͩΜͩΜݟੵΓ͕ਖ਼֬ʹͳΔʂʢΠϝʔδʣ ※ॳΊͯಋೖ͢Δ ߹ɺษڧظؒ વඞཁɻ
ৼΓฦΓͷҙٛ
ৼΓฦΓͷҙٛ ❖ ͍͍ͱ͜ΖΛͬͱ৳͢ ❖ ࣄͷΓํΛݟ͢
ৼΓฦΓͷҙٛ 0 25 50 75 100 n݄ n + 1
݄ n + 2 ݄ n + 3 ݄ ίʔυྔ ։ൃεϐʔυ ৼΓฦΓ
ͳΔ΄ͲɺεΫϥϜΔͱࣄ ͷΓํ͕վળͰ͖ͦ͏ͩͧ
Α͠ɺ໌͔ΒεΫϥϜΔ ͧʂ
ͳʹ͔Β͡ΊΕɻɻ
ಋೖͷোน ❖ εΫϥϜʹৄ͍͠ਓ͕͍ͳͯ͘ෆ҆ͳΜͰ͚͢Ͳɻɻ ❖ εϚϗνʔϜͱαʔόνʔϜ͕ผձࣾͳͷͰશ෦εΫϥ ϜͰͰ͖ͳ͍ؾ͕ɻɻ ৄ͍͠ਓʹ͓ئ͍ͯ͠དྷͯΒ͍·͠ΐ͏ εϚϗνʔϜ͚ͩεΫϥϜͰͰ͖ͳ͍͔ݕ౼͠·͠ΐ͏ ʢ͍ۤإʣ ࣮ࡍʹߨࢣʹฉ͍ͯΈ·ͨ͠ɻ
͖ͭͮ·ͯ͠ Ϧʔμϒϧίʔ υ࣮ફ
ͷ༷ࢠ ❖ Rubyͷίϛολͷํʑ͕ߨࢣ ❖ OSSͰͷ։ൃϦϞʔτͰͷΓͱΓ͕ ଟ͍ ❖ ࣗવͱͻͱͷίʔυΛಡΜͰҙਤΛΈ औΖ͏ͱ͢Δ ❖
ॻ͘ํಡ·ΕΔͱࢥ͏ͷͰಡΈ͍͢ Α͏ʹؾΛ͔ͭ͏ ❖ ଟ͘ͷݱͰɺͻͱͷίʔυΛಡΉ࣌ ͕ؒѹతʹΓ͍ͯͳ͍ʂͱ͍͏ ఏى ❖ ͳΔ΄Ͳ
ͬͨ͜ͱ ❖ ϨγϐΛग़ྗ͢ΔΞϓϦΛͦ ΕͧΕͰ࡞Δ ❖ ύʔτφʔͷϦϙδτϦΛ ϑΥʔΫ͢Δ ❖ ͍͍ͱࢥͬͨΛॻ͖ग़͢
͍͍ͱࢥͬͨ͜ͱ ❖ Checkstyle͍ΕͨΓɺίʔσΟ ϯάنΛઃ͚ͯపఈ͢ΔΑΓ ɺ֤ࣗͷؾ͖ͮΛੜΉจԽ ͷํ͕ΑͬΆͲେࣄʢࢦఠ͠ͳ ͯ͘ࡁΉํ͕ޮతͰ͢ΑͶʁ ͱ͍͏ߟ͑ํʣ ❖ 1ߦม͑ͨΒϓογϡ͢Δ(ࠩ
͕গͳ͍ํ͕ಡΉؾʹͳΔ) ❖ ͭ·Γɺ
ϦʔμϒϧͳΜͯͨΓલʹ Γ·͠ΐ͏Αͬͯ͜ͱɻ
ͱ͍͑ɺϞνϕʔγϣϯνʔ ϜϝϯόʔͦΕͧΕͰҧ͍·͢ΑͶ
ͳʹΛݴͬͯͻͲ͍ίʔυΛॻ͍ͯ͘Δνʔ Ϝϝϯόʔ͕͍Δʢͱͨ͠ΒʂʣɻͲ͏ͨ͠ Β͍͍ʁ
ϦʔμϒϧΛ࣮ફ͢Δํ๏ ❖ ·ͣɺΈΜͳ͕ίʔυΛಡΊΔΈΛ࡞Δͱ͜Ζ͔ ΒʢίϛοτΛϝʔϧνϟοτͷ௨ʣ ❖ ͪΐͬͱมߋͨ͠Β͙͢ίϛοτͯ͠ϓογϡΛపఈ͢Δ νʔϜΈΜͳ͕͓ޓ͍ͷίʔυΛಡΉश׳Λ͚ͭΔ ேձͰʮࠓͷϦʔμϒϧʯΛڞ༗͢Δ
͜͜·ͰͰͨ͜͠ͱ ❖ εΫϥϜΛΔͱࣄ͕͏·͘ճΓͦ͏ ❖ ϦʔμϒϧίʔυΛҙࣝ͢Δͱͳ͓ྑͦ͞͏
͖ͭͮ·ͯ͠ TDDͷෑډ͕Լ ͕Δ
TDDͱ ❖ ػೳͷςετΛॻ͘ ❖ ࠷ॳςετ͕ࣦഊ͢ΔͷͰϨο υʹͳΔ ❖ ػೳΛ࣮ͯ͠ςετΛάϦʔ ϯʹ͢Δ ❖
ϦϑΝΫλ͢Δ ❖ ͜ΕΛඇৗʹখ͍͞୯ҐͰ͙ Δ͙Δճ͍ͯ͘͠։ൃख๏
Ҏલ͚ࣗͩͰͬͯΈͨTDDͲ͖ ❖ ςετͱػೳΛҰؾʹ࣮͢Δ ❖ ςετ௨ΒΜʂʢෳՕॴʣ ❖ ςετ͕௨ΔΑ͏ʹ࣮Λ͢ ❖ ςετ௨Δ ❖
ςετͷؒҧ͍ʹؾͮ͘ ❖ ςετͱ࣮ΛҰॹʹ͢ ͜ͷςετେৎ͔ͳɻɻ ͳΜ͔ςετॻ͘ํʹ͔ͬ Γ࣌ؒऔΒΕͯΔؾ͕͢Δɻɻ ❖ ͋ɺͬͺΓ͜ͷػೳ͍ΒΜ͔ͬͨΘ orz ❖ ͋ʔ͏ΞϓϦ࡞ͬͯΔͷ͔ςετ࡞ͬͯΔͷ͔ɻɻTDDͱ͔͠ΒΜΘʔ
ݚमͰͬͨTDD ❖ ςετΛॻ͘ʢ࣮ελϒʣ ❖ ςετ͕͚͜Δ ❖ ࣮Λͯ͠άϦʔϯʹ͢Δʢ࠷ڑʣ ❖ ϦϑΝΫλϦϯά ❖
ςετΛॻ͘ ❖ ࠷ڑͷ࣮ͳͷͰͪΐͬͱͻͶ͚ͬͨͩͰςετ͕͚͜Δ ❖ ࣮Λͯ͠άϦʔϯʹ͢Δʢ࠷ڑʣ ❖ ϦϑΝΫλϦϯά ❖ ςετΛॻ͘ ❖ ࠷ڑͷ࣮ͳͷͰͪΐͬͱͻͶ͚ͬͨͩͰςετ͕͚͜Δ
ϙΠϯτ ❖ Test Firstʢ1αΠΫϧ5Ҏʹ݁ͤ͞Δʣ ❖ ෆ҆ͳ͜ͱςετʹͯ͠ղফ ❖ ςετࣗମϦϑΝΫλϦϯάͷର ❖ TDDͰॻ͍ͨςετ
≠ ୯ମςετ
demo ❖ ϝτϩϊʔϜΞϓϦ ❖ TODO ❖ ςϯϙΛද͢ΫϥεΛ࡞Δ ❖ ςϯϙͷ࠷খͰϓϩάϥϜΛѻ͏ςϯϙΛ੍ݶ͢Δ ❖
ςϯϙͷ࠷େͰϓϩάϥϜΛѻ͏ςϯϙΛ੍ݶ͢Δ
TDDͰ͍͍ͱࢥͬͨ ❖ ҆৺ײ ❖ ϦϑΝΫλϦϯά͕ḿΔˠϦʔμϒϧʹͳΔʂ ❖ ͠ΐʔͳ͍όάݮΓͦ͏
ͱ͍͏͜ͱʂ
TDDʹ͍ͭͯ·ͱΊ ❖ εΫϥϜ ❖ Ϧʔμϒϧίʔυ࣮ફ ❖ TDD ❖ ࣮ફ͢Είʔυ៉ྷͰೲظकΕͯόάग़ͳ͘ͳΔʂ ❖
ເʹ·Ͱݟͨཧڷ͏͋ͳͨͷखͷதɻ
ͱɺࢥ͏ͩΖʁ
TDDͷݒ೦ ❖ ։ൃίετ૿ ❖ ςετͷϝϯςίετ૿ ❖ DB,ωοτϫʔΫͷࢼݧͷͨΊʹελϒͱ͔μϛʔσʔ λͱ͔࡞ͬͯϝϯς͢Δͷμϧ͍ ❖ UIΛTDDͰ࡞Δͷ͋·ΓϝϦοτ͕ͳ͍ͬͯt-wada
͞Μ͕ݴͬͯͨ
εΫϥϜͷݒ೦ ❖ ಋೖίετͲ͏͢Δʁ ❖ εΫϥϜ͢Δ͜ͱ͕తʹͳΓͦ͏
૯ׅʢTDDʣ ❖ ෆ׳Εͳٕज़Λѻ͏ͱ͖ʹ͍͍ͯΔ ❖ ͔͔࣌ؒΓ͗͢ΔͷͰ։ൃͯ͢ΛTDDͰΖ͏ͱ͠ ͳ͍ํ͕Α͛͞ ❖ ϖΞϓϩɺෆ׳ΕͳίʔυΛमਖ਼͢Δͱ͖ͱ͔ɺ৽ ਓΛڭҭΛѻ͏࣌ʹ༗ޮ
૯ׅʢϦʔμϒϧʣ ʮಡΉਓ͕ ɹɹɹಡΈ͚͢Ε ɹɹɹɹɹɹϦʔμϒϧʯߨࢣ ϝϯς͚͢͠ΕͦΕͰΑ͠ɻ ࠓ͔Β࣮ફ͠·͠ΐ͏ɻ
૯ׅʢεΫϥϜʣ ❖ εΫϥϜɺνʔϜͷࣄ͕͏·͘ճΔ͜ͱΛอূ͢Δ Έ ❖ ͋͘·Ͱ1ͭͷख๏ͳͷͰɺಋೖ͢ΕඞͣޮՌ͕ग़Δ ͱ͍͏ͷͰͳ͍ ❖ ͍͍ͷΛ࡞͍ͬͯ͜͏ɺ͍͍ࣄΛ͠Α͏ɺͱ͍͏จ ԽΛৢ͢ΔͨΊͷΈͱߟ͑ͨ΄͏͕͍͍͔
Ұ࿈ͷݚमʹࢀՃͯ͠Έͯࡶײ ❖ ༗ྉݚमͬͯߴ͍ͳʔͱࢥ͍·͕ͨ͠ɺແྉΑΓ༗ྉͷ ݚमͷํ͕ʮ͓ۚͬͨΜ͔ͩΒઈରʹ͚ͭͯΔʯ ͱ͍͏ؾʹͳΔͱࢥͬͨɻ ❖ ߨࢣͷํ͕ͦͷಓͷୈҰਓऀ͔ΓͩͬͨͷͰɺୡਓ͔ ΒͰԞٛΛत͔ͬͨؾʹͳΓ͓ಘͳମݧͩͬͨɻ ❖ εΫϥϜͬͯΈͨ͘ͳͬͨ
❖ Keynote͑
thank you