表現手法としてのプログラム
講演ではいくつかのプログラムが実演されたので、金子氏の談話とともに紹介しておきたい。
NekoFlight/Missile
もとは1998年ころの作品で、3Dグラフィックカードを持ってないユーザーのためにDirect3DのAPIをまったく使わず、3Dレンダリング部分をすべてアセンブラで書いている。ちゃんとフライトシミュレーターとして計算して作っているが、次第にミサイルを見てるのが楽しくてミサイルが飛びまくるミサイルデモプログラムになってしまった(談)。
NekoFight
2007年に公開した3D格闘ゲームのサンプル。蹴りが強すぎると空を飛ぶこともあるが「見てて面白いですよね」。AB法というアルゴリズムで、簡単なんだけど複雑なことをやっている(談)。
Winnyのリンクシミュレーター
Winnyは「Proxyを内蔵したピュアP2P」というアイディアをモデル化したプログラムだが、P2Pネットワークは参加者のノードによる巨大な複雑系になるので、動かしてみないと挙動がわからない。といってもわからないままでは動かないに決まっているので、最低限はシミュレーションを組んだ。もっとも当時考えていたモデルは、実際にできあがったWinnyネットワークと比べるとすごい簡略化されていたので、現実には公開して1日目でいきなり破綻した。それをこまめに修正して、しかもユーザーがついて来ないとダメなのだが、比較的協力的なユーザーさんも揃っていたので、変えて、状況を見て、変えて、状況を見て、ダメだったら丸ごと捨ててみて、と繰り返しでできたのがWinnyのプログラム。当時使っていたシミュレーターは押収されて手元にないので、『Winnyの技術』を書くときに作り直したのがこのプログラム。しかし今わかっているWinnyネットワークのモデルで作ろうとすると、複雑すぎて途中でイヤになって止めてしまった(談)。
最後に、金子さんは「プログラムそのものが私にとっては表現手法」と語り、トライ&エラーを繰り返すこの手法ではひとりで作ってても先に進まないことがあり、とりあえず公開してみれば、ユーザーのフィードバックをもとに変えていくことができるが、プログラムを公開する前にまず弁護士に相談しなければいけないという状況になったので困っている。と笑いを取りつつ、プログラムの開発や公開に制約がかからないよう「裁判はがんばろうと思ってます」という言葉で講演を締めくくった。
【関連リンク】
・ITPro Challenge 2008 で講演しました&資料公開: blog.bulknews.net
・NekoFlight/Missile
・NekoFight