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.

my-spirit-of-tdd

983 views

Published on

Agile Samurai Basecamp 2015.06 ふりかえり&TDD TDDトラックの基調講演

Published in: Engineering
  • Be the first to comment

my-spirit-of-tdd

  1. 1. 私のTDDのこころ あさの ( @uasano )
  2. 2. よろしくお願いします!
  3. 3. 自己紹介 仕事の顔 浅野 雄(あさの ゆう) 株式会社 FLECT
 → 積極採用中。ご応募お 待ちしてます!w IoT関連の案件やってます 10年間在籍した某SIerか ら2014年9月にJoin
  4. 4. 自己紹介 普段の顔 あさの (@uasano) TDDの始まりは2012年7月20 日のinfo talk #44 アジャイルサムライ横浜 道場 門下生 たまに何かに登壇したり してます
  5. 5. 今日話すこと AgileSamurai BaseCamp とは みんなのTDDのこころ TDDをより深く学ぶために 今日のコンテンツ
  6. 6. AgileSamurai BaseCamp とは
  7. 7. AgileSamurai BaseCamp アジャイルサムライを読んで、現場をもっと良 くしたい!と思った弟子たちが マスター先生・兄弟子達から 明日から実践できる 現場の課題を解消するた めのヒントを持ち帰る場所
  8. 8. AgileSamurai BaseCamp 現場をもっと良くしたい!と思う方が 同じような想いを持った方と出会って 仲間を作るための場所
  9. 9. AgileSamurai BaseCamp 参加した方が そこで得た学びを現場に持ち帰って 万策尽きた時に新たな気付きを得る為に戻っ てってくる場所
  10. 10. みんなのTDDのこころ
  11. 11. みんなのTDD AgileSamuraiによるTDD 先達たちのTDD Kent BeckのTDD t-wada のTDD わたしのTDD
  12. 12. AgileSamuraiのTDD
  13. 13. なんの為のTDD 日々のコーディングで直面する数々の複雑さに 立ち向かうことができるようになる 素早いフィードバックを得られるので、自分の 進んでいる方向が正しいことを確かめながら着 実に進んでいける コードベースの保守や修正を容易にすることに つながっている
  14. 14. いつTDDを使うか 私が「問答無用で実践すべき」だと考えている アジャイルなソフトウェアエンジニアリングの プラクティスを紹介していきたい。具体的には 次の4つだ。 ユニットテスト リファクタリング テスト駆動開発(TDD) 継続的インテグレーション
  15. 15. ルール その1: 失敗するテストをひとつ書くまでは、 新しいコードを一切書かない その2: 「危なっかしい所」をすべてテスト する
  16. 16. 1. Red 2. Green 3. Refactoring
  17. 17. チームがテスト駆動開発 にすぐ馴染まなくても慌 てないでいい。
 テスト駆動開発はユニッ トテストやリファクタリ ングよりも高度な技術だ。
  18. 18. 高度な技術だ! ((((;゚Д゚))))gkbr
  19. 19. 先達たちのTDD
  20. 20. 先達たちのTDD Kent BeckのTDD t-wadaのTDD
  21. 21. Kent BeckのTDD
  22. 22. Kent Beck氏 テスト駆動開発入門の著者 XP(eXtreame Programming) の 考案者 アジャイルソフトウェア開発宣言の起草者の1 人 エリック・ガンマと共にJUnitを開発
  23. 23. なんの為のTDD 「動作するきれいなコード」、ロン・ジェフリー ズのこの簡潔な言葉は、TDDの目標である。動 作するきれいなコードは、あらゆる理由で価値 がある。
  24. 24. ルール レッド・グリーン・リファクタリング これが TDDの信条である レッド 動作しないテストを少しだけ作成す る。 グリーン テストをすぐに動作させる リファクタリング テストを動作させるため だけに作成された重複をすべて取り除く
  25. 25. ルール2 有機的に設計しなければいけない 自分でテストを作成しなければいけない 開発環境は、小さな変化に対する迅速なビルド をサポートしなければいけない テストを容易にするために、極めて高凝集で疎 結合のコンポーネントから構成されるように設 計しなければいけない
  26. 26. 一層、難しそう ((((;゚Д゚))))gkbr
  27. 27. t-wadaのTDD
  28. 28. 和田 卓人氏 日本におけるTDDのエバンジェリストの一人 プログラマが知るべき97のこと・SQLアンチパ ターン監訳 power-assert-jsの生みの親
  29. 29. 元祖TDDのこころ http://www.slideshare.net/t_wada/ osh2014-sprit-of-tdd
  30. 30. なんの為のTDD
  31. 31. ルール 少しずつ・一歩ずつ段を小さく 一度に一つずつ対処する 素早く回す 自分が最初のユーザ
  32. 32. 黄金の回転
  33. 33. TDDの真の目的 不安の克服 書いたコード・これから書くコードに自信を 持つ 健康の維持 変化に対応するには健康体のチーム・コード が必要
  34. 34. 1人から始められる テストやTDDはスキルです。つまり 才能ではなく、習得可能です 量は質に転化します 写経!
  35. 35. なんとなく、 希望が見えてきた
  36. 36. わたしのTDD
  37. 37. わたしの中のTDDとは 自動テストからのフィードバックが開発チーム に対してポジティブに作用している状態 開発者を楽にする為の手段の1つ 設計が良くなるとか 安心して機能追加できるようになるとか
  38. 38. 例えばこんなとき 新たに作るprivateメソッドをテストしたくなっ て、「これは別のクラスのpublicメソッドで は?」と気付いた 変な修正したらテストが落ちるから、自分がこ れまで担当してなかった部分も安心して変更で きるようになった
  39. 39. こういうのは違う 失敗するテストコードが書けなくて、始められ ません TDDで開発してるからテストは省略していいよ ね 仕様変更に対応する為にコードを変えたら、テ ストが大量に落ちるようになって修正するのが 辛い
  40. 40. 失敗するテストコードが書 けなくて、始められません 先にテストを書く事でフィードバックが得られ るのは確か いきなりそれができるかは? 先にプロダクトコード書いて、その後でテスト を書いてもフィードバックは得られる。 そのフィードバックをコードに反映させられた らいい できるところから始めていけばいい
  41. 41. TDDで開発してるからテ ストは省略していいよね TDDは開発を駆動するための手段であって、品 質を保証するための手段ではない 副次的作用としてバグが減るのは確かだけど… TDDで使っているテストが品質保証で十分かは 別問題。
  42. 42. コードを変えたらテストが 大量に落ちるようになって、 修正するのが辛い いわゆる Fragile Test 問題 テストコードに大量の重複があったり テストコードが「実装のテスト」になってし テストコードもリファクタリングする。 作りに問題のあるテストでもないよりマシ テストも動作するきれいなコードに変える
  43. 43. なぜTDDをするのか? 躊躇なくリファクタリングをするため
  44. 44. もう少し詳しく
  45. 45. なぜTDDをするのか? TDDでコードを書いていると、リファクタリン グに対する躊躇・不安感がなくなる リファクタリングへの躊躇がなくなると、未知 の仕様変更を予測した過剰設計が減らせる 要件を満たす最小限の機能を極力少ない規模で 実現できる
  46. 46. それで何が嬉しいの? 変化に追従する速度を維持し続けられる 仕様変更や、市場・競合の動向への対応等
  47. 47. どんな時にTDDを使うの か 使い捨てないもの 複数人でコードを触るもの UIなどテストしづらいものは状況によりけり
 (大体、やってない)
  48. 48. まとめ 原理主義に走らず、「楽をするため」の手段として使 う 取っ付き易いところから 1つのコードベースを長く・複数人で使う場合は使う旨 みが大きそう 自分が、「何のために」TDDをしたいのかを意識する
  49. 49. TDDをより深く学ぶために
  50. 50. 次にすべきこと
  51. 51. TDDBC TDD Boot Camp TDDを1日かけてハンズオン形式で学ぶイベント 全国津々浦々で 不定期 に 開催中 今日の講師陣は大体関係者
  52. 52. 次回首都圏開催予定は…
  53. 53. 未定! (´・ω・`)
  54. 54. Doorkeeperのグループを
 要チェック! https://tddbc.doorkeeper.jp/
  55. 55. 次にすべきこと
  56. 56. 写経!
  57. 57. テスト駆動開発入門 ケント・ベック 大人の事情により絶版…
  58. 58. 今日のコンテンツ
  59. 59. 今日のこれからのコンテンツ は皆さんの投票で決まります
  60. 60. 今日のTDDトラック 13:15-
 14:00 keynote ← 今ここ 14:00-
 14:30 休憩 兼 投票 時間 14:30-
 15:00 TDDサイクルを回す 15:00-
 15:30 ここ! ここ! 15:30-
 16:00 ここ! ここ!
  61. 61. 休憩時間にドーナツが配られ るので、受け取り時に投票し てください
  62. 62. 今日のコンテンツ候補
  63. 63. バグってるWebアプリケーションをTDDで改善 受け入れテストでのTDD テストコードのリファクタリング(Java) アジャイルサムライの次に読むべき本 TDDサイクルの実践(チューター有)
 ※ペアプロ希望の方は希望の言語を教えてくだ さい TDDサイクルを回す(JavaでFizzBuzzを) TDD実践者とのQ&A
  64. 64. ご清聴 ありがとうございました

×