それはtddか2 - drubytddbc大阪 それはtddか2 [email protected] author of druby, rinda, erb...
TRANSCRIPT
![Page 2: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/2.jpg)
弱点
同じ話を二度すると失敗する
![Page 3: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/3.jpg)
そう
今日は二日目...
![Page 4: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/4.jpg)
私
XP10年くらい伝説上の存在
![Page 5: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/5.jpg)
大げさ
Learn from legendary Japanese Ruby hacker
Masatoshi Seki in this first English-language book on
his own Distributed Ruby library. You'll find out about
distributed computing, advanced Ruby concepts and
techniques, and the philosophy of the Ruby way---
straight from the source.
![Page 6: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/6.jpg)
The dRuby Book
PragProgでbuy now!
![Page 7: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/7.jpg)
日本先行発売
いまならまだ初刷が!
dRubyによる
関 将俊 著
分散・Webプログラミング
![Page 8: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/8.jpg)
とちぎテストの会議2
おいしいテストの作り方2012-10-20
東那須野公民館(那須塩原)こわくないカンファレンス
![Page 9: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/9.jpg)
とちぎテストの会議(連番なし)
2010-7-17 西那須野公民館殺伐とした斬り合いそれは真のTDDかTDDのテストはなにかyoshioriさんのデブサミ講演→炎上が発端
![Page 10: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/10.jpg)
今日の話
TDDのおさらいTDDの変形引き算足し算
TDDはなんだったっけ
![Page 11: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/11.jpg)
きょう学んだこと
TDD楽しかった?
![Page 12: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/12.jpg)
(TAでも)消耗した...
ちょっとハイになるよね
![Page 13: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/13.jpg)
TDDのサイクル
次の目標を考えるその目標を示すテストを書くテストを実行して失敗させるコードを書き、テストをパスさせるテストが通るままで、リファクタリング全部繰り返す
![Page 14: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/14.jpg)
目標を考える
目標ここにする→
←いまここ
![Page 15: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/15.jpg)
Red
目標をテストで表現する→
![Page 16: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/16.jpg)
Green
テストに沿って実装→
←ここまでの道のりからも外れない
![Page 17: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/17.jpg)
Refactor
実装を洗練させる→
←ここまでの道のりからも外れない
![Page 18: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/18.jpg)
またくりかえす
次の目標はここ→
←さっき着いたところ
![Page 19: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/19.jpg)
状態のサイクル
目標設定
実装
洗練
![Page 20: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/20.jpg)
状態のサイクル
Red
Green
Refactor
![Page 21: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/21.jpg)
気分
動く
きれい
![Page 22: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/22.jpg)
TDDはなんだっけ
テストによって導かれた開発のこと今日学んだのは一つの実装例にすぎないかも
と思いたい
![Page 23: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/23.jpg)
しばらくお待ちください
✓ +5:00 ✓ TDDのおさらい✓ このあと変形するよ
![Page 24: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/24.jpg)
変形してみよう
TDDというプラクティスかっちり決まった型がある型の方がだいじそうに思われがち
どうなったらTDDじゃなくなるかな何かを引いてみる何かを足してみる
![Page 25: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/25.jpg)
引き算
xUnitをなくしてみるテスティングフレームワークなし自動テストなし
想像してみて!
![Page 26: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/26.jpg)
流れ
状況XPのテスティング実施例
![Page 27: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/27.jpg)
状況
xUnitをすぐに準備できない分散システム, 複雑なGUI
変更へのおそれおそれによるスローダウン心配なので会議を...
![Page 28: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/28.jpg)
XPのテスティング
最初のXPのプラクティスの一つテストファーストによる設計設計のステップTDDへ
顧客テストストーリーのゴール
![Page 29: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/29.jpg)
顧客テストでテスト駆動開発
xUnitなしでやってみよう顧客テストをテストスイートと見立てる実装した全ストーリーの受入試験を実行毎日数人が試験担当繰り返し繰り返し繰り返し...
![Page 30: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/30.jpg)
Ninja-Testing Analogy
JaSST'04
ジャンプ力を高めるトレーニングに由来毎日ふえるテストを毎日飛び越える開発初期からずーっと受け入れテストスマートでないxUnitの代替安心して変更できる
![Page 31: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/31.jpg)
手動でやるテストの特徴
誰かの時間がとられてしまう繰り返しには忍耐が...
テストの実行が揺らぐバリエーションが勝手に生まれる
人の視点のテストができる手触り、感動
うまくやると新しい問題を見つけやすい
![Page 32: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/32.jpg)
似てるところ
ストーリーの終わりはテストで示すテストがパスしたら完了毎日全ストーリーのテストをする
![Page 33: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/33.jpg)
焦点の移動
テスティングフレームワークを抜いた代わりにチームがテストで開発を駆動したより製品に近い領域に焦点を当てる
![Page 34: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/34.jpg)
対象領域
TDDの繰り返し
![Page 35: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/35.jpg)
垂直方向はV字モデル的なやつね
←コードの質
←製品の質
![Page 36: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/36.jpg)
これはTDD?
テストによって駆動されてるけど、これはTDDだと思う?
![Page 37: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/37.jpg)
しばらくお待ちください
✓ +10:00 ✓ TDDからxUnitを抜いてみた✓ 忍者式テストのスライドはGumroadで!
✓ 次は足し算
![Page 38: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/38.jpg)
足し算
破壊的な思考・テストを足す疑ってみる
バグ探しを足す
![Page 39: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/39.jpg)
流れ
TDDのテストとはもうひとつのテストご提案
![Page 40: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/40.jpg)
TDDのサイクル
次の目標を考えるその目標を示すテストを書くテストを実行して失敗させるコードを書き、テストをパスさせるテストが通るままで、リファクタリング全部繰り返す
![Page 41: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/41.jpg)
TDDのテスト
次のステップを示す道しるべ線を引くための定規ゴールの表現
![Page 42: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/42.jpg)
TDDのテスト
作ろうと思ったものが作ろうとしたように作れたことを調べてる設計への依存のようす設計を信じてる・前提にしているテストケースの枝を刈る情報になったり
![Page 43: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/43.jpg)
もうひとつのテスト
テストとは、エラーをみつけるつもりでプログラムを実行する過程である新しい問題を見つけるため
![Page 44: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/44.jpg)
もうひとつのテスト
作ろうと思ったものはあってるの?設計への依存のようす疑うネタとしての設計の情報そう作ってるならここ間違うだろ?
![Page 45: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/45.jpg)
(でもさ)
テスト技法なテキストでは前者のテストみたいなのが多いじゃんもしかして大差ないんじゃないかなあちょっとしたパラメータの違い
![Page 46: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/46.jpg)
Checking vs. Testing
Checking
既知の情報の確認Testing
新しい情報を探す。未知の物。JaSST'11 Tokyo、Lee Copeland
![Page 47: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/47.jpg)
Checking vs. Testing
テストを書く vs テストをする決められたチェックを繰り返す新しいバグを探しにいく
![Page 48: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/48.jpg)
ご提案
Red Green Refactor
ちょっとずつ仮説の上に仮説を重ねて積みあげる気分
+ Destroy
そう言うけどどっか間違ってるんじゃ?この実装ならここでcore dumpだろ
![Page 49: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/49.jpg)
Destroy
Red Green Refactorのサイクルにたまに混ぜるこの実装ならこれでバグが出るだろ!みたいなのを二人で考えてテストケースを書き実行する当たればRed、外れればGreen
![Page 50: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/50.jpg)
Destroyの例
次のようにするとcoreを吐きます。
次のようにするとこのようになりますがそれは意図した挙動ですか?
![Page 51: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/51.jpg)
akr
![Page 52: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/52.jpg)
次のようにするとcoreを吐きます。
Subject: [ruby-dev:24461] IO#gets dumps coreFrom: Tanaka Akira <akr m17n.org>Date: Sun, 10 Oct 2004 00:00:13 +0900次のようにすると core を吐きます。
% ./ruby -e ' rs = "a" * 0x20000r, w = IO.pipeThread.new { Thread.pass 32.times { w << "b" * 4096 w << "a" } rs.replace "" w.close}r.gets(rs)'-e:13: [BUG] Segmentation faultruby 1.9.0 (2004-10-09) [i686-linux]
zsh: abort (core dumped) ./ruby -e % gdb ruby core GNU gdb 6.1-debian
![Page 53: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/53.jpg)
次のようにするとcoreを吐きます。Subject: [ruby-dev:24463] Enumerable#each_with_index causes core dumpFrom: Tanaka Akira <akr m17n.org>Date: Mon, 11 Oct 2004 00:00:06 +0900次のようにすると core を吐きます。
% ./ruby -e 'r = 1..3r.each_with_index {|v,i| callcc {|k| $k = k } if v == 2; p [v,i] }$k.call'[1, 0][2, 1][3, 2][2, 1][3, 135515225][2, 1][3, 135515609][2, 1]...[3, 135789017][2, 1][3, 135789401][2, 1][3, 135789785][2, 1]-e:3: [BUG] Segmentation faultruby 1.9.0 (2004-10-10) [i686-linux]
![Page 54: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/54.jpg)
変じゃないでしょうか。Tanaka Akira | 1 May 08:11 [ruby-dev:34554] ENV.delete_if
ENV.delete_if が ENV 自身を返すのは変なんじゃないでしょうか。
% ./ruby -ve 'p ENV.delete_if.equal?(ENV)'ruby 1.9.0 (2008-05-01 revision 16248) [i686-linux]true--
Tanaka Akira | 1 May 09:05 [ruby-dev:34555] o = Object.new; def o.to_hash() {1=>2} end; p Hash[o]
以下の結果が {} になるのは変じゃないでしょうか。
% ./ruby -ve 'o = Object.new; def o.to_hash() {1=>2} end; p Hash[o]'ruby 1.9.0 (2008-05-01 revision 16248) [i686-linux]{}--
Tanaka Akira | 1 May 09:20 [ruby-dev:34556] /(.)(.)/.match("ab").select {|v| true } is empty
以下のように、MatchData#select でブロックが常に真なのに結果が空になるのは変ではないでしょうか。
% ./ruby -ve 'p(/(.)(.)/.match("ab").select {|v| true })'ruby 1.9.0 (2008-05-01 revision 16250) [i686-linux][]
マニュアルには self.to_a.select { ... } と同じと書いてありますが、そうすると空ではなくなります。
% ./ruby -ve 'p(/(.)(.)/.match("ab").to_a.select {|v| true })'ruby 1.9.0 (2008-05-01 revision 16250) [i686-linux]["ab", "a", "b"]--
![Page 55: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/55.jpg)
Destroyとは
自分たちのコードを壊してみるのはよくある活動それをTDDのサイクルに持ち込むバグを見つける帽子
![Page 56: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/56.jpg)
疑って壊してみる
新しい問題の発見
![Page 57: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/57.jpg)
より良く、より強く
強くする
![Page 58: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/58.jpg)
新しい指針
動く
きれい
強い
![Page 59: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/59.jpg)
Destroy
Red
Refactor
DestroyGreen
Green
![Page 60: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/60.jpg)
ご注意
追加したいのはそういう視点・態度のほう「テストケースで表現」するのは実装例Redにならない指摘もある「ほら、アプリ書きにくいじゃん」とか
![Page 61: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/61.jpg)
Red
目標をテストで表現する→
![Page 62: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/62.jpg)
疑うところ
目標を表現したテスト→
目標そのもの→
←信じていた道のり
![Page 63: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/63.jpg)
テスト技法系の効果
テストケースが厚いと線がくっきり→
目標も狭く→
![Page 64: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/64.jpg)
これはTDDか
いつもは建設的な態度で臨むたまに破壊的な思考を持ち込む破壊をテストで表現
テストに駆動されてた?
![Page 65: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/65.jpg)
しばらくお待ちください
✓ +25:00 ✓ TDDのテストともうひとつのテスト✓ 破壊的な思考
![Page 66: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/66.jpg)
まとめ
TDDを出発点して引き算と足し算してみた原点があるから試せる/戻ってこれる変形したそれがTDDであるかどうかはあんまり意味がない
![Page 67: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/67.jpg)
多少
ちょっと型から外れても気にすんな
![Page 68: それはTDDか2 - dRubyTDDBC大阪 それはTDDか2 seki@ruby-lang.org author of dRuby, Rinda, ERB and Drip](https://reader033.vdocuments.site/reader033/viewer/2022060903/609f1db1e77d3f3a0510922e/html5/thumbnails/68.jpg)
TDD
テストによって導かれた開発のこと今日学んだのは一つの実装例にすぎない
と思った?