写真●Dreamboat技術顧問の金子勇氏
写真●Dreamboat技術顧問の金子勇氏
[画像のクリックで拡大表示]
金子氏が開発したフリーの3D格闘ゲームNekoFight
金子氏が開発したフリーの3D格闘ゲームNekoFight
[画像のクリックで拡大表示]

 2008年9月5日のITpro Challenge!において,Dreamboat技術顧問である金子勇氏が「シュミレーション的発想によるプログラミング」と題した講演を行った。金子氏はファイル交換フリーソフト「Winny」の開発者として知られるが,自称「究極の趣味プログラマ」であるという。

わたしは究極の趣味プログラマ

 「プログラムを作っただけで逮捕されたWinnyの作者です」。冒頭でこう挨拶した金子氏は,Winnyに関連した発言をマスコミや何度かの講演会 で行ってきた。ただ,そのWinny開発の根底を支えた金子氏のプログラムに対する哲学を語ったことは,これまでほとんどなかったという。

 金子氏は自身の職業を「シミュレーション屋」であるとし,その裏の顔として「趣味フリーソフト屋」であるとする。

 金子氏はどのような発想でプログラムを組んでいるのか。

 「最初から設計した通りにプログラムが動くのはつまらない。自分でも何が起こるか分からないところが面白い」。金子氏は「おすすめはできない」とした上で,「何かアイデアがあったら,まずは作ってみる。その際に設計は重視していない。とりあえず動けばいいという程度。予定調和ではつまらないし,バグはバグと捉えずにそこを穿り出して脱線するのが面白い。ただ,何がやりたいのかというコンセプトがブレてはいけないが」と説明する。金子氏が「おすすめはできない」とするのは,職業プログラマにとっては,「何ができるか分からない」というわけにはいかないためだ。

 一見,良く分からない挙動をしても切り捨てないことで,金子氏は新しい発見があると考えている。また,「自然科学的なことが好き」とし,アイデアは自然科学など情報システム科学とは異なるところから持ってくることが多いという。こうした離れた概念を組み合わせることによって,アイデアのベースはあるものの,それがどのような結果を生み出すのかを興味深く見守るプログラミング手法が,金子流だ。

 そのためには,プログラミングを行いながら小まめにそのプログラムを実行し,小まめに改善していく。その過程を楽しみながらプログラミングをすることが重要なようだ。

 「ほんの少しずつでも先に進むことが,自分のプログラミング手法においては重要。そのためには,手抜きが欠かせない。まずは,必要最低限のものを作る。そしてとことん脱線する。ただ,自分がやりたいと思うことのポイントとなる部分だけは手を抜かない」

 物理演算とAIをベースにした3D格闘ゲーム「NekoFight」も,Winnyも同じ発想のプログラミング哲学をベースとしているという。「同じものを作ろうとしても,作者である自分自身が細部までなぜそうなっているかが分からないから作れない。しかし,そこが面白い」

 金子氏は最後に,自称の趣味プログラマを「直感系プログラマ」と言い換え,「自身の表現手法の1つとして面白いからプログラムをし,フリーソフトを作っている。ですから,検閲しないようにお願いします。(職業プログラマーの)みなさんの迷惑にならないように,裁判は頑張る」と講演を締めくくった。

◎ITpro Challenge! 2008レポート
ITpro Challenge! 2008本番です!--速報レポート&リンク集
1000万会員のモバゲータウンを一人で作ったDeNA 川崎修平氏
「仕様を追いかけるだけでなく,作る側になろう」---米SixApart 宮川達彦氏