ブログ@kaorun55

HoloLensやKinectなどのDepthセンサーを中心に書いています。

TDD Boot Camp 東京 for C++ に参加 & 講演してきました #tddbc

告知 TDD Boot Camp 東京 for C++ on Zusaar
Togetter TDD Boot Camp 東京 for C++ まとめ #tddbc - Togetterまとめ
お題 TDD Boot Camp 東京 for C++ 課題
Git入門 t-pot『Git入門-「TDD Boot Camp 東京 for C++」向け-』
当日のまとめ TDD Boot Camp(TDDBC) - TDD Boot Camp 東京 for C++

TDD Boot Camp 東京 for C++ に参加 & 講演してきました。
最初はサポート要員としての参加だったのですが、和田さんより講演の依頼をいただきました。せっかくのお話なので、和田さんの部分の講演をしてきました。

スライド

今日のスライドです
TDDのサイクルの絵は id:shuji_w6e さんからいただきました。急なお願いにも関わらず、快く受け入れていただきありがとうございました!

最初の講演内容について

実際にやってみて、最初の講演はこういうのがいいなぁという漠然とした感想です。今後のアウトライン参考になればうれしいです。

  1. TDDBCとは
    • TDDBCとしてやるばあい
    • ペアプロについて
    • 議論(レビュー)について
    • ほかの人のコードをみましょう
  2. TDDの概要
    • テストの分類
    • 動作するきれいなコードへの道
    • TDDのサイクル
    • TDDと黄金の回転
  3. TDDのこころ
    • ひとつずつ、すこしずつ
    • 複数を相手にしない。一人ずつ対処する
    • すばやくまわす
    • 自分が最初のユーザー
    • 不安をテストに
    • 祈るのではダメ
    • 安心して飛び込む
  4. TDDの目的
    • 健康
    • コードの健康
    • 開発者の健康
    • 変化への対応は、健康なコードと開発者から生まれる
  5. TDDはスキル
    • 量を質に転化させる
  6. 実演
    • 黄金の回転の一回転を実際にやってみる
    • バージョン管理を取り入れている場合は、コミットのタイミング(テストが成功した後)も一緒に実演する
      • TODO:あとでスライドテンプレートを作る -> 作ったので、一番下に追記

躾について

今回お話しした「躾」ですが、かなり前から心にあるものです。
海外のかたの講演を聴いていると、「いかに顧客に価値のあるソフトウェアをデリバリーするか」に焦点がおかれています。そして、その前提として、バージョン管理やプロジェクトマネジメント、自動化されたユニットテストがあるようです。「TDD」ではなく「自動化されたユニットテスト」なのは、最終的な成果として「自動化されたユニットテスト」が必要であって、そのタイミングがコードを書く前であるか、後であるかは重要視していません。


なので、バージョン管理やユニットテストは「効率化」ではなく、「必須」のスキルだと思っています。
その上でCIなどの技術があると思っています。しかしながら、継続的デリバリーに注目が集まる中、CIレベルも必須のスキルになっているのが現状かもしれません。
詳しいことはこちらにも書いています


ただ、最近の感覚として、タスク管理については、TracRedmineといったツールは、ソフトウェア開発のアジリティがあがると、重くなってくるので、Pivotal Trackerのようにフィーチャーを適切に管理し、タスクレベルはアナログがベストなんだろうなぁと思っています。

所感など

実際に講演やデモを通して、自分が思っている以上にはTDDのスキルが身に付いていると感じました。TDDがスキルであることを実感した記念日です:-)
とはいっても、和田さんのレベルはとても高いので、今後も精進していこうと思います。

C++の実演

C++でTDDのサンプルと、スライドを作ってみました。ポイントごとのスライドと、その状態のコミットにしてあります。pptxファイルとC++のコードを入れてますので、使えるようであればお好きに使ってください。

VS2010で、すぐに使えるGoogle Test/Mock一式はこちらです