独自理論のニューラルネットワークAIを組み込んだ3D格闘ゲーム『NekoFight』について語る金子さん(2009年の第参回天下一カウボーイ大会より) |
インタビューの後編は、平木敬教授と、同じく金子勇さんと親交の深かった稲葉真理准教授を交えてお届けする。金子さんが取り組んでいたニューラルネットワークのアルゴリズムは、NekoFight(物理演算とAIを組み込んだ3D格闘ゲーム)の対戦相手に組み込んでテストされていたほか、ある別のレースゲームにも組み込まれ、着実に成果をあげ始めていた。
金子さんにとってWinnyに代表されるP2Pネットワーク構築はすでに“終わった話”で、興味の中心はニューラルネットワークに移っていたと稲葉准教授は言う。
金子さんのものづくりのスタイルと、独自の発想がどういう方法論から生まれてくるものだったのかをお二人の言葉から探る。
(前編の記事はこちらから読めます)
■「Winnyは彼の研究分野にとって本流ではなかった」
平木:彼はWinnyの開発者として世の中では有名だけど、本当はWinnyというのはただの道具なんです。本流はシミュレーションやニューラルネットワークといったもので。
稲葉:どうかな? 金子さん、自分のことを「飽きっぽいから」と良く言っていました。確かに興味の幅はすごく広かった。でも、飽きっぽいと言う割には、深堀りなんです。趣味で夕焼けの撮影を始めたんですが、しばらくすると、気象学っていえばいいのかな? ハンパなく詳しくなっている。雲がどうなるか予測して、夕焼けがきれいになりそうなスポットを推定して、そこに行って日が沈むのを待つわけです。あれには驚いた……。
最近は、よくニューラルネットワークの話をしていました。ニューラルネットワークといえば、最近Deep Learningがちょっと話題になったんですが、その話をふると、「ちょっと見てみたけど、僕のとは違うし」と言うんです。面白いのは、こういうときに対抗心というか、競争心、「勝ち負け」みたいな意識が全くないようなんですね。私からすると、ある意味「理解不能」な性格。
京都府警の話をふっても「あの方たちもお仕事ですから」って。本当にいいやつですよねえ。
——東大ではニューラルネットワークをやるつもりだったんでしょうか?
稲葉:彼の本務は、平木先生が言っているようにHPC(スパコンを使った高速計算)です。ニューラルネットワークについては、東大に戻らなくてもやってたと思います。実際、東大に戻る前から『NekoFight』という金子さんが公開してた格闘ゲームの相手方に組み込んで遊んでましたし。
ただ、ご存知のように、東大の基盤センターって研究用の並列計算資源が潤沢にあるところだから、幸せにニューラルネットワークの並列化コードも書いていたと思います。「ぶんまわしてる」って、ニコニコしながら言っていましたから。結果を聞けないのが残念です。
夢物語になってしまいましたけど、ハードウェア化して、将来のブレインコンピュータの礎となるようなものを作ってほしかったなぁ。平木先生や手塚さん(手塚宏史さん:SONY NEWSの中心的な開発者の一人)や学生さん達と一緒に、ニューラルネットワークをFPGA※1 にのせることを画策していたので。
※1 Field Programmable Gate Array=ユーザーが製造後にカスタムできるLSIのこと。
■自己表現としてのプログラミング
稲葉:昔、金子さんに「ソフトウェアを作るには」という題で講演してもらったことがあります。「自分がどうやってソフトウェアを創るか」を学生さんに伝えてほしかったのです。
金子さんにとって、プログラミングは“趣味”であって、“自己表現”であって、“仕事”だと言ってたのが印象的でした。趣味で始めたことが、気がつくと仕事になってる。その繰り返しだと言っていました。
プログラミングは、1980年頃、10歳くらいから始めて、子どもの頃から天文系や機械が好きだったそうです。マイコンに触れて、プログラミングを始めて、それを外に発表するようになる。『月刊I/O』『Oh!X』といった雑誌とのつながりもだんだんできて、その後、表現の場がネットに移っていった。
大学時代には、Neko Flight——今気がついたけれどこれはNeko Fightと1字違いですね——を公開して。あとは髪の毛がそよぐプログラム(編集部注:『GL髪ベンチ』)とか、未踏ソフトウェア創造事業で作ったライブラリのデモをしながら、そんな話をしてくれました。
すごいなぁと思ったのは「十分速くてちょっと適当な衝突判定」の絶妙なバランスとか。あと、そのときどきの最先端の研究を組み込むだけでなく、そのときに入手できるハードウェアをしっかり見てたこと。たとえば、GeForce買える人には驚異的に速く、でもラップトップでグラフィックカードをさせない人でも十分速く楽しんで使ってもらえるように作る。
金子さんはプログラムは「使ってもらってなんぼ」ということを、骨の髄から理解していました。ただ「プログラミングは自己表現」だから、「わかる人にわかってもらえると、うんと嬉しい!」という気持も強かったと思います。
だから、いろいろなことはありましたが、彼、2ちゃんねらーのこと、好きだったんです。「あのかたたちは、お祭り好きですから」と言って。
Winnyのテストをしたりコメントくれた人達には、本当に感謝してました。「あんな良いテスト環境はなかった。出したらぱっとすぐ試してくれる。しかも、ドキュメント書かなくてもどなたかが書いてくださるしw」って。わかってくれる人がいて、手伝ってくれる人がいて、それが楽しくて、だからあそこまでできた。そんなことを言ってました。
—— 金子さんはプログラミングスタイルも独特でしたよね。あの有名な、電動ベッドに寝たままでコードを書く、というような。
平木:書き始めると全く動かないでやっていましたからね。
『NekoFlight』。ウェブ上で公開されている最新版は1.0β2で、1999年11月17日公開。 |
『NekoFight』(1文字違い)。こちらは最新版が2013年6月8日公開。つい最近まで、金子さんがコードに手を入れていたことがわかる。 |
■モットーは、進め、止まるな、手を抜こう
一一教え手としての金子さんはどうだったのでしょう?
平木:実際、彼は非常勤講師として教育も担っていました。良い教科書があれば、誰だって教えることはできます。でも、大学の教育で大事なことは、本当にその世界でナンバーワンの人に教えてもらうことなんですよ。学生たちはすぐに、彼が非常に偉大な人だと理解していました。
一一講師として働かれたお話というのは、2012年12月の東大に復帰して以降ですか?
平木:そうです。基本的には、すごく下の(システム深部の)レベルのプログラミングを教えるものです。彼は本当のエキスパートですから。
稲葉:学生に語ってくれてたこととしては、まず、モデルはシンプルなほどいい。シンプルなモデルだけど、組み合わせると複雑な系ができる。シンプルなモデルだけど実際に動かすと現実世界がシミュレートできちゃう。そういうのが理想だと。
そして、アイデアを大事にして、いい加減でもいいからまず動かしてみようと。あれこれ詳細を調べないほうがいいとも。ともかく少しでも先に進むこと。重要なことは、「止まらないこと」。
実際にはソフトウェアの設計はそんなにシンプルにはいきません。Winnyのプログラムも、実際は全然シンプルじゃないでしょう? だけど、彼の頭の中にはすごくシンプルなモデルが存在していて、それをまずは割といい加減に設計、実装、テストして、小変更、そして大変更を繰り返す。そうしてできてくる複雑な系を楽しんでた、そんな感じだったみたいですね。
自分にとって、物理運動シミュレーションでリアルタイムCGをつくることも、P2Pで人の集まりから生成される社会的複雑系をつくることも、ニューロンで脳の動きをシミュレーションすることも、みんな同じだと言っていたのが、とても印象的でした。
話を戻すと、その上で手抜きがとても重要だと(笑) 。面白いでしょう? いかに手抜きができるかが大事、そのためにプログラムのプロファイルを取る。プロファイラでプログラム実行過程のログを取ると、ソ−スコードのどこの部分がどのくらいたくさん実行されているか(時間を喰っているか)がわかるんです。たとえば ソースコードが100行あったとして、そのプログラムを10分走らせてみると、そのうち9分は、たかだか3行のループをまわっていたりするわけです。そういうときは、残りの97行を高速化してもあまり効果がないわけですね。その3行だけをゴリゴリ頑張る、残りの97行は手を抜いて大丈夫、だから手抜きが重要なんです。
できるプログラマーだからって、タイピングのスピードが100倍速いわけじゃない。重要なところは数%しかないんだから、そこだけやれば良いというわけです。
■金子さんは、ただ動かせるという一線を越えた人だった
稲葉:金子さんは、自分にとってプログラミングとは検証法だとも言ってました。
一一自分の仮説が正しいことの?
稲葉:そうです。たとえば、ニューラルネットワークについては、頭の中には彼が考えるシンプルなニューロンのモデルがあった。で、それをプログラムでちゃんとシミュレーションして実験によって性能が良いことを示せたら、脳科学者と自分が考えたモデルについて話がしたいと言ってました。「僕は、人間の脳はきっとこうなっていると思うから」と。
平木:ある意味では形式的なことかもしれませんけれど、大学っていう、自分のやりたいことをするのが仕事だっていう場に、ようやく戻ってこれた矢先でした。
彼の教えっていうのは重要ではあるんだけど、(しかしある意味では)重要じゃないとも言える。どうしてかっていうと、金子さんの一番すごいところというのはですね、世の中には2種績の人しかいないわけです。大きいシステムを作って動かせる人と、動かせない人。大多数の人は動かせない人なんだけど、動かせる人はみんな独自の方法論を持っているんです。でも、動かせない人がそれを知ったからといって、動かせるようにはならない。そこが一番難しい。
彼は動かせるっていう一線を越えてる、非常に数の少ない人で、そこが一番重要な話なんです。本当に、これからだと思ってたんですよ。残念です。
——私も本当にそう思います。お時間をつくっていただきありがとうございました。
(※インタビュー収録日:2013/7/10)
●関連リンク
平木敬教授(東京大学 大学院理学系研究科教員情報Wiki)
稲葉真理准教授(東京大学 大学院理学系研究科教員情報Wiki)
NekoFlight
NekoFight
-
2,520円
週刊アスキーの最新情報を購読しよう
本記事はアフィリエイトプログラムによる収益を得ている場合があります