狠狠撸

狠狠撸Share a Scribd company logo
TDD を研ぎ究める

 pocketberserker


 2012 年 8 月 25 日
自己紹介




? 中山 / なかやん / ぺんぎん / 残 KEN
? @pocketberserker / id:pocketberserker
? どこにでもいるふつーのサーガ大学院生
? F# / Haskell / (Erlang) / (Scala) / テスト
? TDDBC 福岡 1, 東京 1.6, 福岡 2,(大阪 2.0)企
  画者
いきなり质问
いきなり质问




1. 疲れている?
いきなり质问




1. 疲れている?
2. まだ不安?
いきなり质问




1. 疲れている?
2. まだ不安?
3. これから TDD とどう付き合う?
参考意見



曰く
参考意見



曰く



     “テストというパートナー”
きのこ JP 07
きのこ JP 07




“テストを友として自信を持ちながらコードを書
く。それがテスト駆動開発を身につけたプログラ
マの仕事のやり方です。”
考えてみよう




テスト(というか TDD)という友との付き合い方
ちなみに
ちなみに

これ以降の話はだいたいこれに書かれている
ちなみに

これ以降の話はだいたいこれに書かれている




   読むのに時間がかかるけど?
               ??
友との付き合い方を考える




1. TDD を知る
2. TDD と親しくなる
3. TDD と語りあう
??


     TDD を知る
TDD を知るって?
         ??朝讲演聴いたじゃない?
では、答えられますか?
では、答えられますか?




? どんな方針で TDD をやればいいの?
では、答えられますか?




? どんな方針で TDD をやればいいの?
? 问题の分解って?
では、答えられますか?




? どんな方針で TDD をやればいいの?
? 问题の分解って?
? きれいなコードって?
どんな方針で TDD をやればいいの?
どんな方針で TDD をやればいいの?




     “不安をテストに”
どんな方針で TDD をやればいいの?




     “不安をテストに”
     ?
     ??不安って何さ?
不安
不安



? 不安は人それぞれ
不安



? 不安は人それぞれ
? いきなり放り込まれても “何が不安かわから
 ない”
不安



? 不安は人それぞれ
? いきなり放り込まれても “何が不安かわから
  ない”
? 何か指針がほしいところ
不安



? 不安は人それぞれ
? いきなり放り込まれても “何が不安かわから
  ない”
? 何か指針がほしいところ
? とっかかりとして品質保証のテストを学ぶ
品質保証のテストを学ぶ



? 一般的に不安だと言われている部分を知る
? 手法を足がかりに “自分の不安” について考
  える
? TDD のテストとは目的が異なる
“Developer Test しているから大丈夫” 神话
“Developer Test しているから大丈夫” 神话




 ? 不安解消で品質保障できるわけではない
“Developer Test しているから大丈夫” 神话




 ? 不安解消で品質保障できるわけではない
 ? 不安解消で妥当性確認できるわけではない
“Developer Test しているから大丈夫” 神话




 ? 不安解消で品質保障できるわけではない
 ? 不安解消で妥当性確認できるわけではない
 ? 要求に合わせてやりましょう
参考
问题の分解って?
问题の分解って?



? 今日のお題はある程度分解されていた
问题の分解って?



? 今日のお題はある程度分解されていた
? 実践ではこうはいかない
问题の分解って?



? 今日のお題はある程度分解されていた
? 実践ではこうはいかない
? ではどうする?
问题の分解って?



? 今日のお題はある程度分解されていた
? 実践ではこうはいかない
? ではどうする?
? 紙と 3 色ボールペンを持ちましょう
纸とボールペン
纸とボールペン


? 不安、期待は既に仕様に現れている
纸とボールペン


? 不安、期待は既に仕様に現れている
? 気になったらボールペンで印をつける
纸とボールペン


? 不安、期待は既に仕様に現れている
? 気になったらボールペンで印をつける
? 印をグループ分けてしてみる
纸とボールペン


? 不安、期待は既に仕様に現れている
? 気になったらボールペンで印をつける
? 印をグループ分けてしてみる
? つまり徹底的な分解と再構築
纸とボールペン


? 不安、期待は既に仕様に現れている
? 気になったらボールペンで印をつける
? 印をグループ分けてしてみる
? つまり徹底的な分解と再構築
? まずは 3 色ボールペンからはじめてみま
 しょう
纸とボールペン


? 不安、期待は既に仕様に現れている
? 気になったらボールペンで印をつける
? 印をグループ分けてしてみる
? つまり徹底的な分解と再構築
? まずは 3 色ボールペンからはじめてみま
  しょう
? 3 色ボールペンもテスト技法のひとつ
きれいなコードって?
きれいなコードって?




  プロのコード
プロのコードを知る?书くには?
プロのコードを知る?书くには?




? 読書や写経
プロのコードを知る?书くには?




? 読書や写経
? コードリーディング
プロのコードを知る?书くには?




? 読書や写経
? コードリーディング
? 実践
読書や写経




? 考えとサンプルが豊富
? とっつきやすい
? (本の)难易度を选べる
コードリーディング




? 生きているコード
? 各言語文化での “きれいさ” を知る
? 言語の勉強にもなる
実践




体感?手を動かしてこそわかることもある
参考
参考(もしかして絶版?)
TDD と親しくなる
親しくなる、2 つの方法
親しくなる、2 つの方法




1. 実践で親しくなる
親しくなる、2 つの方法




1. 実践で親しくなる
2. 写経で亲しくなる
実践から親しくなる



1.   环境を作る
2.   不具合にテストを書いて立ち向かう
3.   後付テストで徐々に慣れる
4.   リファクタリング!
5.   テストファーストへ
环境を作る
环境を作る




テストを書きたいと思ったときから环境を作るの
         では遅い
环境を作る




やりたいと思ったらすぐテストが書ける環境をあ
       らかじめ作ってく
Q. ライブラリをダウンロードできない環境は?
Q. ライブラリをダウンロードできない環境は?
  A. 簡易テスティングフレームワークの自作
写経で亲しくなる



1.   書籍の写経
2.   TDD 演習動画の写経
3.   過去の TDDBC 成果物を写経
4.   自分の TDD を記録?分析
過去の TDDBC 成果物を写経
過去の TDDBC 成果物を写経




? バージョン管理されたデータを写経
過去の TDDBC 成果物を写経




? バージョン管理されたデータを写経
? “他者の呼吸を知る”
過去の TDDBC 成果物を写経




? バージョン管理されたデータを写経
? “他者の呼吸を知る”
? いいところは取り込む
自分の TDD を記録?分析



1. DVCS で Red/Green/Refactor を記録
2. 自分の TDD の傾向を把握
3. リファクタリングが少ない場合は意識する、
   など調整
TDD と语り合う
语り合う
语り合う




? とにかく色々なものを対象に TDD してみる
语り合う




? とにかく色々なものを対象に TDD してみる
? 向き、不向きな対象を TDD に問いかける
语り合う




? とにかく色々なものを対象に TDD してみる
? 向き、不向きな対象を TDD に問いかける
? コストとメリットの境界を見極める
たとえばこんな感じ
“マスター、この问题とは相性がいいのでどんどん
      フィードバックしますね!”
“うう、なかなかフィードバックを返せません?
                     ??
      これは向かないようです”
まとめ
まとめ




? TDD という友との付き合い方を考えよう
まとめ




? TDD という友との付き合い方を考えよう
? そのためにも写経?実践
まとめ




? TDD という友との付き合い方を考えよう
? そのためにも写経?実践
? 共に歩もう、TDD との人生を
ご清聴ありがとう
 ございました

More Related Content

罢顿顿を研ぎ究める