Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
I love TDD.
Search
Dassimen
September 04, 2019
Programming
2
810
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
35
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
750
TDD supports us all the time.
anchorcable
0
350
Other Decks in Programming
See All in Programming
『実践MLOps』から学ぶ DevOps for ML
nsakki55
2
550
DSPy Meetup Tokyo #1 - はじめてのDSPy
masahiro_nishimi
1
150
20 years of Symfony, what's next?
fabpot
2
310
新卒エンジニアのプルリクエスト with AI駆動
fukunaga2025
0
140
「コードは上から下へ読むのが一番」と思った時に、思い出してほしい話
panda728
PRO
1
1.2k
AIコーディングエージェント(Gemini)
kondai24
0
150
【CA.ai #3】Google ADKを活用したAI Agent開発と運用知見
harappa80
0
260
開発に寄りそう自動テストの実現
goyoki
1
350
AI時代もSEOを頑張っている話
shirahama_x
0
230
Microservices Platforms: When Team Topologies Meets Microservices Patterns
cer
PRO
1
910
C-Shared Buildで突破するAI Agent バックテストの壁
po3rin
0
180
「文字列→日付」の落とし穴 〜Ruby Date.parseの意外な挙動〜
sg4k0
0
360
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
Raft: Consensus for Rubyists
vanstee
140
7.2k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
380
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
54k
Fireside Chat
paigeccino
41
3.7k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
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 (私の書いた記事です...内容が一部重複しています)