The Seasar Project チーフコミッタひがやすをさんとの対談の後編です。
テストの考え方
弾:(Seasarの開発に際して)テストについては精査してます? テストってどうしても開発者のご都合主義になっちゃうんですよね。エッジケースをそれとなく無視したり。
ひが:私は、クオリティコントロールという意味でのテストっていうのは、そんなには重要視していなくて。テストが必要なのは、私がフレームワークを作るときでいうと、使われる側っていうか、そのクラスを使う側になるじゃないですか、テストコードを書くときって。
弾:問題は、そのテストが、自分の想定シーンをすべて含んでいるのだろうかということですよね。
ひが:その辺、私は割り切っていて、別に漏れがあってもいい。それはしょうがないと。人間がやることだから、最初から漏れなくテストしようとすると、テストを書くこと自体が心の重荷になってテストの質そのものも悪くなってくるから、パーフェクトを目指さずに、ある程度抜けがあってもしょうがないけど、自分にしては満足のいくテストを書いたよ、というぐらいで、あとはテスト漏れがあったらバグとして表面化したりすると思うので、そのときに修正すればいいかと、割り切ってます。完璧目指すと、心が疲れちゃうので。
弾:なるほど。ところで、JavaのテストだとTODOとかSKIP[1]っていうのは実装してます?
ひが:Eclipse上でTODOのマーキングが出ます。
弾:あれは救いですよね。特にTODOは。
ひが:ストレス貯めずに、テストを書くルールがあってもいいかなと思うんです。
弾:とりあえず、だから動かなくてもすぐには困らないというものは、TODOにしとけと。それでもTODOを書いておくのは重要で、いつかはこいつをクリアしたいという目標ができるじゃないですか。まず最初はTODOとして書いておいて、少しずつ動くようにしていくと。HOT Deployというのは、そういう意味ではもっと早く欲しかった機能だと思います。なんか動いた、というのが一番のごほうびですよね。
ひが:そうなんですよ。フィードバッグが早いというのは、非常に開発としては心が楽しくなります。
OSS開発にかける時間
弾:ところで、開発は仕事の時間で済ませて、家にはパソコンがないそうですけど、Seasarの開発は仕事の時間だけでできるんですか?
ひが:実際に開発している時間って結構短くて。ほぼ打ち合わせだとか、メール読んだり。それから、世の中の人が何を求めているかっていうようなことの調査とか、そういうのに結構時間を使っているんですけど、それだけやっていると飽きるんで。その合間に、飽きないようにコードを書くんですよ。そんなに書いてるコード量はたくさんないので、実現するのは結構短い時間でできる。
弾:家の中でいいネタ思いついちまった、っていうことありませんか?
ひが:ありますよ。でもそれは、会社に行ってから。
弾:これ、すごい尾籠なたとえで申しわけないんですけど、トイレをガマンできるか。便意がきたらもうすぐトイレに行くか、とりあえず会社まで我慢できるか(笑)。
ひが:ガマンするしかない(笑)。
弾:(笑) ハッカーの多くは、いわゆる「タメフン」ができないタイプが多くて。
ひが:(自分は)家では、ほとんど考えていないですね。仕事やオープンソースのことはほとんど…。
家での過ごし方
弾:家ではどんな話されてます?
ひが:TVの話題とか…。
弾:間違ってもどこのブログが炎上してるとか、そういうことは(笑)
ひが:(笑) 仕事の絡みの話はほとんどしてないです。
弾:この世界、公私をきちっと切り替えられる人って少ないんですよ。それで身体を壊しちゃったりする人ってあとをたたないんで、そういう人たちに、こうすれば健康で過ごせますよ、っていうことはありますか。
ひが:やっぱり家族とか、そういうのは大事なので、それを壊してまでオープンソースだとかをやるのはどうかなと思うんですよ。(自分の場合は)家族が一番大事なので、次が仕事だとかオープンソースで。ハッカーらしくないと思うんですけど。
弾:それでいいと思いますよ。実はすごいハッカーほど家庭円満だったりしますし、Larry Wall[2]もMatzさんも…。しかもそれがちゃんと仕事の幅にもなってますから。