TDDBCで僕が持ち帰ったもの
どうも、きくかわさんです。
TDDBC(Test Driven Development Boot Camp)に参加してまいりました!
仕事以上に疲れた。俺いつも手抜いて仕事してたのか‥って思うくらいには。
・参加への理由
TDDってテスト駆動開発の事ね、はいはい。。。で?詳細は知らないよ?
ってなったので参加してみた。いつもそれっぽいことはしてるけれど、TDDについて説明できない =「つもり」を解消したかった。あとは、、、ペアプロ久しぶりにしたかったんです。はい。
・TDDBCの目標(あくまで個人的な見解)
今日のテーマは、気軽に!だった。
そして、TDDBCはこう謳ってます。
TDD Boot Camp(TDDBC) とは、テスト駆動開発(Test Driven Development)について、座学だけでなく、実習形式で手を動かして体得することを目的とするイベントです。
TDDを体得すること!!
つまり、2回目の受講者としての参加は、この人たちにとっては責務を果たせてないらしい。 きっとTAの人たちへの一番のお礼は、次TAとしての参加なんだろう。
・内容
最初に講演、TDDのこころ(タイトル忘れちゃった)をご静聴。irofさんのスライド、名言的なの多くてめっちゃすこ。(変な意味はないです。)
続いてデモペアプロをご騒聴。完全コントでした、これは褒め言葉です!コンビ名は左右らしいですよ。
あとはTDDペアプロで50分、振り返り10分を3回転。集中してたからかな、なかなかキツかった。
コードレビューして全体振り返りして、びあばっしゅ。
まぁ色々割愛。
・感じた事
TDDってこんなに難しいの?って。ペアプロも取り込んだから余計に難しく感じのかな。テーマは気軽に。ちなみに気軽の意味は
こだわったり面倒がったりしないで行動に出るさま。また、堅苦しくなくて、気がおけないさま。
気軽にはまだなれなかった。こだわるし、面倒だし、堅苦しい。でもTDDスキルを身につけることで解消できそう。むしろ思想?が好きだから今後とも寄り添っていきたいと思うよ。
あと、Clean code that work. (動作するきれいなコード)って言葉。
誰もが望む事だと思うけど、実現できる人はどれだけいるんだろう?ってそんな感じ。
・僕が今日TDDBCで得たもの
1. TDDのルール
- 重複を取り除く
- 新しいコードを書くのはテストが失敗してる時だけ
2.テストパターン出しの助けになること、要素、心がけ
- 不安をテストする
- ToDoリストを作成し、それをテストとする (最初に作りすぎるより、ある程度出して、他からのフィードバックを元に追加していく)
- 引き返す (テストをしていると、「あれも、これも」となる。そうなる前に、「一息ついて」「前に戻って」「小さなステップを意識する」)
3. TDDのサイクル
RED -> GREEN -> REFACTORINGのサイクルに乗っとって実装していく。それぞれのSTEPで気にすべきことがある。
RED
- Assert First (最初にassert書け。話はそれからだ。)
- Dog Fooding (自分が作った料理の味見してみ?ってことかな。)
- エラーを観察しょ。。。 (エラーログが自分に何を訴えているのか見定めよ)
GREED
- 仮実装 (なりふり構わずテストを通せ。話はそこかr)
- 三角測量 (すみません、これよくわからない。)
- 明白な実装 (一息でコードを書くが吉。実装方法が明白なら出来るでしょ?)
REFECTORING
- 容赦のないリファクタリング (コードの悪臭を感知して早期に取り除く。)
- テストのリファクタリング (テストも同じように、悪臭を放ちます。プロダクトコードをテストコードとして、テストコードをリファクタしましょう!)
- リファクタリングの止めどき (次のテストを通すために変更箇所が1箇所なら止めていい。)
簡単に説明すると
テストを書き、テストを通すためのそれなりのプロダクトコードを書き、通ったらプロダクトコードをきれいにする。これの繰り返し!
以上、今日の収穫です。 三角測量が本当わからない。。。
まぁできるできないは置いといて、チャレンジ精神と取り組みのルールはいただきました。ありがとう!
・あとがき
Developer Testing
開発者が開発者のために,
自分自身のために, もしくはチームメンバーのために行うテストです。
これもすこ。(横文字名言の好きさ加減がハンパない気がする)
不安を解消してくれる奴っぽいし、しもふりにく沢山与えて仲間にしたいよねー。
「つもり」は多少改善された「つもり」
これ堂々巡り!!
あ、TAの皆さん、会場貸してくれたFirst Serverさんありがとう!
届け、俺の感謝の気持ち。