java-ja 第八回 第一回チキチキ 日本ペアプログラミングの会java-ja支部会に参加してきました

java-ja 第八回 第一回チキチキ 日本ペアプログラミングの会java-ja支部会に参加してきました。
というより、この回は、元々僕がデブサミ(デブのサミットに非ず)で和田さん(id:t-wada)の「デベロッパーテスティング・ライブ - 自信を持ってコードを書くための心・技・体 -」のセッションに参加したのがきっかけ。
そのセッションが非常に興味深く、セッション後のスピーカーへの質問ブースに行って、色々質問して、さらにペアプロまでしていただいて、さらにさらに、その後に、twitterjava-ja で今日の内容を聞きたいというのが盛り上がり、@t_wada さんをお呼びして、java-ja で第八回 第一回チキチキ 日本ペアプログラミングの会java-ja支部会を開くことにあいなりました。


本当に、id:t_wada こと id:t-wada こと @t_wada さんには感謝です。


内容などについては、出遅れたので他の方の感想をみていただくのと、http://java-ja.yoshiori.org/index.php?%E7%AC%AC%E5%85%AB%E5%9B%9E%E3%81%AE%E3%83%95%E3%82%A3%E3%83%BC%E3%83%89%E3%83%90%E3%83%83%E3%82%AF
和田さんの資料を参考のこと。
http://d.hatena.ne.jp/t-wada/20080224


あと、ニコニコ動画に、ニコニコ動画の中の @coji さんがアップしてくださったので、それを参照していただいたほうが良いかと。
http://www.nicovideo.jp/watch/sm2430789


というわけで今回の内容については詳細な情報がたくさんあるので、僕の感想を書く。デブサミの感想でもあるんだけども。


今まで、基本的には xUnit で単体テスト書く人であったし、例えば java 以外で、Rails で開発していたときも、きっちりとテストは書いていた。
が、TDD というわけではなかったんだな。と、今回の和田さんの講演を見て衝撃を受けた。


上記、資料などを参考にして欲しいけど、本当に小さい単位で、Think/Red/Green/Refactor を回していく感覚がすごかった。これは楽しい。
楽しいって感覚はいいね。なんで楽しいんだろ,人間の感情って報酬系だから、報酬のフィードバックがすぐに得られるから楽しいのだろうか。
不安が無くなるから安心できて楽しいんだろうか。とにかく僕はこのやりかたは楽しく思えた。
生産性が云々とかも重要だけど Fun であることも重要じゃまいか。


それでもやっぱり、テストを回していく単位については考えることがたくさんあって、、Think に時間をかければ、僕がここ数年コーディングしてきた内容は、多くの場合(、脳内にあるコードを書き込むだけの仕事だった気がして、仮実装って必要なのか?って気がしなくもない。
仮実装/三角測量/明白な実装を使い分けるには、やはりスキルが必要なのかな。
その辺りのスキルを磨くために、「テスト駆動開発入門」を読みはじめた。


xUnit が必要なのは、もはや議論の余地が無いレベルだと思うんだけど、テストを先に書くかどうか、今回の講演にあった単位でThink/Red/Green/Refactorを回していくべきかは、もっと和田さんに話を聞きたい。
あとは、脳内でコード書いて、リファクタ的なことを脳内で行ってから、実際にコード書いて、テスト書いてしまうんだけど、脳内ではどこまで行うべきなのか、なんで脳内ですべきじゃないのかなどについて今度お聞きしたい。


他に気づきとしては、他の人も言及してるけど、Eclipse の知らなかったキーバインドが便利すぐる。
エディタとして Eclipse あんまり使ってなかったから知らなかったこととか多かったので、覚えておくべきものたくさんあった。
まぁ、結論としては、Eclipse では Ctrl + 1 (Win) を使えって話に落ち着いてたけどw


で、和田さんの講演が終わったあとに、ペアプロ大会!

いやー、あんなうまくみんなペアが出来るとか思ってなかった。開催される前ドキドキしてたんだけど、みんなすごいな。
お題とかも、何も考えてなくて、「迷ったら、FizzBuzz拡張して〜。とか、どう書く.org の内容で〜とか、ボーリング問題で〜」とか思ってたんだけど、結構みんな普通にお題考えたり用意しててすごいなって思った。

僕は、非常に恐れ多くも @coji(id:coji) さんとペア組ませていただきました。
ニコニコ動画には一生、足向けて眠れないです(どの方角だ?!w)


内容は、角谷さんが Ruby札幌でも発表していた、
http://kakutani.com/20080219.html#p02
ボーリングのスコア算出についての問題をやりました。


ruby 初心者の俺が、初めて RSpec を使いつつ、@coji さんとペアプロという胃が痛くなる状況w
なにせ、最初にやったことが
>gem install rspec


そうそう、和田さんおっしゃってた、ドライバとナビゲータは1分以下で組み替えるという話があったので、
おおむね実践した。
正直1分とかびびった。いつも、短くてもせいぜい15分ぐらいで組み替えしてたのに、1分以下って。


でも、なんとか1分目標に @coji さんとペア交代しながらやった。
死ぬほど楽しかった。
1分以内で交代するには、1分で交代できるだけのゴールが必要。
1分以内に終わるゴールをちゃんと設定して、それを実行するのがすごく楽しかった。


あと、気づきとしては、やはりペアプロの問題のひとつは、環境の問題って大きいなって思う。
@coji さんはいつもは英語キーボードとのことで、日本語キーボードに苦戦してた。
ペアプロのときって切り替え機とかで、キーボードやらマウスとか切り替えたほうがいいんじゃまいか。

で、途中でペア交代があった。ペア交代をちゃんと盛り込めて良かった!

ペア交代して、id:gakkiy さんとそのまま ruby でボーリング問題の続きやった。gakkiy さんは IDE脳の恐怖に襲われていて、Emacs 系の俺のエディタに四苦八苦しておられた。やはり、環境の問題をどうするかはペアプロをやる上で非常に大きい問題なんだなと思った。


その後懇親会行ったわけですが、その模様も他の人のブログ参照で。簡単に言うと。
java-ja 自重
・@yamashiro がリア充とかすげー広まって俺なみだ目。java-jaの本当のリア充は他にいるんだぜ。
・@takai がくねくね
・t_wada に爆発しろって言われた俺なみだ目。
id:yuripop に本気で dis られてないか dkdk
・次のjava-jaの懇親会であの店使えるか心配