Upgrade to Pro — share decks privately, control downloads, hide ads and more …

書籍『テスト駆動開発』7つの魅力のご紹介

378406b82e2c225bdc1a76c9a886f955?s=47 eiji.ienaga
January 25, 2018
750

 書籍『テスト駆動開発』7つの魅力のご紹介

2018 アジャイル事業部 年始のご挨拶 LTの資料。
ぜんぜん最後までいかなかったけどね

378406b82e2c225bdc1a76c9a886f955?s=128

eiji.ienaga

January 25, 2018
Tweet

Transcript

  1. 1/24 アジャイル事業部 年始のご挨拶 @fkino に代わりまして 代打 家永英治 書籍『テスト駆動開発』 7つの魅力のご紹介

  2. (最後のページに辿りつけなさそうなので) 2018も Happy Programming!!

  3. 祝!2017年秋 新訳!

  4. Q: • 買った人? • 付録Cだけ読んだ人? • 一通り読んだ人は? • 1部、2部実際に手を動かして試した人?

  5. 新訳出版のピッチ ”『テスト駆動開発』は、自分たちのコードに自信を持って開発を続けたいプログラマ、 チームリーダー向けの書籍である。これはテスト駆動開発の考案者自身によって書か れた原典であり、テスト駆動開発とは単にテスト自動化を行うことではなく、ユニットテ ストとリファクタリングを両輪とした小さいサイクルを回すことで不確実性を制御し、不 断の設計進化を可能にする手法であることを、読者は実例を通して学ぶことができる。 http://t-wada.hatenablog.jp/entry/tddbook

  6. ”テスト駆動開発とは単に テスト自動化を行うことで はなく http://t-wada.hatenablog.jp/entry/tddbook

  7. ”ユニットテストとリファクタリング を両輪とした http://t-wada.hatenablog.jp/entry/tddbook

  8. http://t-wada.hatenablog.jp/entry/tddbook ”小さいサイクルを回すことで不 確実性を制御し

  9. ”不断の設計進化を可能にする 手法であることを http://t-wada.hatenablog.jp/entry/tddbook

  10. ”読者は実例を通して学ぶことが できる http://t-wada.hatenablog.jp/entry/tddbook

  11. それが!

  12. None
  13. ソフトウェアのバージョンを最新に(JUnit5、Python3) 判型を小さく(持ち運びやすさUP) 脱落しにくい構成に(写経ビリティUP) 新規書き下ろしの訳者解説を追加(付録Cで歴史が学べる) http://t-wada.hatenablog.jp/entry/tddbook 新訳版の工夫

  14. お買い得です! 未だな人は今すくクリックを!

  15. 今日は、テスト駆動開発本の見どころを私 の独断と偏見を交えながら、弾丸特急でお 伝えします

  16. (1)

  17. (1)表紙がかっこいい!

  18. None
  19. None
  20. None
  21. (1) かっこいい! ジャケ買いだね

  22. (1) ね!

  23. (2)

  24. (2)章末のコード全部入りに注 目!

  25. (2) 写経時に迷わない!

  26. (2) 写経ビリティUP!

  27. (2) t-wadaに感謝!

  28. (2) ありがとう!!

  29. (2) 実際に手で動かして学ぶ (写経)はまじでオスス メ!

  30. ”本書『 テスト 駆動 開発』 の第 I 部、第II部が特殊な書き方をさ れているのは、 この「 過程」を読者に追体験してもらうためです。

    テスト駆動開発の本質 をつかむためには、 まとまった量の、手 を動かしながら学べる良質なチュートリアルが必要なのです。 KentBeck. テスト駆動開発 (Kindle の位置No.5260-5263). Kindle 版. 付録Cより
  31. (3)

  32. (3)TODOリストの変更過程に 注目!

  33. (3) 途中までTODOを追って みましょう!

  34. None
  35. None
  36. None
  37. None
  38. None
  39. None
  40. (3) TODOリスト≒ テスト項目+リファクタリング項目

  41. アウトプットから 学びを得て、 (3)

  42. TODOリストを更新

  43. 遠目で眺めれば、 エクストリームプログラミングや リーンスタートアップと やってることは、だいたい一緒

  44. だいたい一緒

  45. try and error!するほど 憂鬱になるではなく

  46. try and error!するほど やったー!!となる

  47. “テスト駆動開発 は、 プログラミング中の不安をコントロールす る手法だ。ここでは「 不安」を悪い意味で使って いるのではない (我々は 赤ちゃんでは ないからね)。「 これは困難な問題なの

    で、最初からすべてを見通せるわけではない」という真っ当な感 覚のことだ。 KentBeck . テスト駆動開発 (Kindle の位置No.59-62). Kindle 版.
  48. 写経以外にも、TODOリストを追ってみるも おすすめの学習方法!

  49. (3)

  50. (3)各章ごとの ふりかえりに注目!

  51. 何が書いてあるか少し 追って見ましょう

  52. None
  53. どうなったら嬉しいかを小さいテ ストコードで表現した

  54. 大罪!?

  55. None
  56. 恥知らずにコピー&ペー スト!?

  57. 重複を取り除くまでは 家に帰らない!!

  58. None
  59. 感情をテストに翻訳する!?

  60. 1. 気分を交えながらやったことを短く書い ている 2. まれに、考察が入る ふりかえりに書いていること

  61. 写経で迷子になったら各章のふりかえがオ ススメ。 ふりかえりの項目を読んでわからない箇所があれば、わからない箇所を中心に章の文を追って、KentBeckがやってみせたこと、感じたことをもう一度トレースする。 ふりかえりの他、1部は章タイトル(日本語)からも推測できるように t-wadaが工夫している。

  62. (4)おちゃめなKentBeckに注 目!

  63. そう、あれは私が若かったころ。とてもとても昔の話だ。あのころ はビットを雪の中から掘り出して、バケツいっぱいのビットを裸足 で仕事場に運ばなければならなかった。小さい足は血まみれに なり、その足跡をオオカミがつけてきたものだった……失敬、思い 出に浸ってしまったようだ。 KentBeck.テスト駆動開発 (Kindle の位置No.3215-3217). Kindle 版.

  64. オオカミ?血? 唐突に思い出に浸る!? なんだ? (4)

  65. (4) KentBeck流の Singletonの説明

  66. “Singleton パターン グローバル変数の無いプログラミング言語でグローバル変数を作るにはどうすればよい だろうか―― 決してやってはならない。そんなことを考える時間は設計に回して、コード をきれいにしよう。 KentBeck. テスト駆動開発 (Kindle の位置No.4323-4324).

    Kindle 版. (4)
  67. 決してやってはならな い。

  68. そんなことを考える時間は設計 に回して、コードをきれいにしよ う。

  69. 以上!!

  70. わかった。グローバル変 数やりません☻ (4)

  71. KentBeck流の説明が時々 「ぬ!?」「 」もありますがそれ も楽しみましょう!

  72. (5)

  73. (5)3部のパターンに注目!!

  74. (5) 3部はTDDのためのパターン集 です!名前を眺めてみよう!

  75. 第 III 部 テスト駆動開発のパターン テスト駆動開発のパターン • テスト(名詞) • 独立したテスト •

    TODOリスト • テストファースト • アサートファースト • テストデータ • 明示的なデータ レッドバーのパターン • 一歩を示すテスト • はじめのテスト • 説明的なテスト • 学習用テスト • 脱線はTODOリストへ • 回帰テスト • 休憩 • やり直す • 安い机に良い椅子
  76. 第 III 部 テスト駆動開発のパターン テスティングのパターン • 小さいテスト • Mock Object

    • Self Shunt • Long String • Crash Test Dummy • 失敗させたままのテスト • きれいなチェックイン グリーンバーのパターン • 仮実装を経て本実装へ • 三角測量 • 明白な実装 • 一から多
  77. 第 III 部 テスト駆動開発のパターン xUnitのパターン • アサート • フィクスチャー •

    外部フィクスチャー • テストメソッド • 例外のテスト • まとめテスト デザインパターン • Command • Value Object • Null Object • Template Method • Pluggable Object • Pluggable Selector • Factory Method • Imposter • Composite • Collecting Parameter • Singletone
  78. 第 III 部 テスト駆動開発のパターン リファクタリング • 差異をなくす • 変更の差分 •

    データ構造の変更 • メソッドの抽出 • メソッドのインライン化 • インタフェースの抽出 • メソッドの移動 • メソッドオブジェクト • パラメータの追加 • メソッド から コンス トラクタ への パラメータ の 移動
  79. パターンなので、「全部やれ!」ではなく、 (5)

  80. (5) 【自分】が感じている課題感に沿って、 合いそうなパターンを【取捨選択】し、 課題を解消するか試すが肝

  81. 1.有機的秩序の原理 2.参加の原理 3.漸進的成長の原理 4.パタンの原理 5.診断の原理 6.調整の原理 (オレゴン大学の実験)

  82. 自分で考えて選 択!!

  83. 不安に立ち向かう

  84. (5) ちょっとづつプログラミン グの好循環ループを育て ていく

  85. 課題は自分の今の感情に気付 くところから (5)

  86. 憂鬱な悪循環ループ

  87. (5) 「わからないことがたくさん。どこ から手をつけたら良いのやら ><」

  88. (5) 「問題が大き過ぎて解けないよ ><」

  89. (5) 「つまり期待結果は なに?」

  90. 「何回も打鍵&クリック操 作で、指がつかれたよ」 (5)

  91. (5) 「このコードさっぱり理解 できない><」

  92. (5) 「目視確認で目がショボ ショボ><」

  93. 「確認作業は 単調で退屈だなぁ」 (5)

  94. (5) 「ログが流れて確認が辛 い!」

  95. (5) 「毎回確認めんどくさい な。後にするか」

  96. (5) 「結果わかるまで時間かかる なぁ。めんどくさいなぁ。 後にするか」

  97. (5) 「やゔぇぇ。動かない!? いつ壊れたんだろう ??><」

  98. 「現実装の仕様がわかんない よ!何が期待通りなの>< トホホ」 (5)

  99. (5) 「修正したけど動くの かなぁ><」

  100. (5) 「ごめん壊しちゃっ た!!」

  101. (5) 「なにこれ!コピペの嵐。 ><」

  102. (5) 「似たIf文が増殖!?。 これは。。」

  103. (5) 「ありゃりゃうまくいかな い。袋小路だ」

  104. (コードを見て or 作業して、感じて) うぎゃー (5)

  105. うぎゃー (5)

  106. 憂鬱な悪循環ループ

  107. 憂鬱な悪循環ループのデベロッパー体験 をどうやって抜け出す? (5)

  108. ヒントが3部に! (5)

  109. 実装がうまく行かなかっ たらどうする? (5)

  110. (5) 休憩 疲れたり手詰まりになったりしたときはどうすればいいだろうか ―― 休憩 を 取ろ う。 KentBeck. テスト駆動開発

    (Kindle の位置No.3473-3474). Kindle 版.
  111. (5) やり直す 手詰まりで途方に暮れてしまったときはどうするべきか ―― コードを捨てて、やり直そう。 KentBeck. テスト駆動開発 (Kindle の位置No.3502-3503). Kindle

    版.
  112. (5) 僕達には 休んだり・来た道を戻る 選択肢がある!

  113. • リファクタリングを強化してみる ◦ 差異をなくす ◦ メソッドの抽出 • 更にTDDのRedGreenRefactorのリズムに近づ く ◦

    テストファースト ◦ アサートファースト • うまく行かなかったら ◦ パターン適用を一旦中断し、適切なタイミ ングで再度チャレンジする 悪循環ループから抜け出し 好循環ループを育てていこう • 例えば少し制約を緩めて次から始める ◦ TODOリスト ◦ テスト(名詞) ◦ 小さいテスト ◦ 明白な実装 • 実装につまずいたら ◦ ”仮実装を経て本実装へ ”で歩幅を小さく するを試す
  114. まだ多すぎるというのなら、この2つから 仮実装を経て本実装へ テスト(名詞)

  115. 仮実装を経て本実装へ 実装で躓いた場合はこれ!! まだ多すぎるというなら 1つから

  116. ベイビーステップ(漸近的成長) でつくる真髄がこのパターンの 中に! 仮実装を得て本実装へ(Fake It)

  117. TDD自体をはじめてみる に不安を感じたら? (5)

  118. (5) ベイビーステップTDD ---TDDを始めるのが難しいと思ったら? 安心して失敗できる写経からはじめてみよう。テストファーストは後にして、小さなリファ クタリングのみを試してみよう。不安で立ち止まってしまうよりもずっと良い。 うまく行けば更に課題感にそって優先順の高そうな解決案を1つ試そう。うまく行かな かったら、休憩するか、やり直そう。プログラミング体験のカイゼンTRYのステップ幅を 小さくして、ゆっくりで再度トライしよう。 (eiji.ienaga)

  119. パターンなので、参照するだけでなく、 繰り返し発生している課題と解について自 分で書いて整理するのも良い! (5)

  120. プログラミング中の 悪循環から好循環へ トランスフォームの ヒントは3部の中に (5)

  121. (6)

  122. (6)電子書籍に注目!

  123. 電子書籍なら気軽にジャンプできていサマリーが読めてオススメ

  124. リアル本もいよ!

  125. サインがもらえる!

  126. 用途に合わせて 複数冊、 買いましょう!

  127. (7)

  128. (7)付録Cに注目!

  129. 歴史、これから等が記載されて 良いことたくさんありますが 今日は1つだけピックアップ

  130. ”テスト駆動開発におけるテストは、確認を繰り返すことによっ て、 既知の領域の輪郭線を際立たせ、そこから未知の領域に踏 み込んでいくための相棒なのです。未知の領域を進むための明 かりが足りないと思ったとき、テスト駆動開発を思い出してみてく ださい。 KentBeck. テスト駆動開発 (Kindle の位置No.5301-5303).

    Kindle 版. 付録C
  131. 確認を繰り返すことによって

  132. 既知の領域の輪郭線を際立た せ、

  133. 未知の領域に踏み込ん でいくための相棒

  134. それが!

  135. None
  136. try and error するほ ど強くなる!!

  137. テスト駆動開発 は、 プログラミング中の不安をコントロールする 手法だ。ここでは「 不安」を悪い意味で使っているのではない (我々は 赤ちゃんでは ないからね)。「 これは困難な問題なの で、最初からすべてを見通せるわけではない」という真っ当な感

    覚のことだ。 KentBeck . テスト駆動開発 (Kindle の位置No.59-62). Kindle 版.
  138. 2018年も未知の領域に対して、 期待と不安の入り混じった感情を もちながらも プログラミングを 楽しんでいきましょう

  139. 2018も Happy Programming!!