Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

祝!2017年秋 新訳!

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

それが!

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

(1)

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

(1) かっこいい! ジャケ買いだね

Slide 22

Slide 22 text

(1) ね!

Slide 23

Slide 23 text

(2)

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

(2) 写経ビリティUP!

Slide 27

Slide 27 text

(2) t-wadaに感謝!

Slide 28

Slide 28 text

(2) ありがとう!!

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

”本書『 テスト 駆動 開発』 の第 I 部、第II部が特殊な書き方をさ れているのは、 この「 過程」を読者に追体験してもらうためです。 テスト駆動開発の本質 をつかむためには、 まとまった量の、手 を動かしながら学べる良質なチュートリアルが必要なのです。 KentBeck. テスト駆動開発 (Kindle の位置No.5260-5263). Kindle 版. 付録Cより

Slide 31

Slide 31 text

(3)

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

No content

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

(3) TODOリスト≒ テスト項目+リファクタリング項目

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

TODOリストを更新

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

だいたい一緒

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

写経以外にも、TODOリストを追ってみるも おすすめの学習方法!

Slide 49

Slide 49 text

(3)

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

No content

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

大罪!?

Slide 55

Slide 55 text

No content

Slide 56

Slide 56 text

恥知らずにコピー&ペー スト!?

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

No content

Slide 59

Slide 59 text

感情をテストに翻訳する!?

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

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

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

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

Slide 65

Slide 65 text

(4) KentBeck流の Singletonの説明

Slide 66

Slide 66 text

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

Slide 67

Slide 67 text

決してやってはならな い。

Slide 68

Slide 68 text

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

Slide 69

Slide 69 text

以上!!

Slide 70

Slide 70 text

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

Slide 71

Slide 71 text

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

Slide 72

Slide 72 text

(5)

Slide 73

Slide 73 text

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

Slide 74

Slide 74 text

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

Slide 75

Slide 75 text

第 III 部 テスト駆動開発のパターン テスト駆動開発のパターン ● テスト(名詞) ● 独立したテスト ● TODOリスト ● テストファースト ● アサートファースト ● テストデータ ● 明示的なデータ レッドバーのパターン ● 一歩を示すテスト ● はじめのテスト ● 説明的なテスト ● 学習用テスト ● 脱線はTODOリストへ ● 回帰テスト ● 休憩 ● やり直す ● 安い机に良い椅子

Slide 76

Slide 76 text

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

Slide 77

Slide 77 text

第 III 部 テスト駆動開発のパターン xUnitのパターン ● アサート ● フィクスチャー ● 外部フィクスチャー ● テストメソッド ● 例外のテスト ● まとめテスト デザインパターン ● Command ● Value Object ● Null Object ● Template Method ● Pluggable Object ● Pluggable Selector ● Factory Method ● Imposter ● Composite ● Collecting Parameter ● Singletone

Slide 78

Slide 78 text

第 III 部 テスト駆動開発のパターン リファクタリング ● 差異をなくす ● 変更の差分 ● データ構造の変更 ● メソッドの抽出 ● メソッドのインライン化 ● インタフェースの抽出 ● メソッドの移動 ● メソッドオブジェクト ● パラメータの追加 ● メソッド から コンス トラクタ への パラメータ の 移動

Slide 79

Slide 79 text

パターンなので、「全部やれ!」ではなく、 (5)

Slide 80

Slide 80 text

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

Slide 81

Slide 81 text

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

Slide 82

Slide 82 text

自分で考えて選 択!!

Slide 83

Slide 83 text

不安に立ち向かう

Slide 84

Slide 84 text

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

Slide 85

Slide 85 text

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

Slide 86

Slide 86 text

憂鬱な悪循環ループ

Slide 87

Slide 87 text

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

Slide 88

Slide 88 text

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

Slide 89

Slide 89 text

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

Slide 90

Slide 90 text

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

Slide 91

Slide 91 text

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

Slide 92

Slide 92 text

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

Slide 93

Slide 93 text

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

Slide 94

Slide 94 text

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

Slide 95

Slide 95 text

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

Slide 96

Slide 96 text

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

Slide 97

Slide 97 text

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

Slide 98

Slide 98 text

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

Slide 99

Slide 99 text

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

Slide 100

Slide 100 text

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

Slide 101

Slide 101 text

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

Slide 102

Slide 102 text

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

Slide 103

Slide 103 text

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

Slide 104

Slide 104 text

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

Slide 105

Slide 105 text

うぎゃー (5)

Slide 106

Slide 106 text

憂鬱な悪循環ループ

Slide 107

Slide 107 text

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

Slide 108

Slide 108 text

ヒントが3部に! (5)

Slide 109

Slide 109 text

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

Slide 110

Slide 110 text

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

Slide 111

Slide 111 text

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

Slide 112

Slide 112 text

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

Slide 113

Slide 113 text

● リファクタリングを強化してみる ○ 差異をなくす ○ メソッドの抽出 ● 更にTDDのRedGreenRefactorのリズムに近づ く ○ テストファースト ○ アサートファースト ● うまく行かなかったら ○ パターン適用を一旦中断し、適切なタイミ ングで再度チャレンジする 悪循環ループから抜け出し 好循環ループを育てていこう ● 例えば少し制約を緩めて次から始める ○ TODOリスト ○ テスト(名詞) ○ 小さいテスト ○ 明白な実装 ● 実装につまずいたら ○ ”仮実装を経て本実装へ ”で歩幅を小さく するを試す

Slide 114

Slide 114 text

まだ多すぎるというのなら、この2つから 仮実装を経て本実装へ テスト(名詞)

Slide 115

Slide 115 text

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

Slide 116

Slide 116 text

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

Slide 117

Slide 117 text

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

Slide 118

Slide 118 text

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

Slide 119

Slide 119 text

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

Slide 120

Slide 120 text

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

Slide 121

Slide 121 text

(6)

Slide 122

Slide 122 text

(6)電子書籍に注目!

Slide 123

Slide 123 text

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

Slide 124

Slide 124 text

リアル本もいよ!

Slide 125

Slide 125 text

サインがもらえる!

Slide 126

Slide 126 text

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

Slide 127

Slide 127 text

(7)

Slide 128

Slide 128 text

(7)付録Cに注目!

Slide 129

Slide 129 text

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

Slide 130

Slide 130 text

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

Slide 131

Slide 131 text

確認を繰り返すことによって

Slide 132

Slide 132 text

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

Slide 133

Slide 133 text

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

Slide 134

Slide 134 text

それが!

Slide 135

Slide 135 text

No content

Slide 136

Slide 136 text

try and error するほ ど強くなる!!

Slide 137

Slide 137 text

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

Slide 138

Slide 138 text

2018年も未知の領域に対して、 期待と不安の入り混じった感情を もちながらも プログラミングを 楽しんでいきましょう

Slide 139

Slide 139 text

2018も Happy Programming!!