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
I love TDD.
Search
Dassimen
September 04, 2019
Programming
2
800
I love TDD.
こちらのイベントで発表した資料です
https://engineers.connpass.com/event/141228/
Dassimen
September 04, 2019
Tweet
Share
More Decks by Dassimen
See All by Dassimen
Write code with "Test First"
anchorcable
0
31
Trying AWS Aurora Serverless.
anchorcable
0
220
Dialogue for Design
anchorcable
1
310
How to manage a good work environment
anchorcable
0
110
TDD is not slowly.
anchorcable
1
570
3日坊主でも勉強したい
anchorcable
5
5.7k
Design It! is good for architect.
anchorcable
0
130
今だからこそ分かる報連相 / How to do Hou/Ren/Sou!
anchorcable
0
730
TDD supports us all the time.
anchorcable
0
340
Other Decks in Programming
See All in Programming
CI_CD「健康診断」のススメ。現場でのボトルネック特定から、健康診断を通じた組織的な改善手法
teamlab
PRO
0
200
ポスターセッション: 「まっすぐ行って、右!」って言ってラズパイカーを動かしたい 〜生成AI × Raspberry Pi Pico × Gradioの試作メモ〜
komofr
0
1.2k
Web Components で実現する Hotwire とフロントエンドフレームワークの橋渡し / Bridging with Web Components
da1chi
3
2k
『毎日の移動』を支えるGoバックエンド内製開発
yutautsugi
2
230
XP, Testing and ninja testing ZOZ5
m_seki
3
600
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
210
Web フロントエンドエンジニアに開かれる AI Agent プロダクト開発 - Vercel AI SDK を観察して AI Agent と仲良くなろう! #FEC余熱NIGHT
izumin5210
3
490
After go func(): Goroutines Through a Beginner’s Eye
97vaibhav
0
350
高度なUI/UXこそHotwireで作ろう Kaigi on Rails 2025
naofumi
4
3.8k
Building, Deploying, and Monitoring Ruby Web Applications with Falcon (Kaigi on Rails 2025)
ioquatix
4
1.9k
CSC305 Lecture 02
javiergs
PRO
1
270
Go言語の特性を活かした公式MCP SDKの設計
hond0413
1
230
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
900
How to Think Like a Performance Engineer
csswizardry
27
2k
Typedesign – Prime Four
hannesfritz
42
2.8k
Testing 201, or: Great Expectations
jmmastey
45
7.7k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.6k
BBQ
matthewcrist
89
9.8k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
It's Worth the Effort
3n
187
28k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
How to Ace a Technical Interview
jacobian
280
24k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Transcript
テスト駆動開発はいいぞ。 September 4, 2019 | #engineers_lt #残暑に負けるな!自由研究LT大会 明日からやれる、現在も未来も支える開発手法 脱脂綿 (
@anchor_cable )
#engineers_lt 2 About Me 脱脂綿 ( @anchor_cable ) 東京都内に住む脱脂綿(=Twitter名)系エンジニア •
株式会社ゆめみ ◦ サーバーサイドエンジニア • テスト駆動開発歴2ヶ月
#engineers_lt 3 テスト駆動開発とは テスト駆動開発 (てすとくどうかいはつ、test-driven development; TDD) とは、プログラム開発手法の一種 で、プログラムに必要な各機能について、最初にテス トを書き(これをテストファーストと言う)、そのテ
ストが動作する必要最低限な実装をとりあえず行った 後、コードを洗練させる、という短い工程を繰り返す スタイルである。 Wikipedia より引用
4 アジェンダ #engineers_lt TDDによる私の変化 TDDがもたらす恩恵 TDDの簡単な説明 1 2 3
TDDの簡単な説明 1
#engineers_lt 6 TDDの目指す所:動く綺麗なコード 動かない 動く 綺 麗 汚 い
#engineers_lt 7 TDDの流れ Red Green Refactor
#engineers_lt 8 TDDの流れ 動かない 動く 綺 麗 汚 い ①Red:
動作しないテストを書く ②Green: テストを通すコードを書く ③Refactor: 動きを変えない事をテストしながら 安心してリファクタできる ④次のテストコードを書く
#engineers_lt 9 TDDの流れ 動かない 動く 綺 麗 汚 い ①Red:
動作しないテストを書く ②Green: テストを通すコードを書く ③Refactor: 動きを変えない事をテストしながら 安心してリファクタできる ④次のテストコードを書く
#engineers_lt 10 TDDの流れ 動かない 動く 綺 麗 汚 い ①Red:
動作しないテストを書く ②Green: テストを通すコードを書く ③Refactor: 動きを変えない事をテストしながら 安心してリファクタできる ④次のテストコードを書く
#engineers_lt 11 TDDの流れ 動かない 動く 綺 麗 汚 い ①Red:
動作しないテストを書く ②Green: テストを通すコードを書く ③Refactor: 動きを変えない事をテストしながら 安心してリファクタできる ④次のテストコードを書く
#engineers_lt 12 TDDの流れ 動かない 動く 綺 麗 汚 い ①Red:
動作しないテストを書く ②Green: テストを通すコードを書く ③Refactor: 動きを変えない事をテストしながら 安心してリファクタできる ④次のテストコードを書く
#engineers_lt 13 TDDの流れサンプル(資料のみ) ex.FizzBuzz 1. 作ろうとしているコードからToDoリストを作る 「1を渡されたら1を返す」 「3を渡されたらFizzを返す」.... 2. ToDoリストの中の1つを選び、これを満たすテストコードを書く
assertEqual(1,judgeFizzBuzz(1)) 3. テストコードの失敗を確認する(レッド) 4. テストコードを満たすプロダクションコードを書く(グリーン) return 1; 5. コードの重複を排除したり、綺麗にしたりする(リファクタリング) ToDoの粒度は最初は細かくした方 が良いが、確信を持っている部分に 関してはまとめても良い。
TDDによる私の変化 2
#engineers_lt 15 TDDでコードを書き始めたことによる変化
#engineers_lt 16 TDDを知るまでの実装 一発で目標に届かせようとする
#engineers_lt 17 TDDによる実装 堅実に目標に向かって進む
#engineers_lt 18 TDDはあくまで手段 一発で到達する武器があるならOK
#engineers_lt 19 既に武器がある人向け:歩幅の調節 目的のコードにたどり着くためのTDD以外のスマートな方法を知っていて何の不安も無いなら、 テストは不要。一抹の不安がある部分にだけテストを書けば良い。 何をテストすべきか? → 「不安が退屈に変わるまで」(「テスト駆動開発」第32章) 武器と併用して確認しながら進める
TDDがもたらす恩恵 3
#engineers_lt 21 TDDによる開発が一段落すると残るもの 「動作する綺麗なコード」と「動作を担保するテストコード」 手動テストは、同じコードに手を加えた時に再度行わなければならない テストコードはチームの資産となり、以後修正やリファクタをする時の支えになる ↓ プロダクションコードが「動作する綺麗なコード」であり続ける
#engineers_lt 22 TDDが目指すもの 私の目標は、プロジェクトが1年経っても開始直後の ようにキラキラした目でいられるようにすることだ。 TDDならそれができると考えている。 Kent Beck. テスト駆動開発 (Japanese
Edition) 第32章 TDDを身につける より引用
23 まとめ #engineers_lt • TDDによる変化:小さなステップで確実に進める • TDDの恩恵:動く綺麗なコードが維持される • TDDの流れ:Red→Green→Refactor
ご清聴ありがとうございました 興味を持ったら明日からやってみよう!
#engineers_lt 25 Appendix 書籍:テスト駆動開発 Kent Beck (著), 和田 卓人 (翻訳) https://www.amazon.co.jp/dp/4274217884/ref=cm_sw_r_tw_dp_U_x_BWLBDb7XS8
DYV (特に付録Cがオススメです!) Qiita:初心者プログラマーの僕が、テスト駆動開発を愛する5つの理由 https://qiita.com/anchor-cable/items/4b7b73bc1a2163ded6b6 (私の書いた記事です...内容が一部重複しています)