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
My_TDD.pdf
Search
Masafumi Okura
February 11, 2020
Programming
0
95
My_TDD.pdf
Masafumi Okura
February 11, 2020
Tweet
Share
More Decks by Masafumi Okura
See All by Masafumi Okura
Metaprogramming isn't real, it can't hurt you
okuramasafumi
0
140
Developing static sites with Ruby
okuramasafumi
1
400
Why doesn't Ruby have Boolean class - final version
okuramasafumi
0
380
Reading Rails 1.0 Source Code
okuramasafumi
0
350
RDoc meets YARD
okuramasafumi
4
220
Why doesn't Ruby have Boolean class?
okuramasafumi
0
44
My KaigiEffect at RubyKaigi 2025, part 1
okuramasafumi
1
100
Writing documentation can be fun with plugin system
okuramasafumi
0
260
Alba: Why, How and What's So Interesting
okuramasafumi
0
490
Other Decks in Programming
See All in Programming
Fundamentals of Software Engineering In the Age of AI
therealdanvega
2
280
米国のサイバーセキュリティタイムラインと見る Goの暗号パッケージの進化
tomtwinkle
2
630
Goの型安全性で実現する複数プロダクトの権限管理
ishikawa_pro
2
500
Windows on Ryzen and I
seosoft
0
340
Rで始めるML・LLM活用入門
wakamatsu_takumu
0
190
仕様漏れ実装漏れをなくすトレーサビリティAI基盤のご紹介
orgachem
PRO
7
2.8k
今からFlash開発できるわけないじゃん、ムリムリ! (※ムリじゃなかった!?)
arkw
0
130
DevinとClaude Code、SREの現場で使い倒してみた件
karia
1
1.1k
Codex の「自走力」を高める
yorifuji
0
1.3k
20260313 - Grafana & Friends Taipei #1 - Kubernetes v1.36 的開發雜記:那些困在 Alpha 加護病房太久的 Metrics
tico88612
0
220
それはエンジニアリングの糧である:AI開発のためにAIのOSSを開発する現場より / It serves as fuel for engineering: insights from the field of developing open-source AI for AI development.
nrslib
1
430
Angular-Apps smarter machen mit Gen AI: Lokal und offlinefähig - Hands-on Workshop!
christianliebel
PRO
0
130
Featured
See All Featured
Paper Plane
katiecoart
PRO
0
48k
Ethics towards AI in product and experience design
skipperchong
2
230
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
64
52k
Crafting Experiences
bethany
1
90
Paper Plane (Part 1)
katiecoart
PRO
0
5.7k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.4k
Amusing Abliteration
ianozsvald
0
140
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.2k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Exploring anti-patterns in Rails
aemeredith
2
290
How to Ace a Technical Interview
jacobian
281
24k
Transcript
My TDD Speaker: େխ࢙ Event: େߐށRubyձٞ08 Date: 2020-02-11
ϝλ • εϥΠυຕɿ44ຕ • ൃද࣌ؒɿ20 • σϞɿ༗Γ
okuramasafumi.inspect • ໊લɿେխ࢙ • ॴଐɿϑϦʔϥϯε • ίϛϡχςΟɿGrow.rbओ࠵ɺͦͷଞଟࢀՃ • Rubyྺɿ7 •
झຯɿϓϩάϥϛϯάɺొஃɺᘖᘣɺӳޠ
࣍ 1. My TDD (first part) 2. My gem 3.
My TDD (second part) 4. ࠂ
1. My TDD (first part)
झຯɿϓϩάϥϛϯά
ϓϩάϥϛϯάָ͍͠
Ͱɺଞʹ༠͕ଟ͍
ͦ͜Ͱ…
TDD ➡
TDD ➡ Todan Driven Development
झຯɿొஃ
ࣗͷ࡞ΔιϑτΣΞʹ͍ͭͯൃද͢Δ ͜ͱͰ։ൃʹϓϨογϟʔΛ͔͚Δ
ࠓͷॴͱͯޮՌ͕͋Δ
͜Ε͕ࢲͷTDD
༨ஊɿ ඈߦػ৽װઢͷத࠷ߴͷϓϩάϥϛϯ άڥ
༨ஊͷ༨ஊɿ ࠓطʹ৽װઢʹ1ճͱඈߦػʹ2ճͬ ͍ͯ·͢ɻ͍ͩͿḿΓ·ͨ͠ɻ
͞Βʹ༨ஊɿ ։ൃΛਐΊΔͨΊͷख๏ͱͯ͠ɺTODO͕ ࣌ݶരʹͳΔΑ͏ͳgemΛॻ͍͍ͯΔਓ ͕͍·ͨ͠Ͷʢૉఢʣ
༨ஊऴΘΓ
ࠓ͍͑ͨ͜ͱͦͷұ • ϓϩάϥϛϯάָ͍͠ • ొஃָ͍͠ • Έ߹ΘͤͨΒ࠷ڧͰʁ • ΈΜͳͲΜͲΜొஃͯ͠ͲΜͲΜίʔυॻ͜͏
ͰɺԿΛ࡞͍ͬͯΔΜͰ͔͢ʁ
2. My gem
JSONγϦΞϥΠβΛ࡞͍ͬͯ·͢ɻ
طଘͷJSONγϦΞϥΠβͷ͜ͱ • jbuilderɿ͍ɺDSL݁ߏ͍͠ • ActiveModelSerializersɿϝϯς͞ΕͯΔͷ͔Θ͔Βͳ͍ɺ ෦ߏෳࡶɺ͋·Γ͘ͳ͍ • fast_jsonapiɿ͍͚ͲJSON:APIܗ͔ࣜ͠αϙʔτ͠ͳ͍
γϯϓϧͰɺϝϯς͕؆୯Ͱɺ DSL͕֮͑ͯ͘͢ɺ͍ͦͦ͜͜ɺ JSONγϦΞϥΠβΛ࡞Γ͍ͨʂ
Alba https://github.com/okuramasafumi/alba
0.1.0૬ͷͷ͕Ͱ͖ͨؾ͕͍ͯ͠·͢
ͳͷͰɺϦϦʔε͠·͢
Albaͷػೳʢࠓ࣌ʣ • JSONͷϧʔτΩʔΛઃఆՄೳ • attributesϝιουͰJSONʹؚΊΔଐੑΛෳࢦఆՄೳ • attributeϝιουͰJSONʹؚΊΔଐੑΛϒϩοΫͰࢦఆՄೳ • JSONͷόοΫΤϯυʹOjΛࢦఆՄೳ
ࠓ͍͑ͨ͜ͱͦͷ್ • Alba͍ͬͯ͏gemΛ࡞͍ͬͯ·͢ • ػೳ·ͩશવΓͳ͍͚Ͳɺ͜Ε͔ΒΨγΨγՃ͍ͨ͠ • طଘͷͷʹෆຬ͕͋ΔͳΒ࡞Ε͍͍͡Όͳ͍ • Ճ͖͢ػೳʹ͍ͭͯͷҙݟɺ͓͍ͪͯ͠·͢
ۤ࿑ͨ͠ • ΫϥεϝιουͷDSLͰઃఆͨ͠ใΛΠϯελϯε͔Βࢀর ͢ΔΑ͏ʹ͢ΔΈ • ࣮ޮੑ͕͋Δఔ͋ΔςετΛॻ͘͜ͱ • શମతͳUIͱઃܭ
ςετͱUI
3. My TDD (second part)
طଘͷϥΠϒϥϦʹΛײ͡Δ ≠ ͲΜͳ;͏ʹվળ͢Ε͍͍͔Θ͔Δ
ςετΛॻ͖ͳ͕Β୳͍ͬͯ͘
TDD ➡ Test Driven Development
ࢲͷ࠾༻ͨ͠ํ๏ • ·ͣϢʔεέʔεͷςετΛॻ͘ʢ༷ࡦఆʣ • ͳΜ͔ҧײ͕͋ͬͨΒςετΛॻ͖͢ʢ༷มߋʣ • ςετʹೲಘ͕͍ͬͨΒ࣮͢Δ • ࣮͕ऴΘͬͨΒݸผͷΫϥεͷςετΛޙ͔ΒՃ͢Δʢ࣮ ·ͩॻ͍ͯͳ͍ʣ
ϘτϜΞοϓͰͳ͘τοϓμϯ
͜Ε͕ࢲͷTDD
ࠓ͍͑ͨ͜ͱͦͷࢀ • ༷ͱ͔ɺͲ͏͍͏ΠϯλʔϑΣʔε͕ཧ͔ͳΜͯͦ͏؆୯ ʹΘ͔Βͳ͍ • ϢʔεέʔεΛςετԽͯ͠ɺೲಘߦ͘·Ͱॻ͘ • Ϣχοτςετޙ͚Ͱ͍͍ͷͰ
4. ࠂ
None
https://kaigionrails.org
·ͱΊ • ϓϩάϥϛϯάͱొஃָ͍͠ɺΈ߹ΘͤΔͱͬͱָ͍͠ • Alba͍ͬͯ͏gemɺ࡞ͬͯ·͢ • τοϓμϯͰϢʔεέʔε͔ΒςετΛॻ͘ͱ͍͍͔ • Kaigi on
RailsɺΓ·͢