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
What you need to start TDD.
Search
Dassimen
September 25, 2019
Programming
1
120
What you need to start TDD.
Dassimen
September 25, 2019
Tweet
Share
More Decks by Dassimen
See All by Dassimen
Write code with "Test First"
anchorcable
0
39
Trying AWS Aurora Serverless.
anchorcable
0
220
Dialogue for Design
anchorcable
1
320
How to manage a good work environment
anchorcable
0
120
TDD is not slowly.
anchorcable
1
570
3日坊主でも勉強したい
anchorcable
5
5.8k
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
re:Invent 2025 のイケてるサービスを紹介する
maroon1st
0
160
tparseでgo testの出力を見やすくする
utgwkk
2
330
令和最新版Android Studioで化石デバイス向けアプリを作る
arkw
0
470
メルカリのリーダビリティチームが取り組む、AI時代のスケーラブルな品質文化
cloverrose
2
430
TestingOsaka6_Ozono
o3
0
240
生成AI時代を勝ち抜くエンジニア組織マネジメント
coconala_engineer
0
36k
TerraformとStrands AgentsでAmazon Bedrock AgentCoreのSSO認証付きエージェントを量産しよう!
neruneruo
4
2.2k
まだ間に合う!Claude Code元年をふりかえる
nogu66
5
920
JETLS.jl ─ A New Language Server for Julia
abap34
2
470
Findy AI+の開発、運用におけるMCP活用事例
starfish719
0
2k
Navigation 3: 적응형 UI를 위한 앱 탐색
fornewid
1
510
[AI Engineering Summit Tokyo 2025] LLMは計画業務のゲームチェンジャーか? 最適化業務における活⽤の可能性と限界
terryu16
1
170
Featured
See All Featured
The Limits of Empathy - UXLibs8
cassininazir
1
200
How to build a perfect <img>
jonoalderson
1
4.8k
Practical Orchestrator
shlominoach
190
11k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
860
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
120
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
Faster Mobile Websites
deanohume
310
31k
The browser strikes back
jonoalderson
0
250
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.9k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
54
48k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Transcript
テスト駆動開発を実践しよう September 25, 2019 | #phpstudy たった3つだけ覚えればテスト駆動開発は始められる! 脱脂綿 ( @anchor_cable
)
#phpstudy 2 About Me 鈴木智也 ( 脱脂綿 @anchor_cable ) 東京都内に住む脱脂綿(=Twitter名)系エンジニア
• 株式会社ゆめみ ◦ サーバーサイドエンジニア • テスト駆動開発歴3ヶ月 • 自由に空を飛ぶのが夢 先週パラグライダーに乗って少し叶えました!
#phpstudy 3 テスト駆動開発とは テスト駆動開発 (てすとくどうかいはつ、test-driven development; TDD) とは、プログラム開発手法の一種 で、プログラムに必要な各機能について、最初にテス トを書き(これをテストファーストと言う)、そのテ
ストが動作する必要最低限な実装をとりあえず行った 後、コードを洗練させる、という短い工程を繰り返す スタイルである。 Wikipedia より引用
#phpstudy 4 今回の話のターゲット層 やったことない人向けに、まず何から始めれば良いのかを話します!
#phpstudy 5 アジェンダ TDDの実践に必要な3つのこと 実例を出してみる FizzBuzzの場合 なぜTDDをやるのか 1 2 3 まとめ
4
なぜTDDをやるのか 1
#phpstudy 7 TDDでコードを書き始めたことによる変化
#phpstudy 8 TDDを知るまでの実装 一発で目標に届かせようとする
#phpstudy 9 TDDによる実装 堅実に目標に向かって進む
TDDの実践に必要な3つのこと 2
#phpstudy 11 必要なものはたった3つ • 仮実装 • 三角測量 • ToDoリスト
#phpstudy 12 なぜこれでTDDができるの? TDDは「開発手法」 プログラミングは複雑な問題を小さく分解して解いていく行為 TDDはこれを強力にサポートしてくれる 3つのテクニックに沿って粛々と手を動かすだけ ToDoリスト によってタスクは分解され、 仮実装
によって日本語だったタスクがプログラミング言語となり、 三角測量 によって動作するきれいなコードへ辿り着く
#phpstudy 13 TDDの考え方 動作するきれいなコードは、偉大なプログラマでもす ぐには書けないことがあるし、普通のプログラマなら なおさらだ(私もそうだ)。ここは分割統治しよう。 最初に「動作する」に取り組み、その後で「きれい な」に取り組む。 Kent Beck.
テスト駆動開発 (Japanese Edition) 第2章 明白な実装 より引用
実例を出してみる FizzBuzzの場合 3
#phpstudy 15 ToDoリストを作る • 1の時1を返す • 3の時Fizzを返す • 4の時4を返す •
5の時Buzzを返す • 6の時Fizzを返す • 10の時Buzz • 15の時FizzBuzzを返す • 30の時FizzBuzzを返す ToDoの粒度は 「テストが書きやすくなるくらいまで」 タスクの全てを網羅できなくても良い
#phpstudy 16 ToDoからテストを書く 「1の時1を返す」テスト 設計をここでやっている ・judgeFizzBuzzメソッドを作ると決める ・1を渡すと1を返すメソッドを作ると決める
#phpstudy 17 想定した理由で失敗する事を確認する テストが失敗するのは当然、 失敗を確認するのが大事 意図した理由で失敗しているか?
#phpstudy 18 仮実装を行う 本当に仮 テストを通すコード ここでは「1を渡されて1を返す」が 満たされれば良い。これでいい。
#phpstudy 19 仮実装でテストを通す 本当に仮 テストは通ることを確認する
#phpstudy 20 三角測量 仮実装では通らないパターンのテストを書く 「3の時はFizzを返す」なら仮実装のままではテストが通らないだろう 失敗する事を確認しましょう
#phpstudy 21 三角測量 ここで考える • 3の時にFizzを返すには、引数を見て分岐が必要そうだ。 • Fizz(文字列)を返すメソッドが、1(数字)を返すのは変だな、1は文字列にしよう ・$inputを定義できた ・返り値を文字列に固定できた
まとめ 4
#phpstudy 23 まとめ • ToDoリスト、仮実装、三角測量についての説明 • FizzBuzzで実例を見てみた • TDDは堅実な進捗が出る
ご清聴ありがとうございました