java-ja15回で考えたこと

 イベントレポートとかは他に挙げている人が多いので割愛。ここではjava-ja15回で挙がったネタとかで想起されたことを書くことにしよう。プログラマの馬鹿話ってこんなんだぜ的な。

宮本武蔵はアジャイラー説

 宮本武蔵五輪の書アジャイルを説いているという説。僕は五輪の書を読んでいないので判断は保留。先物相場が世界に先駆けて日本で生まれていたみたいな突飛な面白さがあっていい。会場でも賛否両論と言った感じの反応。

 武蔵の肖像画が理解できない人は少なかったみたい。Seasarカンファレンスでネタを飛ばしたら全然理解してくれなくて会場が凍った話とか。たとえ話を出してたとえをみんな知らなかったら確かに泣ける。@cactusmanが今日はスーツコスプレですとか言って会場を凍らせた話も。僕らがそもそも少数派だから会場でネタを言う時は身内で通じたからと言って安易に語ってはいけないというありがたい話。

 @t_wadaはスティール・ボール・ランネタを随分ちりばめていたけども、会場で手を挙げてもらったらネタが分かる人は4割ほどだった。ジョークは共通の知見なしになりたたない部分がある。会場の客層って本当にわからないよね。「黄金の回転」というキーワードをしきりに言っていたけどこれもスティール・ボール・ランのネタ。

 そういえば @monjudoh がプログラマー風林火山じゃなくてプログラマー風林火豚として豚プログラマを定義すべきだ的なことをしきりに主張してた。火と風のプログラマーがいたら炎上するに決まってるとか、プログラマのジョークってのはこんな感じ。

三種の神器は揃えなくてもラスボス倒せそう

 java-ja富山のときの@yoshioriのセッションではTDDの「レッド」「グリーン」「リファクタリング」を「三種の神器」と言っていたけど、@t_wadaが言うには「三種の神器は揃えなくてもラスボス倒せそう」

 @t_wadaは三本柱と言うべきだと主張。ちなみにプロジェクタで映し出されていたのは足が3本のタイプの椅子。ひとつ折れると倒れてしまう感がいいらしい。

 自分は三角鳥居*1を立ててTDDの神様を祭ろうぜ的などうでもいいことを考えていた。日本は八百万の神様を祭る国なんだからTDDの神様もきっといる。

Eclipseは空気を読む子

 TDDの話になるとEclipseのCtrl+1の話題が盛り上がる。Eclipseのコード補完はかなり強烈で、世の中のTDD本を写経する時にEclipse上でやると恐ろしく手間が省ける。テストコードをまず書いてコンパイルエラーになったところでCtrl+1を活用すると実装コードを補完で埋めれてしまうので異常に作業が速い。

 高いものは機械化できないもの、安いものは機械化できるもの、というこのご時世に、プログラミングも機械化できるところは機械化するべき。

 このコード補完、もちろん完璧なわけではないのだけどCtrl+1やCtrl+spaceの際の空気の読みっぷりは定評がある。状況を察してプログラマが多く採用するだろう案を上に出してくれるのだけど、これが結構よく当たる。Eclipseの提案力を見習わないといけないぜ!

 Eclipseの補完を使えない人ってのは、携帯電話の入力補完も使えないんだぜきっと、的なdisりとか、まぁこのあたりはネタに困らない。

 あぁそうだ。誰かTDD用のEclipseショートカットまとめとかやってくれないかなぁ。自分はショートカット弱いです。ペアプロした@yamashiroは僕のノートのキーボード配置に弱かったです。サクサク感をUstできなかったことをここにお詫びします。

TDDの動画

 YouTubeに結構あがってるみたい。http://video.google.co.jp/videosearch?q=test+driven+development#

 ただ、ほとんどが英語。そしてこのあたりは文字情報でいくら説明してもピンとこない。動画で見るのが一番かも。エディタの便利さみたいなのも動画で説明しないと分からないかもしれない。

fake itはテストのテスト

 TDDでテストを書いた時にfake itと言って固定値を返す、馬鹿にしたような割り切った実装でJUnitをグリーンにするというのがあるのだけど、これはテストコードのテストになるという哲学的な話。TDDではコードを書くのはJUnitがレッドのときだけ。テストケースを直すのにテストのテストを書くのか、そんなことしたら無限にテストを書かないといけないみたいな面白いテーマ。

 テストコードはDRY原則であるべきか的な話も。テストのリファクタリングをするにはテストのテストが必要で(以下略

 まぁケースバイケースでいいんじゃないのという話。

@nagiseのネクタイ

 当日僕が締めていたのはリングタイと呼ばれるもの。懇親会で酔っ払い風に頭に巻いたらどうなるか、という話がでてやってみたところ、バンダナに見えるという話になって、そう言えば最近秋葉でバンダナとか見ないよな、あ、俺こないだ見たぜ的な流れに。

ビールのピッチャーはひとりひとつ

 人数23に対してトータルで注文したピッチャーの数が27とか。あ、僕はビールほとんど飲んでませんよ。最初からウィスキー飲んでた。ダブルで3杯。@yoshioriはコーラをピッチャーでダイレクトに飲んでた。

ドミニオン初体験

 @t_wada邸に泊めてもらった。多謝。

 んで@cactusmanが用意してきてたドミニオンを@t_wadaと@onkとプレイ。@onkはずっと船を漕いでいた。@t_wadaはしきりに「なるほどなるほど」とルールの設計に興味を示していた感じ。僕はデジタルなビデオゲームが専門だったけど*2これはこれでよく練られていると関心。

 Amazon CAPTCHAのような本はいつも海外からやってくる。日本のゲーム産業大丈夫か?と心配になる、みたいな話をしていた。僕らは業務系だけど、ゲーム系のアルゴリズムもある程度分かる。ポリゴンとかもかけたりする。好きでプログラマやってる人間にとっては常識みたいなアルゴリズムも、業界人なのに知らないという人が結構いたりする当り、技術者の偏りというか教育の難しさと言うかなんというか、いろいろ考えさせられる。

朝ごはん

 秋葉原で朝ごはん。もう昼だけどな!

 流れるようなインターフェースについて熱く議論したりとか、新しい言語を作るならどういう構文にするかとかそういう議論を。

 Java屋が多いせいか、静的言語の強みであるIDEサポートの強力さには肯定的な意見が多い。LLのほうがむしろ重たいとか。Javaの型システムとかリファクタリングとか息を吸うように扱える人間の言い分かもしれないともちょっと思った。そもそもTDDの3本の柱のうちの1本、リファクタリングってすでにハードルがかなり高いような。

 Javaで流れるようなインターフェースを扱う場合は型システムを利用して、次の文脈で扱えるものはコレ!ってのを自動補完で扱えるようにするんだけど、LLの場合はそれができないので暗記していることを前提に、まるで英文のように書けるようにすることぐらいを目標にしているんじゃないのとか、そんな話を。

 TDDのテーマであったところのプライオリティキューの実装方法についての会話とかもした。拡張for文でinsertとかできないのが辛いとかそんな話も。Pythonのforのelse句とか便利だよね、最初の1回だけ通るブロックがあればいいのに、do-while的な?みたいな話とか。

 Java愛する人というのは、決してJavaを崇拝なんかしてなくて、Javaの欠点を誰よりも憂いている。

水族館

 午後は@shiget84としながわ水族館。こういう体験は重要だと僕は思うのだ。印象深かったのはミズダコ。スーパーでみかける足の切り身を見ても分かる通り、でかい。それが水槽の壁面に吸盤くっつけてうにょうにょしてるのが凄く面白かった。水槽の前で写真撮影している子供とか食べられてしまいそうな勢い。

 そういえば、北斎のタコの描写って随分とリアルだなぁとミズダコを見て思った。でも水の中じゃないとこの顔つきはわからないんじゃないの?どうやって北斎はタコを観察したのだろう?

 順路の最後にあるサメの水槽とかいろいろインパクトあるね。バーチャルな世界を作りたければリアル世界を体験するのが近道だと思う。かなり満足。

*1:上から見た時に三角形になっている鳥居。全国に何箇所かあるみたい

*2:アーケードゲームの格闘以外をメインにスコアアタックとかやってた