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
BIT VALLEY 2018 ミクシィにおけるTDDの取り組みと実態
Search
dsakamoto
September 10, 2018
Technology
470
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
BIT VALLEY 2018 ミクシィにおけるTDDの取り組みと実態
dsakamoto
September 10, 2018
More Decks by dsakamoto
See All by dsakamoto
Dive into mixi 2018/9/21 2年連続でISUCON予選通過するための技術
dsakamoto
0
1.8k
Other Decks in Technology
See All in Technology
強化学習「理論」入門
enakai00
3
3.6k
AIのためのEthernet技術動向 (SerDes)
markunet
1
260
:syncing_time:
sksat
2
220
平文パスワードはログに“残り” ── 肝心の侵入は“痕跡すら残らない”
kuroneko13
0
110
【書籍出版記念】 10周回って、エージェント開発は RAGがすべてだった。〜RAGの歴史と開発現場で見えた実践知〜
akiratameto
6
1.5k
2027年のMetricKit
kantacky
0
140
LLM Internals: 언어 모델의 계보와 알고리즘 진화 (2023~2026)
inureyes
PRO
1
830
Eight Engineering Unit 紹介資料
sansan33
PRO
3
8.2k
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1.2k
AIで変わるエンジニアの働き方(仮)
naoinaoi
0
280
2026-08-15 JAWS-UG 茨城 #16 Secrets ManagerにおけるSecret値の管理(Terraformの場合) / Secrets Manager Secrets
masasuzu
0
450
My broken English still works: speaking at global OSS events
naruoga
0
120
Featured
See All Featured
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.8k
WENDY [Excerpt]
tessaabrams
11
39k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
210
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
220
Crafting Experiences
bethany
1
260
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.4k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
470
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
810
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.8k
Transcript
(c) mixi, Inc, ϛΫγΟʹ͓͚Δ TDDͷऔΓΈͱ࣮ଶ גࣜձࣾϛΫγΟ ࡔຊେี
(c) mixi, Inc, ࣗݾհ • גࣜձࣾϛΫγΟ • ࡔຊ େี •
2017৽ଔೖࣾ • ීஈαʔόαΠυΤϯδχΞ • RubyΛॻ͔͘AWSͱٔΕ͍ͯΔ • झຯͰElixir, JavaScript, GoͳͲ
(c) mixi, Inc, ࣗݾհ • גࣜձࣾϛΫγΟ • ࡔຊ େี •
2017৽ଔೖࣾ • ීஈαʔόαΠυΤϯδχΞ • RubyΛॻ͔͘AWSͱٔΕ͍ͯΔ • झຯͰElixir, JavaScript, GoͳͲ ͍ͬ͘͢͟͝Γ
(c) mixi, Inc, ࠓ͢͜ͱ͞ͳ͍͜ͱ • ͢͜ͱ • ฐࣾͰͷTDDΛೝͯ͠Β͏ͨΊͷऔΓΈ • ࣾΞϯέʔτ݁ՌΛͱʹͨࣾ͠Ͱͷ࣮ଶ
• ݸਓతͳ “””ײ””” • ͞ͳ͍͜ͱ • TDDͦͷͷʹ͍ͭͯͷৄࡉͳઆ໌
(c) mixi, Inc, ฐࣾͰͷऔΓΈʹ͍ͭͯ
(c) mixi, Inc, ฐࣾͰͷऔΓΈʹ͍ͭͯ • ςετݚम • TDD Challenge
(c) mixi, Inc, ฐࣾͰͷऔΓΈʹ͍ͭͯ • ςετݚम • TDD Challenge
(c) mixi, Inc, ͳͥςετݚमΛߦ͏ͷ͔ • ͲͷΑ͏ͳܗͰ͋ΕςετΛॻ͘ͱ͍͏ͷҰൠతͰ͋ΓશࣾతʹߦΘΕͯ ͍Δͷ • →աڈɺݚमͱͯ͠ߦΘΕ͍ͯͳ͔ͬͨ •
→ͦͦςετ͢Βॻ͍ͨ͜ͱͷͳ͍৽ଔ͕ଐ͞Ε͍ͯͨ • ݁Ռͱ࣭ͯ͠ͷྑ͘ͳ͍ςετίʔυ͕ॻ͔ΕΔ • ͦͦ͘͠ςετ͕ॻ͔Εͳ͍ • ͱ͍͏ݱ͔ΒͷΛ౿·͑ݚमʹΈࠐ·Εͨ
(c) mixi, Inc, ςετݚम • 2017৽ଔ͔Βςετݚम͕ಋೖ • http://alpha.mixi.co.jp/entry/2017/07/07/173650 • ʮं૭͔ΒͷTDD(*)ʯΛϕʔεʹϖΞϓϩܗࣜͰςετۦಈ։ൃΛߦ͏
*ं૭͔ΒͷTDD http://objectclub.jp/technicaldoc/testing/stack_tdd.pdf ༷ࢠͰ͢
(c) mixi, Inc,
(c) mixi, Inc,
(c) mixi, Inc, ฐࣾͰͷऔΓΈʹ͍ͭͯ • ςετݚम • TDD Challenge
(c) mixi, Inc, TDD Challenge • ৽ଔͰධͩͬͨςετݚमΛֶੜ͚Πϕϯτͱͯ͠ΞϨϯδ • ֶੜ࣌ʹͳ͔ͳ͔ςετΛॻ͘͜ͱ͕ͳ͍ •
ͦͦͲ͏ͬͯॻ͍͍͚͍͍͔ͯΘ͔Βͳ͍ • ςετͷॻ͖ํ͔ΒTDDͷϑϩʔΛମݧ • 9/7(ۚ)ʹ։࠵͠·ͨ͠
(c) mixi, Inc, ࣾͰͷ༷ࢠ
(c) mixi, Inc, લఏ • ϛΫγΟࣾͰଟछଟ༷ͳαʔϏε͕ల։͞Ε͍ͯ·͢ • νʔϜ͝ͱʹٕज़ελοΫ։ൃελΠϧશ͘ҟͳΔ • Web
app, Android/iOS app, Unity, etc etc…. • શࣾͰ౷Ұͷ։ൃख๏ͳͲͳ͘దࡐదॴ • ฐࣾΤϯδχΞͷTDDʹର͢Δؾ࣋ͪΛฉ͍ͯΈ·ͨ͠
(c) mixi, Inc, શମͷΞϯέʔτ • ճऀ 38໊ • TDDΛ͍ͬͯ·͔͢ʁ •
ॴଐ͍ͯ͠ΔνʔϜͰTDDΛ࣮ફ͍ͯ͠·͔͢ʁ • TDDΛ࣮ફ্ͨ͠Ͱײͨ͡ϝϦοτɾσϝϦοτ • ଞͷਓνʔϜϝϯόʔʹTDDΛקΊ͍ͨͰ͔͢ʁ • (࣮ફ͍ͯ͠ͳ͍߹)ͳ࣮ͥફ͍ͯ͠·ͤΜ͔ʁ
(c) mixi, Inc, શମͷΞϯέʔτ • ճऀ 38໊ • TDDΛ͍ͬͯ·͔͢ʁ •
ॴଐ͍ͯ͠ΔνʔϜͰTDDΛ࣮ફ͍ͯ͠·͔͢ʁ • TDDΛ࣮ફ্ͨ͠Ͱײͨ͡ϝϦοτɾσϝϦοτ • ଞͷਓνʔϜϝϯόʔʹTDDΛקΊ͍ͨͰ͔͢ʁ • (࣮ફ͍ͯ͠ͳ͍߹)ͳ࣮ͥફ͍ͯ͠·ͤΜ͔ʁ
(c) mixi, Inc, TDDΛ͍ͬͯͯΑ͔ͬͨ͜ͱɺಘΒΕͨϝϦοτʹ͍ͭͯڭ͍͑ͯͩ͘͞ • ૄ݁߹ͳ࣮ɺ༷ಈ࡞αϯϓϧͷςετʹΑΔ໌จԽ • ࣮͠ΕΛ͙͜ͱ͕Ͱ͖ͨɻظ͢Δڍಈ͕ཧ͞ΕͲ͏ৼΔ͏͖ ͔ઃܭͬΆ͍͜ͱ͕Ͱ͖ͨɻ •
ϨΞέʔεڥքΛ͜΅ͣ͞ʹॻ͚Δ͠ɺάϦʔϯɾϨουΛ܁Γฦ͢͜ͱ Ͱୡײ͕ಘ͍͢
(c) mixi, Inc, TDDΛ͍ͬͯͯΑ͔ͬͨ͜ͱɺಘΒΕͨϝϦοτʹ͍ͭͯڭ͍͑ͯͩ͘͞ • ςετϑΝʔετͰͳͯ͘ɺςετΛॻ͖ͳ͕Β։ൃΛਐΊΔͱɹ҆৺ײ͕͋Δ • Βͳ͍ίʔυ֮͑ͯͳ͍ίʔυʹमਖ਼͕ඞཁʹͳͬͯɺ҆৺ͯ͠มߋΛՃ͑ Δ͜ͱ͕Ͱ͖Δ •
ςετ͕ઌߦ͢Δ͜ͱͰɺͦͷ͠ͷ͗ͷ࣮Ͱͳ͘ςετ͕Ͱ͖Δ࣮͕Ͱ͖ͨ ΓɺϦϑΝΫλ࣌ͷ҆৺ʹͭͳ͕ͬͨΓ͢Δͱײ͍ͯ͡Δ
(c) mixi, Inc, ରʹTDDΛਐΊΔʹ͋ͨͬͯࠔͬͨ͜ͱɺσϝϦοτͩͳͱײͨ͜͡ͱʹ͍ͭͯڭ͍͑ͯͩ͘͞ • test codeͷཧίετ • طଘͷίʔυϕʔεʹςετίʔυ͕͍ͬͯͳ͍ͱɺςετΛಋೖ͢Δ ·Ͱʹ͕͔͔࣌ؒΔ
• ϓϩδΣΫτ͕ڊେͩͱςετΛ࣮ߦ͢Δͷʹ͔͔࣌ؒͬͯɺ͍͍ͪͪς ετۦಈͯͨ͠Β͕͔͔࣌ؒͬͯ͠·͏
(c) mixi, Inc, ରʹTDDΛਐΊΔʹ͋ͨͬͯࠔͬͨ͜ͱɺσϝϦοτͩͳͱײͨ͜͡ͱʹ͍ͭͯڭ͍͑ͯͩ͘͞ • ࠓ৽نࣄۀΛ͍ͬͯΔͨΊɺ࡞Γ͠ϒϥογϡΞοϓͷաఔͰςετͷҙٛ ͕ͳ͘ͳͬͨΓᐫʹͳΔ͜ͱଟ͍ͷͰɺΊͯ͠·͍·ͨ͠ɻ • ΫϥΠΞϯτΞϓϦͷΑ͏ʹϏϧυ͓Αͼςετʹ10୯ҐͰ͕͔͔࣌ؒΓɺ༷͕ ͜Ζ͜ΖมΘΔ։ൃʹ͓͍ͯ͋·ΓTDD͙ͦΘͳ͍Α͏ʹײͨ͡ɻ
• ήʔϜΛ։ൃ͢Δ͏͑ͰTDDʹ͍͍ͯΔɺͦ͏Ͱͳ͍͕ଘࡏ͢ΔͷͰѻ͍ ͕͍͠ɻ
(c) mixi, Inc, Ξϯέʔτ·ͱΊ • ϝϦοτ • ςετʹ͍ͭͯ೦಄ʹஔ͖ͳ͕Β࡞ۀΛਐΊΔ͜ͱͰ༷࿙ΕΛճආɺઃܭΛ͢͢Ί͘͢ͳͬ ͨͱײ͍ͯ͡Δ •
ෆ҆Λίϯτϩʔϧ͠ͳ͕Βண࣮ʹҰาͣͭਐΊΔ҆৺ײ͕ϝϦοτͱͯ͠ײ͡ΒΕ͍ͯΔ • σϝϦοτ • ςετΛճ্͢Ͱͷڥඋςετίʔυͷཧɾӡ༻ίετ͕ߴ͍ • ։ൃ͢ΔϓϩμΫτͷੑ࣭ɺϑΣʔζʹΑͬͯෆదͳ߹͕ଟ࣮͘ࡍʹಋೖ͍ͯ͠ͳ͍ύ λʔϯ
(c) mixi, Inc, ݸਓతͳ͓ؾ࣋ͪ • “ςετۦಈ։ൃϓϩάϥϛϯάதͷෆ҆Λίϯτϩʔϧ͢Δख๏ͩ” • ςετۦಈ։ൃ ·͕͖͑ •
ෆ҆ͳΛ໌Β͔ʹ͠ͳ͕ΒਐΊΔ • ༷ઃܭʹ͍ͭͯਂ͘ߟ͑Δඞཁ • ͦͷաఔͰ࿙ΕͳͲΛ͙͖͔͚ͬͱͳͬͯΑ͍ • ͱ͍͏͔جຊతʹ͕ࣗࣗ৴͡ΒΕͳ͍!!! • TDD͕͙ͦΘͳ͍෦Ͱಋೖͯ͠ίετ͕େ͖͘ͳΔͷຊస
(c) mixi, Inc, શମ·ͱΊ • ฐࣾͰߦ͍ͬͯΔݱͷΛ౿·͑ͨςετʹؔ͢Δݚमͱɺֶੜʹମݧ ͯ͠Β͑ΔΠϕϯτΛհ • ࣭୲อɺઃܭͷ͢͢Ί͢͞ͷྑ͞Λମݧ •
Ұͭͷख๏ͱͯ͠TDDΛͬͯΒ͏׆ಈ • ॴଐ͢ΔΤϯδχΞͨͪͷTDDʹର͢Δؾ࣋ͪͱ࣮ײΛൃද
(c) mixi, Inc, EOF
(c) mixi, Inc, Appendix
(c) mixi, Inc, શମ͚Ξϯέʔτ • ճ 38 • TDDΛ͍ͬͯ·͔͢ʁ •
ॴଐ͍ͯ͠ΔνʔϜͰTDDΛ࣮ફ͍ͯ͠·͔͢ʁ • TDDΛ࣮ફ্ͨ͠Ͱײͨ͡ϝϦοτɾσϝϦοτ • ଞͷਓνʔϜϝϯόʔʹTDDΛקΊ͍ͨͰ͔͢ʁ • (࣮ફ͍ͯ͠ͳ͍߹)ͳ࣮ͥફ͍ͯ͠·ͤΜ͔ʁ
(c) mixi, Inc,
(c) mixi, Inc, TDDΛ͍ͬͯͯΑ͔ͬͨ͜ͱɺಘΒΕͨϝϦοτʹ͍ͭͯڭ͍͑ͯͩ͘͞ ࣮ʹࣗ৴͕࣋ͯ·͢ɻ جຊతʹʮςετ͕͋Δʯ͜ͱ͕อূ͞Ε͍ͯΔͷͰɼ҆৺ͯ͠ίʔυΛॻ͍ͯJenkins͓͡͞ΜʹౖΒΕΔ͜ͱ͕Ͱ͖Δ ࣮࿙Ε͕ݮͬͨ / ظ͢Δಈ࡞͕Θ͔Γ͔ͬͨ͢ ۦಈͰܶతʹخ͍͜͠ͱࢥ͍͔ͭͳ͍ʢςετͦͷͷ͋Δ͚Ͳʣɻ
ઌʹςετΛ४උ͢Δ͜ͱͰɺ࣮࣌ʹԿ͕ඞཁͱ͞Ε͍ͯΔ͔ɺߟ͑ͳ͚ΕͳΒͳ͍ͷ͔ͱ͍ͬͨ͜ͱΛࣗવͱҙࣝ͢ΔΑ͏ʹͳͬͨ ·ͨɺςετ͕ઌߦ͢Δ͜ͱͰɺͦͷ͠ͷ͗ͷ࣮Ͱͳ͘ςετ͕Ͱ͖Δ࣮͕Ͱ͖ͨΓɺϦϑΝΫλ࣌ͷ҆৺ʹͭͳ͕ͬͨΓ͢Δͱײ͍ͯ͡Δ ಛʹOSSͱͯ͠ެ։͢Δࡍʹπʔϧͷ৴པੑ୲อܰඍͳෆ۩߹ࠞೖΛ͛Δͷ͕ྑ͍ɻ Βͳ͍ίʔυ֮͑ͯͳ͍ίʔυʹमਖ਼͕ඞཁʹͳͬͯɺ҆৺ͯ͠มߋΛՃ͑Δ͜ͱ͕Ͱ͖Δ ϨΞέʔεڥքΛ͜΅ͣ͞ʹॻ͚Δ͠ɺάϦʔϯɾϨουΛ܁Γฦ͢͜ͱͰୡײ͕ಘ͍͢ όά͕ίϛοτ͞Εʹ͘͘ͳͬͯ݁Ռతʹ্࣭͕͕Δɻ όάमਖ਼ʹ͓͍ͯɺใࠂ͞ΕͨόάΛ࠶ݱ͢ΔςετΛ࡞͔ͯ͠Β࣮Λमਖ਼͢Δ͜ͱͰແҙຯͳվम (վमͨͭ͠Γ͕ͩվमͰ͖ͳ͍) ΛճආͰ͖ΔϝϦοτΛײ͡Δɻ ࣮ͷલʹৼΔ͍͓Αͼ༷͕໌֬ʹͳΓɺઃܭͷॿ͚ʹͳΔ લ৬Ͱ͍͕ͬͯͨQAͰݕূ͢Δ߲͕ݮͬͨɻ ϦϞʔτϦϙδτϦʹpush͢ΔલʹඞͣςετΛ௨͢ඞཁ͕͋ΔϫʔΫϑϩʔʹ͢Δ͜ͱͰࣄނ͕ݮͬͨɻ ࣮͠ΕΛ͙͜ͱ͕Ͱ͖ͨɻظ͢Δڍಈ͕ཧ͞ΕͲ͏ৼΔ͏͖͔ઃܭͬΆ͍͜ͱ͕Ͱ͖ͨɻ ࡉ͔ͳϛεʹؾ͖͍ͮ͢ test feed backʹΑΔproduction codeͷ্࣭ ૄ݁߹ͳ࣮ɺ༷ಈ࡞αϯϓϧͷςετʹΑΔ໌จԽ ςετΛॻ͘தͰ༷Λ໌֬ԽͰ͖Δɻ༷ܾ·ͬͨͱࢥ͍͕ͬͯͨ࿙Ε͍ͯͨέʔεʹؾ͘͜ͱ͕Ͱ͖Δɻ ςετϑΝʔετͰͳͯ͘ɺςετΛॻ͖ͳ͕Β։ൃΛਐΊΔͱ҆৺ײ͕͋Δ viewʹϩδοΫؙग़͠ɺͳͲͻͲ͍࣮ʹͳΔ͜ͱͳ͘ͳͬͨ rubyಈ͔͢·ͰΘ͔ΒΜͷͰઌʹςετॻ͍ͱ͘ͱศར ϝιουΛ௨͢ςετΛॻ͘ͷ͔༷ʹ४ͨ͡ςετΛॻ͘ͷ͔ߟ͑ΔΑ͏ʹͳͬͨؾ͕͢Δ
(c) mixi, Inc, ରʹTDDΛਐΊΔʹ͋ͨͬͯࠔͬͨ͜ͱɺσϝϦοτͩͳͱײͨ͜͡ͱʹ͍ͭͯڭ͍͑ͯͩ͘͞ ࡶͳςετଟʑ͋Δ TDDΛ໌จԽͨ͜͠ͱʹΑΔྫ֎ͷೝΊʹ͘͞ ϓϩδΣΫτ͕ڊେͩͱςετΛ࣮ߦ͢Δͷʹ͔͔࣌ؒͬͯɺ͍͍ͪͪςετۦಈͯͨ͠Β͕͔͔࣌ؒͬͯ͠·͏ɻ ෳਓͰ͍ͬͯ͘ͱɺͦΕͧΕඞཁͱࢥ͍ͬͯΔ͜ͱͳͲͷՁ؍͕߹Θͳ͔ͬͨΓ͢ΔͷͰ͙͢ʹಋೖͱ͍͏͜ͱ͕͘͠ײ͡Δ ɾClean ArchitectureͷΑ͏ʹςετۦಈΛલఏͱͨ͠ઃܭಘͯͯ͠ίʔυྔ͕૿େ͕ͪ͠ͳͷͰͦ͜σϝϦοτͷ̍ͭͱͳΔͱࢥΘΕΔ
ɾTDDΛ࣮ફ͍ͯ͠ͳ͍ൺֱతग़དྷΔதڃΤϯδχΞͷཧղ͕ಘΒΕʹ͍͘໘͋Δ (্هͷίʔυྔ͕૿େ͢Δͦͷ̍ͭͱࢥΘΕΔ) ɾςετͷཻΛͲͷఔ·Ͱ୲อ͢Δ͖͔Αٞ͘ʹͳΔɻશέʔεΛΧόʔͰ͖Εཧ͕ͩݱ࣮తʹ͕࣌ؒΓͳ͍͜ͱଟ͘ɺམͱ͠ॴΛܾΊΔͨΊͷஅࡐྉͱͯ͠ઈରతͳ ج४͕ଘࡏ͠ͳ͍ ɾTDDʹ͓͚ΔΫϥεઃܭ (ΞϓϦέʔγϣϯଆͦ͏͕ͩςετίʔυଆͷํ) Λհ͍ͯ͠Δྫগͳ͍ͷͰͦ͜ͷϕετϓϥΫςΟεΓ͍ͨ TDDະܦݧऀʹςετͷॏཁੑΛΒͳ͍ਓʹॏཁੑɺϝϦοτΛઆ໌͢Δɺ࣮ײͯ͠Β͏ͷ͕ࠔ ࠓ৽نࣄۀΛ͍ͬͯΔͨΊɺ࡞Γ͠ϒϥογϡΞοϓͷաఔͰςετͷҙ͕ٛͳ͘ͳͬͨΓᐫʹͳΔ͜ͱଟ͍ͷͰɺΊͯ͠·͍·ͨ͠ɻ ͪΐͬͱ໘ɻ ༷͕໌֬ʹ༩͑ΒΕ͓ͯΒͣɺͨͱ͑ίϯϙʔωϯτͷڥքͰͷ༷ዞҙతʹܾΊΒΕΔ߹ɺઌʹૈ࣮͘͢Δํ͕ΑΓదͳ༷͓ΑͼઃܭΛܾఆͰ͖ΔΑ͏ʹࢥͬͨɻTDDΛݪ ཧతʹద༻͠Α͏ͱ͢Δͱɺ༷ → ઃܭͱ͍͏ྲྀΕ͕Ұํʹա͗Δؾ͕͢Δɻ·ͨɺΫϥΠΞϯτΞϓϦͷΑ͏ʹϏϧυ͓Αͼςετʹ10୯ҐͰ͕͔͔࣌ؒΓɺ༷͕͜Ζ͜ΖมΘΔ։ ൃʹ͓͍ͯ͋·ΓTDD͙ͦΘͳ͍Α͏ʹײͨ͡ɻ ήʔϜΛ։ൃ͢Δ͏͑ͰTDDʹ͍͍ͯΔɺͦ͏Ͱͳ͍͕ଘࡏ͢ΔͷͰѻ͍͕͍͠ɻ Ͳ͏ͯ͠ೲظ͕ഭΔͱ㚽ΖʹͳΔɻ ΓؾͰͳ͍ਓͷࣄͷύϑΥʔϚϯε͕ۃʹԼ͕Δ߹͕͋Δɻ ಛʹࢥ͍͔ͭͳ͍Ͱ͢ ςετέʔεΛա৴ͯ͠όά͕ൃݟͰ͖ͳ͍ test codeͷཧίετ ֎෦αʔϏεͷґଘόϦόϦͳͷίϯτϩʔϥͳͲ্ҐͷϨΠϠʔͰ͏·͍͔͘ͳ͍ ༷͕ᐆດͳதͰͱΓ͋͑ͣίʔυΛॻ͖ग़͢ͱ͍͏͜ͱ͕Ͱ͖ͳ͍ɻͦͷ߹݁ہޙ͔ΒςετΛॻ͍ͯTest DrivenʹͰ͖ͳ͔ͬͨΓ͢Δɻ ຊʹςετ͚͔ͩΒॻ͖࢝ΊΔͷ͍͠ & ޮ͕ѱ͍ͱࢥ͏ طଘͷίʔυϕʔεʹςετίʔυ͕͍ͬͯͳ͍ͱɺςετΛಋೖ͢Δ·Ͱʹ͕͔͔࣌ؒΔ
(c) mixi, Inc,
(c) mixi, Inc, ςετݚमΛड͚ͨ৽ଔ͚Ξϯέʔτ • ճ14 • ݚमΛड͚ΔલͷTDDʹ͍ͭͯ (͍͔ͬͯͨɺΒͳ͍͔ͳͲ) •
ݚमޙɺଐઌݸਓͰͷ։ൃͰTDDΛ࣮ફ͍ͯ͠·͔͢ • TDDͷ࣮ફ͍ͬͯΔ or ͍ͬͯͳ͍ཧ༝ͳΜͰ͔͢ʁ
(c) mixi, Inc,
(c) mixi, Inc, TDDͷ࣮ફ͍ͬͯΔ or ͍ͬͯͳ͍ཧ༝ͳΜͰ͔͢ʁ ͍··Ͱͷίʔυʹςετॻ͔Ε͍ͯΔ͠ɼTDDշײ͕͋Δ͔Β ݱঢ়ͷϓϩμΫτʹςετΛಋೖ͢Δ͜ͱͷ࡞ۀίετ͕ߴ͍, ৽نͰ࡞͢Δ߹ςετΛॻ͘ ςετΛॻ͘͜ͱͰࠓ͔Βॻ͘ίʔυͷ༷ʹ͍ͭͯͷཧղ͕ਂ·Δɻ
ςετΛॻͨ͘ΊʹϝιουͷΠϯλʔϑΣʔεΛܾΊΔඞཁ͕͋ΔͷͰ៉ྷͳίʔυ͕ॻ͚ΔΑ͏ʹͳΔؾ͕͢Δɻ TDDͷਖ਼ղ͕Θ͔Βͳ͍ ݁ہTDD͍࣮͢͠Λॻ͍ͯɺςετ௨࣮ͬͯͰ͖͚ͨͲɺͦͷ͍͍ؔ͢ͷ͔ʁͱ͍͏ͷʹؕͬͨͷͰɻ ͋ͱUnityͰςετॻ͍ͯࢥͬͨͷϑϨʔϜϫʔΫଆͰ༻ҙͯ͠ΔΫϥεΛςετͰnew()͢Δํ๏͕Θ͔Βͳͯ͘ɺ݁ہ࣮ͷํॻ͖͑Δ݁ՌʹͳͬͨΓɻ ςετ͕͍ͷͰશͳςετۦಈΛΔؾ͕ى͖ͳ͍(bug fix ͷ࣌ TDD ͢Δ͚Ͳ) ࠷ॳ͔Βશମͷ࣮ײ͕(ະख़Ώ͑ʹ)ݟ͍͑ͯͳ͍ͷͰ࠷ॳʹςετॻ͜͏ͱࢥ͑ͳ͍ ػցֶशपΓΛ৮͓ͬͯΓɺςετΛॻ͘ͷ͕͍͠ ςετࣗମྲྀੴʹॻ͖·͕͢ɺςετϑΝʔετͰॻ͍͍ͯΔΘ͚Ͱͳ͍Ͱ͢ɻ ΄ͱΜͲ৮ͬͨ͜ͱ͕ͳ͍ݴޠ&&৮ͬͨ͜ͱ͕ͳ͍ϑϨʔϜϫʔΫ&&Α͘Βͳ͍ϓϩμΫτ…ͷΑ͏ͳঢ়گͰɺ͍͖ͳΓςετ͔Βॻ͘ͷ͍͠ͳͱײ͡ ͍ͯΔͨΊɺTDDΛ࣮ફͰ͖͍ͯͳ͍ͷ͕ݱঢ়Ͱ͢ɻ ϓϩμΫτʹςετίʔυ͕͍ͬͯͳ͍ ༷มߋϦϑΝΫλϦϯάͳͲͷࡍʹςετ͕ແ͍ͱཱͪߦ͔ͳ͍ͱ͔ɺTDDΛߦ͏จԽΛ࡞͓͍ͬͯͯϨϏϡʔίετΛԼ͛Δͱ͔ʢཁ݅ɾ༷ʹରͯ͠ς ετΛϨϏϡʔͯ͋͠Δఔ࣮ํͷϨϏϡʔʹͳΔʣ Unity։ൃͰςετΛॻ͖ͮΒ͍(ࢼͯ͠ͳ͍͚ͲPlayModeTestͱ͍͏ͷ͕͋ΔΒ͍͔͠Βݴ͍༁͔)ɻ Viewͱؔ͠ͳ͍෦ɾΓ͚͍ͯΔ෦ςετ͕͋Δ(ςετۦಈͰͳ͘ɺอकͷత͕ڧ͍) ָ͍͔͠Β͍ͬͯΔ ༷Λ໌֬ʹͰ͖Δ͔Β