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
34
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
140
今だからこそ分かる報連相 / 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
Ktorで簡単AIアプリケーション
tsukakei
0
120
Leading Effective Engineering Teams in the AI Era
addyosmani
7
670
Developer Joy - The New Paradigm
hollycummins
1
380
When Dependencies Fail: Building Antifragile Applications in a Fragile World
selcukusta
0
110
Blazing Fast UI Development with Compose Hot Reload (Bangladesh KUG, October 2025)
zsmb
2
400
NIKKEI Tech Talk#38
cipepser
0
310
SwiftDataを使って10万件のデータを読み書きする
akidon0000
0
250
Software Architecture
hschwentner
6
2.4k
Migration to Signals, Resource API, and NgRx Signal Store
manfredsteyer
PRO
0
130
他言語経験者が Golangci-lint を最初のコーディングメンターにした話 / How Golangci-lint Became My First Coding Mentor: A Story from a Polyglot Programmer
uma31
0
470
Server Side Kotlin Meetup vol.16: 内部動作を理解して ハイパフォーマンスなサーバサイド Kotlin アプリケーションを書こう
ternbusty
3
260
社会人になっても趣味開発を続けたい! / traPavilion
mazrean
1
110
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
65
7.9k
How GitHub (no longer) Works
holman
315
140k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Fireside Chat
paigeccino
41
3.7k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
2.9k
Mobile First: as difficult as doing things right
swwweet
225
10k
Become a Pro
speakerdeck
PRO
29
5.6k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.2k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Side Projects
sachag
455
43k
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 (私の書いた記事です...内容が一部重複しています)