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
89
My_TDD.pdf
Masafumi Okura
February 11, 2020
Tweet
Share
More Decks by Masafumi Okura
See All by Masafumi Okura
My KaigiEffect at RubyKaigi 2025, part 1
okuramasafumi
1
42
Writing documentation can be fun with plugin system
okuramasafumi
0
190
Alba: Why, How and What's So Interesting
okuramasafumi
0
370
Why did my proposals get rejected?
okuramasafumi
1
680
A suggestion for the future of RDoc
okuramasafumi
1
320
15 JSON serializers for Ruby
okuramasafumi
2
380
Tech Events, Should We See Them from the Outside or the Inside?
okuramasafumi
1
69
Creating gems 101
okuramasafumi
2
140
How NOT to make your DSL terrible
okuramasafumi
0
570
Other Decks in Programming
See All in Programming
20250704_教育事業におけるアジャイルなデータ基盤構築
hanon52_
5
1.1k
Vibe Codingの幻想を超えて-生成AIを現場で使えるようにするまでの泥臭い話.ai
fumiyakume
9
4.1k
NEWT Backend Evolution
xpromx
1
140
dbt民主化とLLMによる開発ブースト ~ AI Readyな分析サイクルを目指して ~
yoshyum
3
1.1k
テスターからテストエンジニアへ ~新米テストエンジニアが歩んだ9ヶ月振り返り~
non0113
2
220
PHP 8.4の新機能「プロパティフック」から学ぶオブジェクト指向設計とリスコフの置換原則
kentaroutakeda
2
1k
Git Sync を超える!OSS で実現する CDK Pull 型デプロイ / Deploying CDK with PipeCD in Pull-style
tkikuc
4
350
型で語るカタ
irof
0
700
可変変数との向き合い方 $$変数名が踊り出す$$ / php conference Variable variables
gunji
0
180
「テストは愚直&&網羅的に書くほどよい」という誤解 / Test Smarter, Not Harder
munetoshi
0
200
おやつのお供はお決まりですか?@WWDC25 Recap -Japan-\(region).swift
shingangan
0
140
効率的な開発手段として VRTを活用する
ishkawa
0
160
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.5k
How to train your dragon (web standard)
notwaldorf
96
6.1k
Speed Design
sergeychernyshev
32
1k
Building an army of robots
kneath
306
45k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
50
5.5k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Gamification - CAS2011
davidbonilla
81
5.4k
Practical Orchestrator
shlominoach
189
11k
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ɺΓ·͢