TDD Boot Camp福岡を開催しました

3/19-20に渡ってid:t-wadaさん、id:bleis-tiftさん、id:Akinekoさんをお招きし、テスト駆動開発の体験型勉強会「TDD Boot Camp」を福岡*1にて開催しました。
というわけで簡単なイベントレポートを……と思いましたが、参加者のブログエントリが素晴らしいのでそちらにお任せするとして(おい)、感想を書いていきたいと思います。

参考:TDD Boot Camp(TDDBC) - 《記録》 2011/3/19-20 福岡

新たな試み

偶然な部分も含まれていますが、今回は新たな試みがいくつか行われました。

  • タクト駆動から多人数駆動へ
  • コミュニティバックアップなしでの開催
  • Kanon(Trac)を用いた課題管理
  • 休憩時間中のLT
  • TA(ティーチング・アシスタント)の設置
  • 2日目としてSCM
  • 2日間同じ課題での演習
  • (学生主催のTDDBC)

それぞれについてみていきましょう。

タクト駆動から多人数駆動へ

タクト駆動とは、TDDBCに関係するブログを読んだり、t-wadaさんの言葉を聞いた際の"私の"感想です*2
今まではイベント内容のt-wadaさんへの依存度が高く、かつ1人でカバーできる量は限界があります。これを何とかできないかと思い、bleisさんやakinekoさんにTAや講師をお願いしました。

コミュニティバックアップなしでの開催

私が福岡の……というよりも九州のコミュニティ事情を知らなかった影響もあり、コミュニティによるバックアップなしでの開催になりました。
後述しますが、イベント開催におけるアンチパターンだと感じました。

Kanon(Trac)を用いた課題管理

TDDBC名古屋に参加した際、「スライドが移動していて仕様の書かれた ページが見えない、どうしよう」と思ったことがありました。
Wikiでも構わないかとも思いましたが、仕様などをあらかじめチケットで管理し、ある程度進んだタイミングでチケットを公開することでより臨場感ある演習が行え、かつ楽だろうと考えたのでITSの導入を決めました。
今回使用したものはツールにTracを含んでいる、"プロジェクトの物語を作るツール"のKanonです。
参考:Kanon LAB: Top(計画停電の影響でサーバがたまにダウンしている模様?)

休憩時間中のLT

LTをやりたいという方がいたのですが時間がとれそうになく、でもそれではもったいないと思ったので「休憩時間にやりたい方はどうぞ」とアナウンスしました。

TA(ティーチング・アシスタント)の設置

前述の「依存度をさげる」という目的もありますが、t-wadaさんが.NET系をはじめいくつかの言語をカバーしきれないことを考慮し導入しました。
結果としてJavascriptRubyはt-wadaさんに、.NET系はbleisさんに、Javaはakinekoさんにそれぞれアドバイザーをお願いしました。

2日目としてSCM

名古屋に参加した時に思ったのですが、講演で言及された中でSCMだけが 「あるものとして」扱われていたように感じました。 また、SCM自体やコマンドを知らないことでペアの方に負担をかけてしまった、 ということもありました。そんな中、Twitter上で2日目についての議論でVCSの話がでていたので「これは面白そうだ」と思ってt-wadaさんに相談したのが企画初期の頃です。
相談の結果、何名かを講師としてお招きすることにより至りました。これにより、t-wadaさんへの依存度を減らすことができました。

2日間同じ課題での演習

2日目のイベント内容をSCMにする場合、課題をレガシーコード改善にするには時間が圧倒的に足りないので、2日間を通して同じ課題を使うことになりました。

(学生主催のTDDBC)

私がTDDBCを開催する→私は学生→学生がTDDBCを開催する。ただそれだけです。
まぁ、スポンサーのmikamamaがいてこそできたことなので私の力ではないです。

良かった点

  • Kanon(Trac)を用いた課題管理
  • 休憩時間中のLT
  • TA(ティーチング・アシスタント)の設置
  • FizzBuzzによるウォーミングアップ

この3つに関しては良かったと思います。
課題表示はWebを経由することで見やすくなりまりましたし、仕様変更も容易に変更通知できるようになりました。
休憩時間中のLTは良い息抜きと最近の技術などを聞ける良い機会になったと思います。
TAに関しては、どのペアにも万遍なく多くのアドバイスを行えていた点を考えると、大成功の部類ではなかったのではないかと思います。
あと、1日目初回はTracにアクセスできないというゴタゴタの影響で、急きょ最初にFizzBuzzの実装をやっていただいていたのですが、これが意外と軽すぎず重すぎずでウォーミングアップとしては良かったのではないかと思いました。

反省点

  • コミュニティバックアップなしでの開催
  • 様々な無茶振り
  • いきあたりばったりな対応
  • 2日目について

会場の状況が当日までわからない、特にタイムテーブルを決めていなかったなどが開始時間遅延の主な原因です。そこまで手が回らなかったと言えばそれまでですが、この辺りはスタッフを集めておけば解決できたと思うので、そのあたり反省すべき点が多いです。
講師陣の方々にはイベント会場準備の手伝い、Tracのプロジェクト作成、さらに打ち上げの予約まで行っていただきました。本来ならば私がやるべきところでしたが、これも人手不足の影響なので、次回は人手不足に陥らないようにしないといけませんね。
2日目のSCMについてですが、デモを入れたほうが良かったかもしれません。デモがあるなしでわかりやすさが段違いだと思います(反省点というより改善点ですね)。

感想

ペアの割合はJava 4、OCaml 2、VB/C#/Ruby/JavaScript 1と、参加人数が少ない影響ですごいことに。
あと、ペアプロをしている参加者の活き活きとした表情が印象的でした。
「今回は全体的に若い」という声をちらほらききましたが、母数が少なかったことも影響しているのかもしれません。とはいえ、学生の頃からこういった勉強会に参加しておくと意識改革(もっといくと人生変革)ができるので、どんどん参加すると良いと思います。私もTDDBC名古屋に参加して人生が変わった気がする口です。
今回はペアプロに参加しなかったのですが、演習を見ているとペアプロがすごくしたくなりました。といわけで次回TDDBCは絶対に参加したい。RubyHaskellかF#で!

謝辞

id:t-wadaさん、id:bleis-tiftさん、id:Akinekoさんには講師として、アドバイザとしてだけでなく様々なことを手伝っていただきました。
id:kaorun55さんは結果的に参加することはかないませんでしたが、当日までたくさんのご意見とエールをいただきました。
id:mikamamaには陰に日向にTDDBC福岡を支えていただきました。
#tddbcハッシュタグ上やtddbc ML上においても、過去の参加者や主催者(or幹事)の方からたくさんのご意見をいただきました。
そして参加者の皆様には多くの勇気をいただきました。地震の影響を考慮し一時は中止も考えていましたが、皆様の「開催してほしい!」という声が私に開催する勇気を与えてくれました。


TDDBC福岡に関わったすべての方々に感謝いたします。皆様のおかげでTDDBC福岡を開催でき、また無事に終えることができました。
本当にありがとうございました!

次回

今後のTDD Boot Campは四国、関西、横浜……と、様々な地域で企画されています。
ぜひ参加したいですね!(あと、お手伝いできることがあれば微力ながらお手伝いしたいところです)


ちなみに、2日目終了後の打ち上げ会場で「TDDBCを九州でもう1度やりたい」という話をしてきました。(そもそも勢いで決まったことなので)まだ全然具体的ではないのですが、個人的な考えを少しまとめておきます。

  • 遠方の方を考慮して博多でやりたい
  • でも九州新幹線が全線開通したので鹿児島もアリな気がする
  • 来年といわず年末開催とか(11月末〜12月頭だと皆空いてそうという貴重なご助言を頂きました)
  • もうちょっと演習時間がほしい
  • 個人的にはATDD(Acceptance Test Driven Development)に関しても踏み込んでみたいとかなんとか

あとは佐賀でPost CampとかPre Campをやりたいという話もあるので、これを機にTDDが地方にも普及すればいいですね。

*1:といっても福津市福間

*2:Test-Driven DevelopmentにかぶせてTakuto-Driven Developmentと言ってみたりしています