2012/05/12

組み込みアジャイルコーチのJames Grenningさんが組み込みTDD読書会にやってきた!(あ、Skype会議だけどね

本日、「Test-Driven Development for Embedded C (Pragmatic Programmers)」読書会のスピンアウト企画として、アメリカ・カンザス州にいる著者のJames Grenning氏を交えてSkypeミーティングをやりました。

書籍の感想や読書会の活動内容を伝え、いくつか技術的なトピックについてディスカッションしました。最後、コンピュータサイエンスの修士課程に在籍されている息子さんもTDDをやっているなど、プライベートな話もし、終始なごやかなムードでした。

ディスカッションの中で語った技術的な話は、別途、どこかで記事にしたいと思います。ここではJamesさんとSkypeミーティングをやるにいたった経緯をお話します。

James Grenningさんってどんな人?

著者のブログなどから引用。

プロフィール
http://renaissancesoftware.net/about-us.html
http://www.linkedin.com/in/jwgrenning

  • アジャイルマニフェストの著者17人の一人。
  • プランニングポーカーの考案者。
  • 経験のある分野:weather radar display, FAA control tower displays, distributed automatic testing systems, voice response systems, high-speed cut-sheet printing and communications systems.
  • 1996年からObject Mentor社でXPやアジャイル開発のトレーニングやコーチングに取り組んでいる。( ※未確認ですが、Robert C. Martin氏と一緒に起業した?)
  • 2008年から現在のRenaissance Software Consulting社を創業。アメリカ国内だけでなく、ヨーロッパ方面にも度々カンファレンス参加やトレーニングの仕事で訪問している。
  • 設計、要求、マネジメント、計画、テスト自動化、開発プロセスの改善などの経験あり。
  • "Clean Code”や"Beautiful Team"などの執筆もサポートしている。
  • IEEE software, IEEE Test and Measurement, C++ Reportなどに論文を寄稿。
  • 組み込みやアジャイル関係のカンファレンスの運営をやっている。

ブログ
http://www.renaissancesoftware.net/blog/

論文やカンファレンスの発表資料の一覧
http://www.renaissancesoftware.net/papers.html

アジャイル開発の論文
http://www.eetimes.com/design/embedded/4215538/Agile-embedded-software-development
http://www.renaissancesoftware.net/papers/35-agile-embedded-software-development-esc.html

インタビュー動画
http://www.youtube.com/watch?v=1oIaz7aZsno

講演動画
http://www.youtube.com/watch?v=T8lw0qkXCMc


これまでの経緯(ちょっと長いけど、読書会が始まるところから・・・)

2011年

  • 11月ごろ
    • 大西がTDD Boot Campの盛り上がりに興味をもって、TDD Boot Camp for C++に参加する。t_wada先生が放つジェットストリームアタックにより、あえなく撃沈。
  • 12月ごろ
    • Boot Campのポジペで「Test Driven Development for Embedded Cの読書会をやりたいんですけど、誰か興味ある人いませんか?」と告知したところ、@Catu_dmさん@goyokiさんが名乗りを上げる。

2012年
  • 1月ごろ
    • 第1回の告知をすると、一番最初に著者であるJames Grenning氏が参加希望を表明する謎展開が起きる。
    • あ…ありのまま 今 起こった事を話すぜ!『日本人相手に読書会の募集をかけたと思ったら、最初に参加表明したのがアメリカ人の著者本人だった』な… 何を言ってるのか わからねーと思うがおれも何を起きたのか全くわからなかった…(以下、AA略
    • 3月ごろに日本を訪問されるそうだったが、予定が合わないようなのであえなくお流れ。

  • 3月ごろ
    •  James氏が5月に日本を訪問することになりそうだということなので、読書会メンバーに募集をかける。James氏含めて10名で5月12日に対面して組み込み分野でのアジャイル開発やTDDのディスカッションをする会を開催することが決定。
  • 4月ごろ
    • 当初はインタビュー形式を考えたが、人数が10名程度ということでワールドカフェ形式に変更。事前に質問を書いたポジペを用意して、James氏にも目を通してもらう。
    • しかし、残念ながらJames氏の来日がキャンセルとなり落胆。しかし、Skypeでミーティングすることはできそうということで、引き続き関係者とは連絡を取る。
  • 5月
    •  ついにSkypeミーティングを開催。音声が聞こえないトラブルに見舞われるも、映像とチャットを使って交流。James氏の息子さんにTDDの英才教育をやっているらしき記述を本で見かけたので聞いてみたら、「あいつ、けっこーうまいぜ」と親バカトークに場がなごむ。

意図された偶発性が意図しない偶発性を引き起こす

実際にメールやSkypeで話した内容は後日、James氏や関係者の許可を受けて、記事として公開するよう進めています。詳しい内容は後日そちらを参照してください。  

ここでは一連のやり取りを通して、私が改めて考えさせられたのについて書きます。偶然や偶発性とかいうもの。

私はTwitter上で告知をかけるとき、「組み込みでTDDなんて誰も来てくれない。せいぜい5人くらいでできればいいや。」と思いながら、募集をかけました。組み込みの人でTDDについて話している人なんて、@goyokiさん以外見たことなかったし、あきらかにニッチすぎると思ったからです。

でも、どういう組み込みエンジニアが参加してくれるかは全く分からなかったですが、たまたまTwitterでTDDについてウォッチしている組み込みエンジニアが僕の呼びかけに反応してくれればいいやと思い、Twitterで告知をかけました。 これを「意図した偶発性」と呼ぶことにしましょう。  



しかし、実際には10名近くの人が参加してくれて、こじんまりとしてはいますが、活発な会になっています。何より最初に参加を表明してくれたのが(おそらく書籍タイトルをウォッチしていた)James氏本人だったことに非常に驚きました。「意図しない偶発性」とでも言うのでしょうか? 



世の中どういうことが起きるかわからないですが、関心ごとを同じくする人と一緒に何か面白いことやってみたい!という思いをこめて、Twitterという拡声器を使って呼びかければ、ちょっと予期しなかったような面白いことが起きてくれる。 そんな風に僕は思ったのでした。

さーて、ネタはそろったけど、どんな記事にしようか、、、orz 

2012/05/06

Test Driven Development for Embedded C でペアプロの会 第1回をやりました


本日、「Test Driven Development for Embedded C でペアプロの会 第1回」をやりました。

読書会なので普段は書籍の内容について話し合うことが多いのですが、読書会でサンプルの内容全てを理解するのは限界があると思い、スピンアウト企画としてペアプロの会を始めてみました。
ペアプロの会は演習中心です。実際に書籍のサンプルをTDDをやります。おまけにペアプログラミングをやります。

今日は第8章の「Spying on the Production Code」をやりました。詳しい内容は次回の読書会が終わってからブログで紹介したいと思います。

本日のエントリでは、どんな風に演習をしたかをご紹介します。ちょっとポンチ絵を描いてみました。


演習と振り返りという2つの工程をぐるぐる繰り返しつつ、演習の中では3名が以下の3つの役割をテストケースごとに交代しつつぐるぐる繰り返します。名づけて、ぐるぐるTDD(だっせー><)

  • コードを書く(=ドライバ)
  • コードを描いている様を横で見てアドバイスを出す(=ナビゲータ)
  • もう一人は本を読んで皆の疑問を解決する(=オブザーバ?)
2つ目と3つ目の違いは客観性です。ナビゲータは、ドライバがコードを書いているのを見て、すかさずアドバイスしますが、3つ目の役割の人はナビゲータほど絡んでいかず客観的に場を見ています。で、ドライバとナビゲータの手が止まったり、つまづいていたりすると、参考資料を読んだりして二人の疑問を解決することに専念します。

客観的な視点が入ることと、横で調べている人がいることで、ペアよりスムーズに作業が進んだりするようです。ただ、適正人数は3~4人なので大勢でやるのは向いていませんし、作業ペースは落ちると思われます。皆でじっくり理解しながら進めたいときに向いているかもしれません。

P.S.

このぐるぐるTDDを最初からやろうと思っていたわけではなく、参加人数が少なすぎたので結果的にこういう形になったのですが、意外と面白い体験だったので、次回以降のペアプロの会でも取り入れたいと思います。