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
42
Trying AWS Aurora Serverless.
anchorcable
0
230
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
760
TDD supports us all the time.
anchorcable
0
350
Other Decks in Programming
See All in Programming
CSC307 Lecture 03
javiergs
PRO
1
490
例外処理とどう使い分ける?Result型を使ったエラー設計 #burikaigi
kajitack
16
6k
15年続くIoTサービスのSREエンジニアが挑む分散トレーシング導入
melonps
2
170
Basic Architectures
denyspoltorak
0
660
AIエージェントのキホンから学ぶ「エージェンティックコーディング」実践入門
masahiro_nishimi
3
260
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
3
160
メルカリのリーダビリティチームが取り組む、AI時代のスケーラブルな品質文化
cloverrose
2
510
コマンドとリード間の連携に対する脅威分析フレームワーク
pandayumi
1
440
TerraformとStrands AgentsでAmazon Bedrock AgentCoreのSSO認証付きエージェントを量産しよう!
neruneruo
4
2.7k
CSC307 Lecture 02
javiergs
PRO
1
770
AIエージェント、”どう作るか”で差は出るか? / AI Agents: Does the "How" Make a Difference?
rkaga
4
2k
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
230
Featured
See All Featured
[SF Ruby Conf 2025] Rails X
palkan
0
740
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Paper Plane (Part 1)
katiecoart
PRO
0
4k
What does AI have to do with Human Rights?
axbom
PRO
0
2k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
Odyssey Design
rkendrick25
PRO
1
490
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
63
Being A Developer After 40
akosma
91
590k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
120
The Cost Of JavaScript in 2023
addyosmani
55
9.5k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
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は堅実な進捗が出る
ご清聴ありがとうございました