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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Dassimen
September 04, 2019
Programming
820
2
Share
I love TDD.
こちらのイベントで発表した資料です
https://engineers.connpass.com/event/141228/
Dassimen
September 04, 2019
More Decks by Dassimen
See All by Dassimen
Write code with "Test First"
anchorcable
0
60
Trying AWS Aurora Serverless.
anchorcable
0
230
Dialogue for Design
anchorcable
1
330
How to manage a good work environment
anchorcable
0
120
TDD is not slowly.
anchorcable
1
590
3日坊主でも勉強したい
anchorcable
5
5.9k
Design It! is good for architect.
anchorcable
0
150
今だからこそ分かる報連相 / How to do Hou/Ren/Sou!
anchorcable
0
780
TDD supports us all the time.
anchorcable
0
360
Other Decks in Programming
See All in Programming
Java 21/25 Virtual Threads 소개
debop
0
340
瑠璃の宝石に学ぶ技術の声の聴き方 / 【劇場版】アニメから得た学びを発表会2026 #エンジニアニメ
mazrean
0
220
How Swift's Type System Guides AI Agents
koher
0
200
「接続」—パフォーマンスチューニングの最後の一手 〜点と点を結ぶ、その一瞬のために〜
kentaroutakeda
5
2.5k
Vibe NLP for Applied NLP
inesmontani
PRO
0
240
PHP で mp3 プレイヤーを実装しよう
m3m0r7
PRO
0
230
GNU Makeの使い方 / How to use GNU Make
kaityo256
PRO
16
5.6k
Radical Imagining - LIFT 2025-2027 Policy Agenda
lift1998
0
250
AWS re:Invent 2025の少し振り返り + DevOps AgentとBacklogを連携させてみた
satoshi256kbyte
3
150
TiDBのアーキテクチャから学ぶ分散システム入門 〜MySQL互換のNewSQLは何を解決するのか〜 / tidb-architecture-study
dznbk
1
110
Codex CLIのSubagentsによる並列API実装 / Parallel API Implementation with Codex CLI Subagents
takatty
2
870
「話せることがない」を乗り越える 〜日常業務から登壇テーマをつくる思考法〜
shoheimitani
4
640
Featured
See All Featured
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.2k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.2k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.9k
Code Review Best Practice
trishagee
74
20k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
110
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
290
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Amusing Abliteration
ianozsvald
1
150
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
270
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 (私の書いた記事です...内容が一部重複しています)