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
When Platform Engineering Meets GenAI
sucitw
0
150
徹底討論!ECS vs EKS!
daitak
3
1.2k
秘密度ラベル初心者が第1歩でつまづかないための「設計・運用」ポイント
seafay
PRO
1
420
ロボティクスの技術 / Robotics Technology
ks91
PRO
0
120
インシデントレスポンス演習 I / Incident Response Exercise I
ks91
PRO
0
110
白金鉱業Meetup_Vol.24_「AIエージェントは分けるほど良い」は本当か? / Is it true that “the more you divide AI agents, the better”?
brainpadpr
1
430
ACE-Step-1.5で見る 音楽生成AIのしくみと“破綻だけ直す”Retake機能の開発【zennfes spring 2026 登壇資料】
personabb
1
550
【Cyber-sec+】経営層を"動かす"ための考え方
hssh2_bin
0
200
【2026年版】 ベクトル検索とEmbedding最前線
mocobeta
23
7k
Claude Codeをどのように キャッチアップしているか
oikon48
13
8.7k
AIのReact習熟度を測る
uhyo
2
660
AIが自律的に回る開発ループを設計してチーム開発に組み込む
nekorush14
0
110
Featured
See All Featured
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.6k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
320
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
sira's awesome portfolio website redesign presentation
elsirapls
0
280
GitHub's CSS Performance
jonrohan
1033
470k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
56k
Ethics towards AI in product and experience design
skipperchong
2
310
Unsuck your backbone
ammeep
672
58k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
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ͱؔ͠ͳ͍෦ɾΓ͚͍ͯΔ෦ςετ͕͋Δ(ςετۦಈͰͳ͘ɺอकͷత͕ڧ͍) ָ͍͔͠Β͍ͬͯΔ ༷Λ໌֬ʹͰ͖Δ͔Β