SlideShare a Scribd company logo
1 of 64
Download to read offline
私のTDDのこころ
あさの ( @uasano )
よろしくお願いします!
自己紹介 仕事の顔
浅野 雄(あさの ゆう)
株式会社 FLECT

→ 積極採用中。ご応募お
待ちしてます!w
IoT関連の案件やってます
10年間在籍した某SIerか
ら2014年9月にJoin
自己紹介 普段の顔
あさの (@uasano)
TDDの始まりは2012年7月20
日のinfo talk #44
アジャイルサムライ横浜
道場 門下生
たまに何かに登壇したり
してます
今日話すこと
AgileSamurai BaseCamp とは
みんなのTDDのこころ
TDDをより深く学ぶために
今日のコンテンツ
AgileSamurai BaseCamp
とは
AgileSamurai BaseCamp
アジャイルサムライを読んで、現場をもっと良
くしたい!と思った弟子たちが
マスター先生・兄弟子達から
明日から実践できる 現場の課題を解消するた
めのヒントを持ち帰る場所
AgileSamurai BaseCamp
現場をもっと良くしたい!と思う方が
同じような想いを持った方と出会って
仲間を作るための場所
AgileSamurai BaseCamp
参加した方が
そこで得た学びを現場に持ち帰って
万策尽きた時に新たな気付きを得る為に戻っ
てってくる場所
みんなのTDDのこころ
みんなのTDD
AgileSamuraiによるTDD
先達たちのTDD
Kent BeckのTDD
t-wada のTDD
わたしのTDD
AgileSamuraiのTDD
なんの為のTDD
日々のコーディングで直面する数々の複雑さに
立ち向かうことができるようになる
素早いフィードバックを得られるので、自分の
進んでいる方向が正しいことを確かめながら着
実に進んでいける
コードベースの保守や修正を容易にすることに
つながっている
いつTDDを使うか
私が「問答無用で実践すべき」だと考えている
アジャイルなソフトウェアエンジニアリングの
プラクティスを紹介していきたい。具体的には
次の4つだ。
ユニットテスト
リファクタリング
テスト駆動開発(TDD)
継続的インテグレーション
ルール
その1: 失敗するテストをひとつ書くまでは、
新しいコードを一切書かない
その2: 「危なっかしい所」をすべてテスト
する
1. Red
2. Green
3. Refactoring
チームがテスト駆動開発
にすぐ馴染まなくても慌
てないでいい。

テスト駆動開発はユニッ
トテストやリファクタリ
ングよりも高度な技術だ。
高度な技術だ!
((((;゚Д゚))))gkbr
先達たちのTDD
先達たちのTDD
Kent BeckのTDD
t-wadaのTDD
Kent BeckのTDD
Kent Beck氏
テスト駆動開発入門の著者
XP(eXtreame Programming) の 考案者
アジャイルソフトウェア開発宣言の起草者の1
人
エリック・ガンマと共にJUnitを開発
なんの為のTDD
「動作するきれいなコード」、ロン・ジェフリー
ズのこの簡潔な言葉は、TDDの目標である。動
作するきれいなコードは、あらゆる理由で価値
がある。
ルール
レッド・グリーン・リファクタリング これが
TDDの信条である
レッド 動作しないテストを少しだけ作成す
る。
グリーン テストをすぐに動作させる
リファクタリング テストを動作させるため
だけに作成された重複をすべて取り除く
ルール2
有機的に設計しなければいけない
自分でテストを作成しなければいけない
開発環境は、小さな変化に対する迅速なビルド
をサポートしなければいけない
テストを容易にするために、極めて高凝集で疎
結合のコンポーネントから構成されるように設
計しなければいけない
一層、難しそう
((((;゚Д゚))))gkbr
t-wadaのTDD
和田 卓人氏
日本におけるTDDのエバンジェリストの一人
プログラマが知るべき97のこと・SQLアンチパ
ターン監訳
power-assert-jsの生みの親
元祖TDDのこころ
http://www.slideshare.net/t_wada/
osh2014-sprit-of-tdd
なんの為のTDD
ルール
少しずつ・一歩ずつ段を小さく
一度に一つずつ対処する
素早く回す
自分が最初のユーザ
黄金の回転
TDDの真の目的
不安の克服
書いたコード・これから書くコードに自信を
持つ
健康の維持
変化に対応するには健康体のチーム・コード
が必要
1人から始められる
テストやTDDはスキルです。つまり
才能ではなく、習得可能です
量は質に転化します
写経!
なんとなく、
希望が見えてきた
わたしのTDD
わたしの中のTDDとは
自動テストからのフィードバックが開発チーム
に対してポジティブに作用している状態
開発者を楽にする為の手段の1つ
設計が良くなるとか
安心して機能追加できるようになるとか
例えばこんなとき
新たに作るprivateメソッドをテストしたくなっ
て、「これは別のクラスのpublicメソッドで
は?」と気付いた
変な修正したらテストが落ちるから、自分がこ
れまで担当してなかった部分も安心して変更で
きるようになった
こういうのは違う
失敗するテストコードが書けなくて、始められ
ません
TDDで開発してるからテストは省略していいよ
ね
仕様変更に対応する為にコードを変えたら、テ
ストが大量に落ちるようになって修正するのが
辛い
失敗するテストコードが書
けなくて、始められません
先にテストを書く事でフィードバックが得られ
るのは確か
いきなりそれができるかは?
先にプロダクトコード書いて、その後でテスト
を書いてもフィードバックは得られる。
そのフィードバックをコードに反映させられた
らいい
できるところから始めていけばいい
TDDで開発してるからテ
ストは省略していいよね
TDDは開発を駆動するための手段であって、品
質を保証するための手段ではない
副次的作用としてバグが減るのは確かだけど…
TDDで使っているテストが品質保証で十分かは
別問題。
コードを変えたらテストが
大量に落ちるようになって、
修正するのが辛い
いわゆる Fragile Test 問題
テストコードに大量の重複があったり
テストコードが「実装のテスト」になってし
テストコードもリファクタリングする。
作りに問題のあるテストでもないよりマシ
テストも動作するきれいなコードに変える
なぜTDDをするのか?
躊躇なくリファクタリングをするため
もう少し詳しく
なぜTDDをするのか?
TDDでコードを書いていると、リファクタリン
グに対する躊躇・不安感がなくなる
リファクタリングへの躊躇がなくなると、未知
の仕様変更を予測した過剰設計が減らせる
要件を満たす最小限の機能を極力少ない規模で
実現できる
それで何が嬉しいの?
変化に追従する速度を維持し続けられる
仕様変更や、市場・競合の動向への対応等
どんな時にTDDを使うの
か
使い捨てないもの
複数人でコードを触るもの
UIなどテストしづらいものは状況によりけり

(大体、やってない)
まとめ
原理主義に走らず、「楽をするため」の手段として使
う
取っ付き易いところから
1つのコードベースを長く・複数人で使う場合は使う旨
みが大きそう
自分が、「何のために」TDDをしたいのかを意識する
TDDをより深く学ぶために
次にすべきこと
TDDBC
TDD Boot Camp
TDDを1日かけてハンズオン形式で学ぶイベント
全国津々浦々で 不定期 に 開催中
今日の講師陣は大体関係者
次回首都圏開催予定は…
未定! (´・ω・`)
Doorkeeperのグループを

要チェック!
https://tddbc.doorkeeper.jp/
次にすべきこと
写経!
テスト駆動開発入門
ケント・ベック
大人の事情により絶版…
今日のコンテンツ
今日のこれからのコンテンツ
は皆さんの投票で決まります
今日のTDDトラック
13:15-

14:00
keynote ← 今ここ
14:00-

14:30
休憩 兼 投票 時間
14:30-

15:00
TDDサイクルを回す
15:00-

15:30 ここ! ここ!
15:30-

16:00 ここ! ここ!
休憩時間にドーナツが配られ
るので、受け取り時に投票し
てください
今日のコンテンツ候補
バグってるWebアプリケーションをTDDで改善
受け入れテストでのTDD
テストコードのリファクタリング(Java)
アジャイルサムライの次に読むべき本
TDDサイクルの実践(チューター有)

※ペアプロ希望の方は希望の言語を教えてくだ
さい
TDDサイクルを回す(JavaでFizzBuzzを)
TDD実践者とのQ&A
ご清聴
ありがとうございました

More Related Content

Viewers also liked

Siklu EH-600TX Brochure JP
Siklu EH-600TX Brochure JPSiklu EH-600TX Brochure JP
Siklu EH-600TX Brochure JPNitta Tetsuya
 
ギガビット無線機 Siklu の製品紹介 2016
ギガビット無線機 Siklu の製品紹介 2016ギガビット無線機 Siklu の製品紹介 2016
ギガビット無線機 Siklu の製品紹介 2016Nitta Tetsuya
 
SeasarCon 2009 White TDD
SeasarCon 2009 White TDDSeasarCon 2009 White TDD
SeasarCon 2009 White TDDTakuto Wada
 
TDD #NagoyaTesting
TDD #NagoyaTestingTDD #NagoyaTesting
TDD #NagoyaTestingkyon mm
 
Windows IoT Core and Robot Arm
Windows IoT Core and Robot ArmWindows IoT Core and Robot Arm
Windows IoT Core and Robot ArmMasuda Tomoaki
 
TDDの自殺 #TDDeX
TDDの自殺 #TDDeXTDDの自殺 #TDDeX
TDDの自殺 #TDDeXkyon mm
 
TDD BootCamp in JJUG CCC - レガシーコード対策編 -
TDD BootCamp in JJUG CCC - レガシーコード対策編 -TDD BootCamp in JJUG CCC - レガシーコード対策編 -
TDD BootCamp in JJUG CCC - レガシーコード対策編 -Shuji Watanabe
 
うそのアジャイル、まことのアジャイル 公開用
うそのアジャイル、まことのアジャイル 公開用うそのアジャイル、まことのアジャイル 公開用
うそのアジャイル、まことのアジャイル 公開用ESM SEC
 
Tddのすゝめ
TddのすゝめTddのすゝめ
Tddのすゝめ将 高野
 
Prophecyを使ったユニットテスト
Prophecyを使ったユニットテスト Prophecyを使ったユニットテスト
Prophecyを使ったユニットテスト Akio Ishida
 
TDD & Pull Request入門
TDD & Pull Request入門TDD & Pull Request入門
TDD & Pull Request入門eiji ienaga
 
PHPのテスト名を日本語にした話
PHPのテスト名を日本語にした話PHPのテスト名を日本語にした話
PHPのテスト名を日本語にした話Norifumi Kawamoto
 
DevLOVE TDD - For Whom the Tests Run
DevLOVE TDD - For Whom the Tests RunDevLOVE TDD - For Whom the Tests Run
DevLOVE TDD - For Whom the Tests RunTakuto Wada
 
Siklu 製品資料 Nov 2016 rev2
Siklu 製品資料 Nov 2016 rev2Siklu 製品資料 Nov 2016 rev2
Siklu 製品資料 Nov 2016 rev2Nitta Tetsuya
 
アジャイルをシミュレーションで理解する
アジャイルをシミュレーションで理解するアジャイルをシミュレーションで理解する
アジャイルをシミュレーションで理解するAkiyah
 

Viewers also liked (20)

Siklu EH-600TX Brochure JP
Siklu EH-600TX Brochure JPSiklu EH-600TX Brochure JP
Siklu EH-600TX Brochure JP
 
Sue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hackSue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hack
 
20140226_TDD
20140226_TDD20140226_TDD
20140226_TDD
 
ギガビット無線機 Siklu の製品紹介 2016
ギガビット無線機 Siklu の製品紹介 2016ギガビット無線機 Siklu の製品紹介 2016
ギガビット無線機 Siklu の製品紹介 2016
 
SeasarCon 2009 White TDD
SeasarCon 2009 White TDDSeasarCon 2009 White TDD
SeasarCon 2009 White TDD
 
TDD #NagoyaTesting
TDD #NagoyaTestingTDD #NagoyaTesting
TDD #NagoyaTesting
 
java-ja TDD 2nd
java-ja TDD 2ndjava-ja TDD 2nd
java-ja TDD 2nd
 
Windows IoT Core and Robot Arm
Windows IoT Core and Robot ArmWindows IoT Core and Robot Arm
Windows IoT Core and Robot Arm
 
TDDの自殺 #TDDeX
TDDの自殺 #TDDeXTDDの自殺 #TDDeX
TDDの自殺 #TDDeX
 
TDD BootCamp in JJUG CCC - レガシーコード対策編 -
TDD BootCamp in JJUG CCC - レガシーコード対策編 -TDD BootCamp in JJUG CCC - レガシーコード対策編 -
TDD BootCamp in JJUG CCC - レガシーコード対策編 -
 
うそのアジャイル、まことのアジャイル 公開用
うそのアジャイル、まことのアジャイル 公開用うそのアジャイル、まことのアジャイル 公開用
うそのアジャイル、まことのアジャイル 公開用
 
Tddのすゝめ
TddのすゝめTddのすゝめ
Tddのすゝめ
 
Prophecyを使ったユニットテスト
Prophecyを使ったユニットテスト Prophecyを使ったユニットテスト
Prophecyを使ったユニットテスト
 
TDDを研ぎ究める
TDDを研ぎ究めるTDDを研ぎ究める
TDDを研ぎ究める
 
TDD & Pull Request入門
TDD & Pull Request入門TDD & Pull Request入門
TDD & Pull Request入門
 
アジャイル開発
アジャイル開発アジャイル開発
アジャイル開発
 
PHPのテスト名を日本語にした話
PHPのテスト名を日本語にした話PHPのテスト名を日本語にした話
PHPのテスト名を日本語にした話
 
DevLOVE TDD - For Whom the Tests Run
DevLOVE TDD - For Whom the Tests RunDevLOVE TDD - For Whom the Tests Run
DevLOVE TDD - For Whom the Tests Run
 
Siklu 製品資料 Nov 2016 rev2
Siklu 製品資料 Nov 2016 rev2Siklu 製品資料 Nov 2016 rev2
Siklu 製品資料 Nov 2016 rev2
 
アジャイルをシミュレーションで理解する
アジャイルをシミュレーションで理解するアジャイルをシミュレーションで理解する
アジャイルをシミュレーションで理解する
 

Similar to my-spirit-of-tdd

「ゼロから構築するDev rel体制」20160316@devrelmeetup
「ゼロから構築するDev rel体制」20160316@devrelmeetup「ゼロから構築するDev rel体制」20160316@devrelmeetup
「ゼロから構築するDev rel体制」20160316@devrelmeetupYusaku Kinoshita
 
第4回Substance勉強会
第4回Substance勉強会第4回Substance勉強会
第4回Substance勉強会Keita Tamura
 
30分でできる!「アウェイ」でTOCfEを広めるための「追体験アプローチ」_2014tTOCfEシンポジウム_06
30分でできる!「アウェイ」でTOCfEを広めるための「追体験アプローチ」_2014tTOCfEシンポジウム_0630分でできる!「アウェイ」でTOCfEを広めるための「追体験アプローチ」_2014tTOCfEシンポジウム_06
30分でできる!「アウェイ」でTOCfEを広めるための「追体験アプローチ」_2014tTOCfEシンポジウム_06TOC for Education, Japan Branch
 
レガシーコードでTDD力を高めよう #agilesamurai
レガシーコードでTDD力を高めよう #agilesamuraiレガシーコードでTDD力を高めよう #agilesamurai
レガシーコードでTDD力を高めよう #agilesamuraiYoutarou TAKAHASHI
 
バラバラの同僚を社内勉強会でつなげよう
バラバラの同僚を社内勉強会でつなげようバラバラの同僚を社内勉強会でつなげよう
バラバラの同僚を社内勉強会でつなげようMasakatsu Sugii
 
東北で3年間クラウドのフルマネージドサービスをやってきて感じたこと
東北で3年間クラウドのフルマネージドサービスをやってきて感じたこと東北で3年間クラウドのフルマネージドサービスをやってきて感じたこと
東北で3年間クラウドのフルマネージドサービスをやってきて感じたことTakuya Tachibana
 
May the team be with you(episode2)
May the team be with you(episode2)May the team be with you(episode2)
May the team be with you(episode2)Koutarou Ishizaki
 
クラウド移住で地方に住むということ
クラウド移住で地方に住むということクラウド移住で地方に住むということ
クラウド移住で地方に住むということTakehito Tanabe
 
Agile Samurai Dojo Gathering
Agile Samurai Dojo GatheringAgile Samurai Dojo Gathering
Agile Samurai Dojo Gatheringirasally omuko
 
クラウド移住体験記
クラウド移住体験記クラウド移住体験記
クラウド移住体験記Takehito Tanabe
 
10/12 WordBench神戸 WordPressの学習方法
10/12 WordBench神戸 WordPressの学習方法10/12 WordBench神戸 WordPressの学習方法
10/12 WordBench神戸 WordPressの学習方法Yoshiko Sarakai
 
受託開発だけだといずれケツカッチンになってしまうのでいっちょサービスでもやってみようかと思ってTryしてみた上期の報告 #nds42
受託開発だけだといずれケツカッチンになってしまうのでいっちょサービスでもやってみようかと思ってTryしてみた上期の報告 #nds42受託開発だけだといずれケツカッチンになってしまうのでいっちょサービスでもやってみようかと思ってTryしてみた上期の報告 #nds42
受託開発だけだといずれケツカッチンになってしまうのでいっちょサービスでもやってみようかと思ってTryしてみた上期の報告 #nds42Kazumune Katagiri
 
教えてもらったノウハウを試したけど稼げない
教えてもらったノウハウを試したけど稼げない教えてもらったノウハウを試したけど稼げない
教えてもらったノウハウを試したけど稼げないさい ぞう
 
自分のチームをどう作る?
自分のチームをどう作る?自分のチームをどう作る?
自分のチームをどう作る?Masakatsu Sugii
 
No018-01-suc3rum-20100929
No018-01-suc3rum-20100929No018-01-suc3rum-20100929
No018-01-suc3rum-20100929Sukusuku Scrum
 
アジャイルサムライ読書会inFAN道場最終回Closing
アジャイルサムライ読書会inFAN道場最終回Closingアジャイルサムライ読書会inFAN道場最終回Closing
アジャイルサムライ読書会inFAN道場最終回ClosingTaisuke Shiratori
 
ただのエンジニアチームの改善を謀ったら。。。
ただのエンジニアチームの改善を謀ったら。。。ただのエンジニアチームの改善を謀ったら。。。
ただのエンジニアチームの改善を謀ったら。。。Shoko Kayano
 
20121124 学生セミナー「基礎からわかる! IT業界とプログラミング」
20121124 学生セミナー「基礎からわかる! IT業界とプログラミング」20121124 学生セミナー「基礎からわかる! IT業界とプログラミング」
20121124 学生セミナー「基礎からわかる! IT業界とプログラミング」Takashi Uemura
 
エンジニアじゃなくても 3Dゲームが3時間できた話。 ~three.jsで3D糸通しをつくってみた~
エンジニアじゃなくても 3Dゲームが3時間できた話。 ~three.jsで3D糸通しをつくってみた~エンジニアじゃなくても 3Dゲームが3時間できた話。 ~three.jsで3D糸通しをつくってみた~
エンジニアじゃなくても 3Dゲームが3時間できた話。 ~three.jsで3D糸通しをつくってみた~Yusaku Kinoshita
 
Josug advent calender20121219
Josug advent calender20121219Josug advent calender20121219
Josug advent calender20121219Ayumi Oka
 

Similar to my-spirit-of-tdd (20)

「ゼロから構築するDev rel体制」20160316@devrelmeetup
「ゼロから構築するDev rel体制」20160316@devrelmeetup「ゼロから構築するDev rel体制」20160316@devrelmeetup
「ゼロから構築するDev rel体制」20160316@devrelmeetup
 
第4回Substance勉強会
第4回Substance勉強会第4回Substance勉強会
第4回Substance勉強会
 
30分でできる!「アウェイ」でTOCfEを広めるための「追体験アプローチ」_2014tTOCfEシンポジウム_06
30分でできる!「アウェイ」でTOCfEを広めるための「追体験アプローチ」_2014tTOCfEシンポジウム_0630分でできる!「アウェイ」でTOCfEを広めるための「追体験アプローチ」_2014tTOCfEシンポジウム_06
30分でできる!「アウェイ」でTOCfEを広めるための「追体験アプローチ」_2014tTOCfEシンポジウム_06
 
レガシーコードでTDD力を高めよう #agilesamurai
レガシーコードでTDD力を高めよう #agilesamuraiレガシーコードでTDD力を高めよう #agilesamurai
レガシーコードでTDD力を高めよう #agilesamurai
 
バラバラの同僚を社内勉強会でつなげよう
バラバラの同僚を社内勉強会でつなげようバラバラの同僚を社内勉強会でつなげよう
バラバラの同僚を社内勉強会でつなげよう
 
東北で3年間クラウドのフルマネージドサービスをやってきて感じたこと
東北で3年間クラウドのフルマネージドサービスをやってきて感じたこと東北で3年間クラウドのフルマネージドサービスをやってきて感じたこと
東北で3年間クラウドのフルマネージドサービスをやってきて感じたこと
 
May the team be with you(episode2)
May the team be with you(episode2)May the team be with you(episode2)
May the team be with you(episode2)
 
クラウド移住で地方に住むということ
クラウド移住で地方に住むということクラウド移住で地方に住むということ
クラウド移住で地方に住むということ
 
Agile Samurai Dojo Gathering
Agile Samurai Dojo GatheringAgile Samurai Dojo Gathering
Agile Samurai Dojo Gathering
 
クラウド移住体験記
クラウド移住体験記クラウド移住体験記
クラウド移住体験記
 
10/12 WordBench神戸 WordPressの学習方法
10/12 WordBench神戸 WordPressの学習方法10/12 WordBench神戸 WordPressの学習方法
10/12 WordBench神戸 WordPressの学習方法
 
受託開発だけだといずれケツカッチンになってしまうのでいっちょサービスでもやってみようかと思ってTryしてみた上期の報告 #nds42
受託開発だけだといずれケツカッチンになってしまうのでいっちょサービスでもやってみようかと思ってTryしてみた上期の報告 #nds42受託開発だけだといずれケツカッチンになってしまうのでいっちょサービスでもやってみようかと思ってTryしてみた上期の報告 #nds42
受託開発だけだといずれケツカッチンになってしまうのでいっちょサービスでもやってみようかと思ってTryしてみた上期の報告 #nds42
 
教えてもらったノウハウを試したけど稼げない
教えてもらったノウハウを試したけど稼げない教えてもらったノウハウを試したけど稼げない
教えてもらったノウハウを試したけど稼げない
 
自分のチームをどう作る?
自分のチームをどう作る?自分のチームをどう作る?
自分のチームをどう作る?
 
No018-01-suc3rum-20100929
No018-01-suc3rum-20100929No018-01-suc3rum-20100929
No018-01-suc3rum-20100929
 
アジャイルサムライ読書会inFAN道場最終回Closing
アジャイルサムライ読書会inFAN道場最終回Closingアジャイルサムライ読書会inFAN道場最終回Closing
アジャイルサムライ読書会inFAN道場最終回Closing
 
ただのエンジニアチームの改善を謀ったら。。。
ただのエンジニアチームの改善を謀ったら。。。ただのエンジニアチームの改善を謀ったら。。。
ただのエンジニアチームの改善を謀ったら。。。
 
20121124 学生セミナー「基礎からわかる! IT業界とプログラミング」
20121124 学生セミナー「基礎からわかる! IT業界とプログラミング」20121124 学生セミナー「基礎からわかる! IT業界とプログラミング」
20121124 学生セミナー「基礎からわかる! IT業界とプログラミング」
 
エンジニアじゃなくても 3Dゲームが3時間できた話。 ~three.jsで3D糸通しをつくってみた~
エンジニアじゃなくても 3Dゲームが3時間できた話。 ~three.jsで3D糸通しをつくってみた~エンジニアじゃなくても 3Dゲームが3時間できた話。 ~three.jsで3D糸通しをつくってみた~
エンジニアじゃなくても 3Dゲームが3時間できた話。 ~three.jsで3D糸通しをつくってみた~
 
Josug advent calender20121219
Josug advent calender20121219Josug advent calender20121219
Josug advent calender20121219
 

my-spirit-of-tdd