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
Dassimen
September 04, 2019
Programming
2
780
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
17
Trying AWS Aurora Serverless.
anchorcable
0
200
Dialogue for Design
anchorcable
1
280
How to manage a good work environment
anchorcable
0
99
TDD is not slowly.
anchorcable
1
510
3日坊主でも勉強したい
anchorcable
5
5.4k
Design It! is good for architect.
anchorcable
0
110
今だからこそ分かる報連相 / How to do Hou/Ren/Sou!
anchorcable
0
640
TDD supports us all the time.
anchorcable
0
300
Other Decks in Programming
See All in Programming
Generative AI Use Cases JP (略称:GenU)奮闘記
hideg
1
300
ふかぼれ!CSSセレクターモジュール / Fukabore! CSS Selectors Module
petamoriken
0
150
PHP でアセンブリ言語のように書く技術
memory1994
PRO
1
170
Creating a Free Video Ad Network on the Edge
mizoguchicoji
0
120
Better Code Design in PHP
afilina
PRO
0
130
距離関数を極める! / SESSIONS 2024
gam0022
0
290
3 Effective Rules for Using Signals in Angular
manfredsteyer
PRO
0
100
RubyLSPのマルチバイト文字対応
notfounds
0
120
よくできたテンプレート言語として TypeScript + JSX を利用する試み / Using TypeScript + JSX outside of Web Frontend #TSKaigiKansai
izumin5210
6
1.8k
Webの技術スタックで マルチプラットフォームアプリ開発を可能にするElixirDesktopの紹介
thehaigo
2
1k
Streams APIとTCPフロー制御 / Web Streams API and TCP flow control
tasshi
2
350
TypeScriptでライブラリとの依存を限定的にする方法
tutinoko
3
700
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
Docker and Python
trallard
40
3.1k
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
Producing Creativity
orderedlist
PRO
341
39k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Intergalactic Javascript Robots from Outer Space
tanoku
269
27k
Building Adaptive Systems
keathley
38
2.3k
The Language of Interfaces
destraynor
154
24k
Ruby is Unlike a Banana
tanoku
97
11k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
900
GitHub's CSS Performance
jonrohan
1030
460k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
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 (私の書いた記事です...内容が一部重複しています)