java-ja札幌できました!?

土曜日の件ですがjava-jaの勉強会(第2回TDD会)をustでみていました。
ペアプロ+TDDで実際にプログラミングすることがメインと聞いていたのでustではあまり期待はしていなかったのですが、観てみるとt_wada氏のセッションが予想以上に長くて非常に楽しめました。そこで聞いたTDDのこころや興味深い話のメモと、そのままのノリで日曜日にやった第1回java-ja札幌のレポートをお送りします。

TDD(テスト駆動開発

TDDも紹介されてから随分と経ちますので話には聞きます。ですが、実践はしてたことないという人が多い都市伝説みたいなものがTDDかと思います。自分もRuby on Railsでの開発の時に1回やった程度です。魅力は感じるのですが時間に追われたりやり方が解らなかったり、なにより周りに実践している人が少ないのが原因でしょう。
以下はt_wada氏の話していたポイントのメモです。ustで聞きにくい場所とかもあったので全ては網羅していませんが備忘録という形で簡単にまとめました。

TDDのポイント
綺麗で動作するコードへの道
  • 「汚くて動かない」コードから「綺麗で動く」コードへ変えていくには2つの道がある。
  • 綺麗にしてから動かすか、動かしてから綺麗にするか
  • TDDは後者(動かしてから綺麗にする)のアプローチをとる
  • 綺麗にする = リファクタリング(テストがリファクタリングを担保)
  • レッド-グリーン-リファクタリング
ソフトウェア開発の3本柱

どれが抜けてもうまく回らない。

TDDのこころ
  • 1つずつ少しずつ
  • すばやくまわすこと
  • 自分が最初のユーザとなる
  • テストをおこなうことで不安がなくなる(セッター等は不安が無いのでテスト不要)
IDE重要
  • 脳は無駄なく使う
  • Eclipseは空気読める子(Ctrl+1 Ctrl+SPACE)

第1回 札幌java-ja

先週の木曜日くらいから、日曜日にかるく集まって雑談かコーディングかなにかしよう、という話がありました。なにをやるかは未定だったのですが、自分が土曜日にjava-jaに感染した為に日曜日は札幌java-jaの開催となりました。尚、勝手に開催を名乗っていますが、まったくもって許可を取っていません。
場所はアイカフェのシアタールームを使用しました。無線LANもあり電源も確保でき、フリードリンクでおにぎり・ドーナッツ・ソフトクリームが食べられるため、5時間で1900円はまあ悪くない値段かと思います。シアタールームなので大画面(40インチくらい?)の画面もあるのでプロジェクタ代わりにも使用できます。問題があるとすれば、定員が6〜8名程度ってことですが、まったりとペアプロするには4〜6人がちょうどいいのでしょう。当日は4名が集まりました。

はじめてのペアプロ

軽く自己紹介をした後にペアプロです。お題はどうするかを考えたのですが、wikiフォーマットの文字列をhtmlに変換するクラスを作る事になりました。
ペアプロ自体は4人中2人が経験あり、Javaは同じ2名が経験ありでもう2名がどちらもなしです。なので組み合わせ的には経験者+未経験者というペアで行います。ペアプロをやってみるとわかるのですが、実は経験差のあるペアの方が少なくとも学習としてはベターです。未経験者は経験者の技を盗めますし、経験者も未経験者がどこで詰まるのかを知ることができます。この「どこで詰まるか」に関しては特にプロジェクト管理(チームリーダー)の立場からすると、全体の品質向上とチームの効率アップに繋がる重要なポイントです。

まずはテストクラスを作成といことでJUnitを使ってテストクラスを作ります。この辺りでEclipseの経験がない人からすると不思議な作業のようです。なによりCtrl + 1を押せば次にやる作業は「だいたいあってる」のですからEclipseは本当に空気の読める子ですね。尚、今回はペアで1つづつ作業したら別のペアがまた1つづつ作業をする形を取りました。少人数の場合でまだなれていない場合はペア+傍観者という形でやる方が流れがつかめていいかもしれません。

リポジトリ

コードの共有にはSVNリポジトリを立てて対応しました。1つパブリックな場所にリポジトリを立てておくと勉強会などでは便利ですので、オススメです。リポジトリのURLは http://www.deathmarch.jp/svn/sjc/wiki_engine/trunk/ になります。一区切りつけたらコミットというサイクルでやっていましたので、途中経過などを確認したい方はご覧ください。

感想

まず4名という人数はちょうど良かったです。たぶん4〜6名が部屋のキャパシティ的にもペアプロのようなワークショップをするにも最適な人数なのかもしれません。今後も勉強会がないような日など、ちょっと何人か集めて勉強会というのはやっていきたいですね。機動力勝負ですから前日に募集とかありでしょう。
次にお題です。参加者のレベルにも依存しますが、なにをやるかは一番重要かもしれません。今回はWikiのフォーマット変換だったのですが、テストケースを作るのは非常に簡単でした。ところが、実装は文字列処理になりなかなか骨が折れるところだったです。他にもショッピングカート的なクラスとか計算機とかあるかと思いますが、幾つかネタを用意しておくと良いなと思いました。
ペアプロに関しては概ね好評で楽しんでいたようです。都市伝説かと思われがちですが、例え仕事で出来なくとも趣味でペアプロってのも良いのではないでしょうか?

KPT

Keep
  • 突発でも大丈夫
  • とにかく開催することが重要。
  • ペアプロとTDDいいね!
Problem
  • ネタはあらかじめ用意しておく
  • Eclipseプラグインとかインストールが必要なものはあらかじめ準備
  • 会場費はちょっと高めだけど、フリードリンクとおやつがあるし・・・
Try