TDD Boot Camp 東京 for C++ に参加 & 講演してきました。
最初はサポート要員としての参加だったのですが、和田さんより講演の依頼をいただきました。せっかくのお話なので、和田さんの部分の講演をしてきました。
スライド
今日のスライドです
TDDのサイクルの絵は id:shuji_w6e さんからいただきました。急なお願いにも関わらず、快く受け入れていただきありがとうございました!
最初の講演内容について
実際にやってみて、最初の講演はこういうのがいいなぁという漠然とした感想です。今後のアウトライン参考になればうれしいです。
- TDDBCとは
- TDDBCとしてやるばあい
- ペアプロについて
- 議論(レビュー)について
- ほかの人のコードをみましょう
- TDDの概要
- テストの分類
- 動作するきれいなコードへの道
- TDDのサイクル
- TDDと黄金の回転
- TDDのこころ
- ひとつずつ、すこしずつ
- 複数を相手にしない。一人ずつ対処する
- すばやくまわす
- 自分が最初のユーザー
- 不安をテストに
- 祈るのではダメ
- 安心して飛び込む
- TDDの目的
- 健康
- コードの健康
- 開発者の健康
- 変化への対応は、健康なコードと開発者から生まれる
- TDDはスキル
- 量を質に転化させる
- 実演
- 黄金の回転の一回転を実際にやってみる
- バージョン管理を取り入れている場合は、コミットのタイミング(テストが成功した後)も一緒に実演する
- TODO:あとでスライドテンプレートを
作る-> 作ったので、一番下に追記
- TODO:あとでスライドテンプレートを
躾について
今回お話しした「躾」ですが、かなり前から心にあるものです。
海外のかたの講演を聴いていると、「いかに顧客に価値のあるソフトウェアをデリバリーするか」に焦点がおかれています。そして、その前提として、バージョン管理やプロジェクトマネジメント、自動化されたユニットテストがあるようです。「TDD」ではなく「自動化されたユニットテスト」なのは、最終的な成果として「自動化されたユニットテスト」が必要であって、そのタイミングがコードを書く前であるか、後であるかは重要視していません。
なので、バージョン管理やユニットテストは「効率化」ではなく、「必須」のスキルだと思っています。
その上でCIなどの技術があると思っています。しかしながら、継続的デリバリーに注目が集まる中、CIレベルも必須のスキルになっているのが現状かもしれません。
詳しいことはこちらにも書いています
ただ、最近の感覚として、タスク管理については、TracやRedmineといったツールは、ソフトウェア開発のアジリティがあがると、重くなってくるので、Pivotal Trackerのようにフィーチャーを適切に管理し、タスクレベルはアナログがベストなんだろうなぁと思っています。
所感など
実際に講演やデモを通して、自分が思っている以上にはTDDのスキルが身に付いていると感じました。TDDがスキルであることを実感した記念日です:-)
とはいっても、和田さんのレベルはとても高いので、今後も精進していこうと思います。
C++の実演
C++でTDDのサンプルと、スライドを作ってみました。ポイントごとのスライドと、その状態のコミットにしてあります。pptxファイルとC++のコードを入れてますので、使えるようであればお好きに使ってください。
VS2010で、すぐに使えるGoogle Test/Mock一式はこちらです