Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
#ccc_r11
テスト駆動開発ここが聞きたい
2015/10/14
大中浩行
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
• 大中浩行(Ohnaka,Hiroyuki)
• TDD Base Camp
• グロースエクスパートナーズ(株)
• Twitter @setoazusa
• ...
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
どうしてこうなった
「ワタシハTDDチョットデキル」
→「CIの構築お願いできますか」
→「デプロイの自動化したいんです」
→「インフラの自動化もお願いしたく」
→...
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
アジェンダ
• 「きれいなコード」
• テストファースト
• テストと不安
• テストのジレンマ
• まとめ
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
「きれいな
コード」
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka※絶版
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
https://en.wikipedia.org/wiki/Kent_Beck
Kent Beck
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
「動作するきれいなコード」
「動作するきれいなコード」、ロン・ジェフ
リーズのこの簡潔な言葉は、TDD(テスト駆動
開発)の目標である。動作するきれいなコード
は、...
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
「きれいなコード」
…て、なんだ?
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka※絶版
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
あやうい前提
「実は、『コードのよさは重要だ』という、か
なりあやうい前提に基づいて、この本は書かれ
ている。」
-「実装パターン」から
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
「無能か有能かの判断な
んて、結局物事を成功さ
せたかどうかでしかない。
勝てば官軍、負ければ賊
軍。無能さを言い訳に努
力しない者は結局何事も
成し遂げず終わる。...
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
「テストしてないけど多分動く」
「とりあえずデプロイしてみよう」
「なんかわからないけど動いた」
etc…
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
…で、その結果
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
https://ja.wikipedia.org/wiki/スパゲッティプログラム
スパゲッティーコード
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
https://www.flickr.com/photos/22719239@N04/2246462044/
疲弊しきった現場
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
https://ja.wikipedia.org/wiki/対爆スーツ
爆弾処理のようなリリース
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
https://www.google.co.jp/search?q=%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E9%9A%9C%E5...
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
https://twitter.com/setoazusa/status/650250873017204736
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
「動作するきれいなコード」というのは原文で
言うと「Clean code that works」
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka※絶版
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
Robert.C.Martin(Uncle Bob)
Kevlin Henney(編)和田卓人(監修)夏目大(訳)「プログラマが知るべき97のこと」から
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
「よい」コード
「これまで、粗悪なコードに苦しめられてきた
のですから、よいコードが重要であることに間
違いはないのです」
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
TDDは「今がどうなっているか」というところ
から始まる、ボトムアップの理論。トップダウ
ンで「TDDの定義」みたいなところから議論を
はじめても、答えにたどり着け...
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
「大抵の管理者は、真実を求めます。仮に彼らが、そう振る
舞っているように見えなくてもです。大抵の管理者は、よい
コードを求めます。仮にスケジュールに悩んでいたとして...
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
結局のところ
重要なのは、コードがきれいなことそのものよ
りも、コードのどういう側面に価値を置くかと
言うこと。
それが積み上がった結果としてのTDD。
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
「きれいなコード」を語る上で、コードが
「リーダブル」であることは重要ですが、今日
の話ではその事に触れていません。
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
テストファー
スト
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
https://en.wikipedia.org/wiki/Bulletproof_vest
テストファースト
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
「いつテストを作成すべきか。→テスト対象の
コードを作成する前である。」
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
「コードを変更する前に、失敗する自動テスト
を書くこと。」
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
再び「クリーンコード」
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
「TDD三原則」
• 失敗する単体テストのコードを書く前に、製品
のコードを書いてはいけない
• コンパイルが通り、適切に失敗する単体テスト
が通るまでは、次の単体...
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
まあこわい
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
こわくないよ!
• テストファーストにはどのような意味がある
のか
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
テストファーストにはどのような意味があるのか
「テストファーストしてないテストは怖い」
※個人の見解です
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
テストを先に書くことはどんな意味があるのか
• テストに求められる機能は、成功するとGreenに
なり、そうでない時にRedになること
• テストファーストしてない...
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
思い出してみてください。
自動化されてないテストで、テスト項目書に
「正しく表示されていること」と記載されてい
て、検証に苦労したことはありませんか?
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
ユニットテストが「テスト」である以上、テス
トの答えとなるものは先に用意されているはず
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
TDDではなぜテストファーストするのか
あくまでテストのあるべき姿を追求したことで、
結果としてテストを最初に書くことになるイ
メージ。
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
よくある質問
「TDDって、テストを必ず先に書かなければい
けないんですか?」
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
http://www.slideshare.net/YasutoEnjoji/20150621-asbc-pub/29
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
テストファーストよりも大事なこと
• 「1ヶ月かけてコーディング、1ヶ月かけてテ
スト」のようなアンチパターンから、どれだ
けプログラミングとテストを連携して開発が...
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
• 大事なのは、システムをデリバリーするために、
どうステップを踏んでいくか
• テストファーストを導入できるなら、すればよ
い。
• そうでないとしても、ユニット...
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
ただ、IT技術者として手札は多いほうがよいの
で、スキルとしてテストファーストできるにこ
したことはないです。
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
テストと不安
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
テスト駆動開発は、プログラム中の不安を管理
する方法である。ここで言う不安とは悪い意味
ではない。...(略)...道理にかなった不安、す
なわち「これは困難な問題...
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
「不安をテストにする」
http://blog.fieldnotes.jp/entry/2013/12/02/213516
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
「不安をテストにするテストで表現する」
http://gihyo.jp/dev/serial/01/tdd/0010
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
@t_wada曰く
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
私たちプログラマの手を止めるものは何でしょうか。私は
「不安」だと思っています。「もしかしたら」という感情で
すね。「もしかしたら,自分の書いているコードは間違って...
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
• プログラマーとしての「不安」
• データベース技術者としての「不安」
• インフラ担当としての「不安」
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
• お互いが不安に感じていることを認める。
• その人の弱さを認めた上で、それをどうテス
トでカバーできるかチームで考える。
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
「信頼で結ばれた共同体」
James O. Copelin Neli B.Harrison(著) 和智右桂(訳)「組織パターン」
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
なので、こういうことではないです!
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
「どんなチームであっても、スムーズに作業す
ることが欠かせない。たとえば、ソフトウェア
開発者は定期的に声を掛けあい、インター
フェースを調整しあい、ビルドを行い、...
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
まとめると
• メンバー一人一人が不安に感じていることを、
テストの出発点にする
• 各々が弱みに感じている部分をオープンに出
来るようにするチームをつくる
という...
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
テストのジレ
ンマ
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
テストのジレンマ
• テストはバグをなおさない
• 品質を改善する手立てを持たない品質保証部
門
• 開発のロールに過度に押しつけられる品質へ
の責任
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
その結果としての「テスト」へのネガティブなイメージ
http://realtime.search.yahoo.co.jp/search?fr=top_ga1_sa&...
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
Developer Testingとは
• 開発者がテストに対して抱いたネガティブな
イメージから脱却し、開発者が行うテストを
「開発者の意図を確認する」工程として...
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
開発者と品質保証の相互信頼の再構築
• 開発者テストのレベルで「開発者の思ったと
おりに動く」ことが保証されているから、品
質保証のテストは品質の検証に注力できる
...
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
「二重のフィードバックループ」
Steve Freeman ,Nat Pryce "Growing Object-Oriented Software, Guided...
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
詳しくはこちらを
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
まとめ
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
TDDをすすめる時に気をつけること
「テストを書く/書かない」ということは、道
義的な責任の問題ではない
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
「TDDやれば偉いわけじゃない」
http://b.hatena.ne.jp/entry/232721484/comment/t-wada
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
では、なぜTDDするのか
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
鏡の国のアリス
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
「その場に居続けるには全力で走り続けなければ
ならない」
「グズな国じゃの!ここではだね、同じ場所に
とどまるだけで、もう必死で走らなきゃいけな
いんだよ。そしてど...
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
http://mizchi.hatenablog.com/entry/2015/10/02/202112
「さよならCofeeScript」
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
http://d.hatena.ne.jp/higayasuo/20150928/1443415547
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
ソフトウェアが死ぬとき
ソフトウェアがドメインの変化に
追従するのをやめたとき
もしくは、
追従できなくなったとき
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
タユムコトナキナガレノナカデ
• コードを生かし続ける
• ビジネスドメインの変化
• 実行環境のバージョンアップ
• 技術トレンドの変化
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
• 「世界を変える」というのは、もっとポジ
ティブなこと
• 自分が変わらずに世界は変わらない
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
私の話
• 新卒文系プログラマー
• 「オブジェクト指向分からない!
Serializableってどういう意味!」
• システムテストでコンパイルエラー!
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
Eclipseというものを知る
→「素晴らしい!書いたコードがコンパイルを
通る!」
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
JUnitというものを知る
→「素晴らしい!書いたコードがちゃんと動
く!」
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
レガシーコード、@t_wadaさん、java-ja
http://d.hatena.ne.jp/t-wada/comment?date=20080224#c
#ccc_r11
Copyright 2015 Hiroyuki Ohnaka
これでおしまい!
TDDを習得するのも大事なんですが、「自分が
エンジニアする理由」をもっと大事にしてほし
いと思います。
またお会いしましょう。ご静聴ありがとうご...
Upcoming SlideShare
Loading in …5
×

2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」

2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」

  • Be the first to comment

2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」

  1. 1. #ccc_r11 テスト駆動開発ここが聞きたい 2015/10/14 大中浩行
  2. 2. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka • 大中浩行(Ohnaka,Hiroyuki) • TDD Base Camp • グロースエクスパートナーズ(株) • Twitter @setoazusa • いきものがかり / miwa / ケラケラ • Javaプログラマー兼インフラエンジニア
  3. 3. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka どうしてこうなった 「ワタシハTDDチョットデキル」 →「CIの構築お願いできますか」 →「デプロイの自動化したいんです」 →「インフラの自動化もお願いしたく」 →(イマココ)
  4. 4. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka アジェンダ • 「きれいなコード」 • テストファースト • テストと不安 • テストのジレンマ • まとめ
  5. 5. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka 「きれいな コード」
  6. 6. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka※絶版
  7. 7. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka https://en.wikipedia.org/wiki/Kent_Beck Kent Beck
  8. 8. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka 「動作するきれいなコード」 「動作するきれいなコード」、ロン・ジェフ リーズのこの簡潔な言葉は、TDD(テスト駆動 開発)の目標である。動作するきれいなコード は、あらゆる理由で価値がある。 ー「テスト駆動開発入門」から
  9. 9. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka 「きれいなコード」 …て、なんだ?
  10. 10. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka※絶版
  11. 11. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka あやうい前提 「実は、『コードのよさは重要だ』という、か なりあやうい前提に基づいて、この本は書かれ ている。」 -「実装パターン」から
  12. 12. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka 「無能か有能かの判断な んて、結局物事を成功さ せたかどうかでしかない。 勝てば官軍、負ければ賊 軍。無能さを言い訳に努 力しない者は結局何事も 成し遂げず終わる。」 夏海公司「なれる!SE4 誰でも出来る?プロジェクト管理」
  13. 13. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka 「テストしてないけど多分動く」 「とりあえずデプロイしてみよう」 「なんかわからないけど動いた」 etc…
  14. 14. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka …で、その結果
  15. 15. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka https://ja.wikipedia.org/wiki/スパゲッティプログラム スパゲッティーコード
  16. 16. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka https://www.flickr.com/photos/22719239@N04/2246462044/ 疲弊しきった現場
  17. 17. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka https://ja.wikipedia.org/wiki/対爆スーツ 爆弾処理のようなリリース
  18. 18. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka https://www.google.co.jp/search?q=%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E9%9A%9C%E5%AE%B3&ie=utf- 8&oe=utf-8&hl=ja#q=%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E9%9A%9C%E5%AE%B3&hl=ja&tbm=nws
  19. 19. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka https://twitter.com/setoazusa/status/650250873017204736
  20. 20. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka 「動作するきれいなコード」というのは原文で 言うと「Clean code that works」
  21. 21. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka※絶版
  22. 22. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka Robert.C.Martin(Uncle Bob) Kevlin Henney(編)和田卓人(監修)夏目大(訳)「プログラマが知るべき97のこと」から
  23. 23. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka 「よい」コード 「これまで、粗悪なコードに苦しめられてきた のですから、よいコードが重要であることに間 違いはないのです」
  24. 24. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka TDDは「今がどうなっているか」というところ から始まる、ボトムアップの理論。トップダウ ンで「TDDの定義」みたいなところから議論を はじめても、答えにたどり着けない
  25. 25. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka 「大抵の管理者は、真実を求めます。仮に彼らが、そう振る 舞っているように見えなくてもです。大抵の管理者は、よい コードを求めます。仮にスケジュールに悩んでいたとしても です。彼らはスケジュールと要件を守ることに必死かもしれ ませんが、それは彼らの仕事なのですから仕方がありません。 あなたがそれに負けない熱意を持ってコードを 守ればよいのです。」
  26. 26. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka 結局のところ 重要なのは、コードがきれいなことそのものよ りも、コードのどういう側面に価値を置くかと 言うこと。 それが積み上がった結果としてのTDD。
  27. 27. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka 「きれいなコード」を語る上で、コードが 「リーダブル」であることは重要ですが、今日 の話ではその事に触れていません。
  28. 28. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka
  29. 29. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka テストファー スト
  30. 30. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka https://en.wikipedia.org/wiki/Bulletproof_vest テストファースト
  31. 31. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka
  32. 32. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka 「いつテストを作成すべきか。→テスト対象の コードを作成する前である。」
  33. 33. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka
  34. 34. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka 「コードを変更する前に、失敗する自動テスト を書くこと。」
  35. 35. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka 再び「クリーンコード」
  36. 36. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka 「TDD三原則」 • 失敗する単体テストのコードを書く前に、製品 のコードを書いてはいけない • コンパイルが通り、適切に失敗する単体テスト が通るまでは、次の単体テストを書いてはなら ない • 現在失敗する単体テストが通るまで、次の製品 コードを書いてはならない Robert C. Martin(著)花井志生(訳) Clean Code アジャイルソフトウェア達人の技
  37. 37. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka まあこわい
  38. 38. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka こわくないよ! • テストファーストにはどのような意味がある のか
  39. 39. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka テストファーストにはどのような意味があるのか 「テストファーストしてないテストは怖い」 ※個人の見解です
  40. 40. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka テストを先に書くことはどんな意味があるのか • テストに求められる機能は、成功するとGreenに なり、そうでない時にRedになること • テストファーストしてないテストは、「まず失 敗させる」ことができないため、テストとして の信頼性がさがる • 「失敗していないテストのカバレッジは50%し かない」
  41. 41. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka 思い出してみてください。 自動化されてないテストで、テスト項目書に 「正しく表示されていること」と記載されてい て、検証に苦労したことはありませんか?
  42. 42. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka ユニットテストが「テスト」である以上、テス トの答えとなるものは先に用意されているはず
  43. 43. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka TDDではなぜテストファーストするのか あくまでテストのあるべき姿を追求したことで、 結果としてテストを最初に書くことになるイ メージ。
  44. 44. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka よくある質問 「TDDって、テストを必ず先に書かなければい けないんですか?」
  45. 45. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka http://www.slideshare.net/YasutoEnjoji/20150621-asbc-pub/29
  46. 46. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka テストファーストよりも大事なこと • 「1ヶ月かけてコーディング、1ヶ月かけてテ スト」のようなアンチパターンから、どれだ けプログラミングとテストを連携して開発が できるようにするか • テストによって開発が駆動されているか
  47. 47. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka • 大事なのは、システムをデリバリーするために、 どうステップを踏んでいくか • テストファーストを導入できるなら、すればよ い。 • そうでないとしても、ユニットテストより上位 レベルのテストの項目は先に作成するなど、テ スト同士で補完していけば良い。
  48. 48. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka ただ、IT技術者として手札は多いほうがよいの で、スキルとしてテストファーストできるにこ したことはないです。
  49. 49. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka テストと不安
  50. 50. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka テスト駆動開発は、プログラム中の不安を管理 する方法である。ここで言う不安とは悪い意味 ではない。...(略)...道理にかなった不安、す なわち「これは困難な問題だから最初から最後 までは分からない」という感覚である。 ー「テスト駆動開発入門」から
  51. 51. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka 「不安をテストにする」 http://blog.fieldnotes.jp/entry/2013/12/02/213516
  52. 52. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka 「不安をテストにするテストで表現する」 http://gihyo.jp/dev/serial/01/tdd/0010
  53. 53. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka @t_wada曰く
  54. 54. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka 私たちプログラマの手を止めるものは何でしょうか。私は 「不安」だと思っています。「もしかしたら」という感情で すね。「もしかしたら,自分の書いているコードは間違って いるかもしれない」「もしかしたら,ライブラリの使い方が 正しくないかもしれない…」。(略) だから,これから書くコードに対して,if文があるだろうな とか,ループがあるとか,正規表現使わなきゃいけないなと か,そういった自分自身に対する不安,これから書くことに 対する不安に対して,テストを書いていきます。 「[動画で解説]和田卓人の“テスト駆動開発”講座 第10回 テストの最小単位は不安」 http://gihyo.jp/dev/serial/01/tdd/0010
  55. 55. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka • プログラマーとしての「不安」 • データベース技術者としての「不安」 • インフラ担当としての「不安」
  56. 56. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka • お互いが不安に感じていることを認める。 • その人の弱さを認めた上で、それをどうテス トでカバーできるかチームで考える。
  57. 57. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka 「信頼で結ばれた共同体」 James O. Copelin Neli B.Harrison(著) 和智右桂(訳)「組織パターン」
  58. 58. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka なので、こういうことではないです!
  59. 59. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka 「どんなチームであっても、スムーズに作業す ることが欠かせない。たとえば、ソフトウェア 開発者は定期的に声を掛けあい、インター フェースを調整しあい、ビルドを行い、テスト をしなければならない。」 「組織パターン」から(強調部発表者)
  60. 60. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka まとめると • メンバー一人一人が不安に感じていることを、 テストの出発点にする • 各々が弱みに感じている部分をオープンに出 来るようにするチームをつくる ということです。
  61. 61. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka テストのジレ ンマ
  62. 62. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka テストのジレンマ • テストはバグをなおさない • 品質を改善する手立てを持たない品質保証部 門 • 開発のロールに過度に押しつけられる品質へ の責任
  63. 63. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka その結果としての「テスト」へのネガティブなイメージ http://realtime.search.yahoo.co.jp/search?fr=top_ga1_sa&ei=utf- 8&p=%E5%8D%98%E4%BD%93%E3%83%86%E3%82%B9%E3%83%88
  64. 64. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka Developer Testingとは • 開発者がテストに対して抱いたネガティブな イメージから脱却し、開発者が行うテストを 「開発者の意図を確認する」工程として再定 義する • その基準は「不安」
  65. 65. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka 開発者と品質保証の相互信頼の再構築 • 開発者テストのレベルで「開発者の思ったと おりに動く」ことが保証されているから、品 質保証のテストは品質の検証に注力できる • 品質保証や受入のテストが後詰めとして控え ているから、開発者テストはプログラムの中 の勘所を押さえることに注力できる
  66. 66. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka 「二重のフィードバックループ」 Steve Freeman ,Nat Pryce "Growing Object-Oriented Software, Guided by Tests"
  67. 67. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka 詳しくはこちらを
  68. 68. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka まとめ
  69. 69. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka TDDをすすめる時に気をつけること 「テストを書く/書かない」ということは、道 義的な責任の問題ではない
  70. 70. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka 「TDDやれば偉いわけじゃない」 http://b.hatena.ne.jp/entry/232721484/comment/t-wada
  71. 71. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka では、なぜTDDするのか
  72. 72. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka 鏡の国のアリス
  73. 73. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka 「その場に居続けるには全力で走り続けなければ ならない」 「グズな国じゃの!ここではだね、同じ場所に とどまるだけで、もう必死で走らなきゃいけな いんだよ。そしてどっかよそに行くつもりなら、 せめてその倍の速さで走らないとね!」 Lewis Carroll(著) 山形浩生(訳) 「鏡の国のアリス」 http://www.genpaku.org/alice02/alice02j.html
  74. 74. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka http://mizchi.hatenablog.com/entry/2015/10/02/202112 「さよならCofeeScript」
  75. 75. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka http://d.hatena.ne.jp/higayasuo/20150928/1443415547
  76. 76. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka ソフトウェアが死ぬとき ソフトウェアがドメインの変化に 追従するのをやめたとき もしくは、 追従できなくなったとき
  77. 77. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka タユムコトナキナガレノナカデ • コードを生かし続ける • ビジネスドメインの変化 • 実行環境のバージョンアップ • 技術トレンドの変化
  78. 78. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka • 「世界を変える」というのは、もっとポジ ティブなこと • 自分が変わらずに世界は変わらない
  79. 79. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka 私の話 • 新卒文系プログラマー • 「オブジェクト指向分からない! Serializableってどういう意味!」 • システムテストでコンパイルエラー!
  80. 80. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka Eclipseというものを知る →「素晴らしい!書いたコードがコンパイルを 通る!」
  81. 81. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka JUnitというものを知る →「素晴らしい!書いたコードがちゃんと動 く!」
  82. 82. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka レガシーコード、@t_wadaさん、java-ja http://d.hatena.ne.jp/t-wada/comment?date=20080224#c
  83. 83. #ccc_r11 Copyright 2015 Hiroyuki Ohnaka これでおしまい! TDDを習得するのも大事なんですが、「自分が エンジニアする理由」をもっと大事にしてほし いと思います。 またお会いしましょう。ご静聴ありがとうござ いました。

×