Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
What you need to start TDD.
Search
Dassimen
September 25, 2019
Programming
140
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
What you need to start TDD.
Dassimen
September 25, 2019
Transcript
24 slides
テスト駆動開発を実践しよう 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は堅実な進捗が出る
ご清聴ありがとうございました
More Decks by Dassimen
See All by Dassimen
Write code with "Test First"
anchorcable
0
77
Trying AWS Aurora Serverless.
anchorcable
0
260
Dialogue for Design
anchorcable
1
350
How to manage a good work environment
anchorcable
0
150
TDD is not slowly.
anchorcable
1
670
3日坊主でも勉強したい
anchorcable
5
6.1k
Design It! is good for architect.
anchorcable
0
170
今だからこそ分かる報連相 / How to do Hou/Ren/Sou!
anchorcable
0
820
TDD supports us all the time.
anchorcable
0
410
Other Decks in Programming
See All in Programming
LLM 101
dalinaum
0
490
Zero-Tap Sign-In対応、結局何をすればいいの?
mitohato14
0
2.1k
AIが実装を担う時代の「技術設計」と「チームマネジメント」
kamina_zzz
2
260
Materialが消えた日 〜真っ白なFlutterキャンバスにRenderObjectで絵を描く〜
umigishiaoi
0
160
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
4
3.9k
Crash Auto Pipelines
veronikapj
1
410
まずはコードより業務と向き合う:テーブル解体のためにPdMを呼んだ話
sakawe_ee
0
230
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
4
4.4k
Spec-driven Development with AI
simas
PRO
0
2.3k
DroidKnights 2026 Android A2UI Jetpack Compose 기반의 안전한 AI UI 렌더링 - 박제창
itsmedreamwalker
1
230
baseline으로 마이그레이션, 리팩토링 안전하게 맡기기
fornewid
1
980
エラーチャンネルのボールを拾い続けて鍛えるエンジニアの地力 / phpcon-niigata2026
meihei3
1
140
Featured
See All Featured
Designing for Timeless Needs
cassininazir
1
560
Docker and Python
trallard
47
4.3k
The untapped power of vector embeddings
frankvandijk
2
2k
Building an army of robots
kneath
307
47k
Automating Front-end Workflow
addyosmani
1370
210k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
4
4.4k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Making the Leap to Tech Lead
cromwellryan
135
10k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
2
450
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
490
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.7k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.6k