5月8日(火)、第20回アジャイルサムライ読書会 札幌道場を開催しました。
参加者は6名。14章 TDD(テスト駆動開発)がテーマです。
ページ数が少ないので15章に入れるかなーなんて思ったけれど、関連することを話し合っていたらあっという間に時間は過ぎるものですね。
充実した時間となりました。
今回の範囲で「グっときた」ところ
意図を伝えるためにテストを書く
勉強会として
TDDはTDDBCが札幌で何度も開催されているのもあり、プラクティスとしてはかなり浸透していると思います(業務で実践できているかはともかく)。
実際に実践している人も多く、ディスカッションではTDDを実践する時の悩みや壁など具体的な問題についての話がたくさん出てきました。
特に繰り返し出てきた話題としては
- テストコードの品質を上げたい
- TDDを適用しづらい部分がある
- テストコードを書く技術がないとTDDは難しい
このあたりでした。
TDDは設計手法かどうか
本書では「TDDは設計手法として実にうまい方法じゃないか」と書かれていますが、TDDは「設計手法」として本当に有用なのかどうかという話も盛り上がりました。
- TDDを実践すれば良い設計のコードが書ける
ではなく
- TDDを実践し続けることで良い設計の仕方が身に付く・設計力が上がる
ではないかという話になりました。
TDDを実践すればすぐにうまい設計ができるわけではなく、TDDは設計の力を上げるのによい訓練方法であるという考えは忘れないようにしたいです。繰り返し身につけていくことが大事ですね。
実際に体験してみて感じるのは、ちょっとTDDをやらなくなると一気に力が落ちること。
継続していかないとすぐに衰えてしまう気がします。
TDDとBDD
「TDDとBDDの根本的な違いって何?」という話も出てきました。
色々な解釈はあるのですが
- TDD: テストコードを書くタイミングと設計するタイミングが同じ => インターフェースを決めないとテストが書けない
- BDD: 最初に振る舞い(ストーリー)だけを考え、その後コードを書く => ソースコードを書くまでにワンクッションある
という区別の仕方がしっくり来ました。
そしてその分類で考えると、RSpecはどちらかというとTDD寄りのテスティングフレームワークなのかなーという話になりました。
BDDとしても使うことができるけど(テストが自然な文章になっているから)、検証したい目的からするとTDD用のフレームワークなのかなぁと。
RSpecのサイトには以下のように書いてありました。
—–
RSpec is testing tool for the Ruby programming language. Born under the banner of Behaviour-Driven Development, it is designed to make Test-Driven Development a productive and enjoyable experience with features.
—–
(RSpecはBDDの旗印のもとに生まれたテストツールであり、TDDが生産的で楽しい経験となるような特徴を持つよう設計されています) — 翻訳はirasally
RSpecよりもさらにBDDに特化したテスティングフレームワークがCucumberであるという位置づけの理解です。
詳しいディスカッションの内容はwikiを見ていただきたいと思います。
運営の立場で
いやー、20回ですよ、20回。
途中で挫折せず、読書会を20回続けてこれたということに驚きつつほっとしています。
(20回で本書が終わっていないというのはおいておく)
これも、各回に皆様が時間を見つけて参加してくださっているからこそです。感謝。
残りあと数回ですが、ラストスパート、良い時間となるようにしていきたいと思います。
今回のディスカッションは以下のページにまとめてあります。
https://github.com/agile-samurai-ja/support/wiki/Readingagilesamuraiinsapporo20120508
いつも会場を提供していただいている弊社、今回もありがとうございます。
残り数回ですが、よろしくお願いします。