言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

頑張ったよ。ボク。


ここ数週間、スクイーク本体の更新作業もすっかり放ったらかしで仕事に明け暮れておりましたが、今しがたようやく終わりました。とある関西の山奥、けいはんなと呼ばれる町の研究施設 NICT の公開展示の為のデモです。ここで、Croquet と TVML の技術を生かしたデモを作成せよというのが今回のミッション。しかも対象はちびっ子です。

色々議論があり、様々な展示を三次元キャラクタが案内する物に落ち着きました。六台ある端末はそれぞれ P2P 接続で繋がれていて、同じ世界を共有しています。画面の三次元世界は現実の NICT 展示会場を模した姿になっていて、ユーザは架空世界に存在する「ちびロボ」に案内されて現実の展示会場を歩き回るという趣向です。

果たして、一体これが理解されるのだろうかと半信半疑だったのですが、ふたを開けてみると、説明には多少骨が折れるものの、一旦「はあ〜あ」と納得されると速くて、会場でちびっ子達が「ちびロボ!ちびロボ!」と叫びながらちびロボを追いかける光景が見れました。けいはんなのちびっ子かしこい!。いやー。プログラマーやってて良かったと思えるひと時ですね。何かこう久しぶりに「掴んだ」気がしましたよ。

とはいえ、舞台裏は褒められた物ではなくて、完成したのは当日の朝6時。かなりうっとおしいバグが混入したのをようやく修正し、コンビニでパンを買って食べてシャワーを浴び、それでも一時間だけ寝ました。特に、機材チェックをギリギリまでやってなかったのと、ネットワーク関連で最後大きな問題が見つかったのが痛かった。

Croquet を6台(開発中は8台まで試しました)繋げるのってそれだけで無謀なのです。4台目あたりから全く動かなくなります。P2P ネットワークに参加するための管理用の信号が輻輳して無駄にオブジェクトの生成と破棄を繰り返し、肝心な動作信号が届かなくなります。これに気づいたのが二日前の帰宅直前、顔が真っ青になりました。三台までは問題なかったのが甘かった。最後一日でネットワークの仕組みを、基本的に接続相手に絶大な信用を置く Croquet の通信モデルから、ベストエフォート型への大手術を行いました。

(この大変更にも関わらず間に合ったのは、レイトバインディングの勝利と言っていいのかどうか)

それが何とか間に合い、明らかなバグ無しという驚異的な状態でデモを迎える事が出来たのは我ながら偉い。残念ながらメモリリークが発生して、一台あたりおよそ 1-2 時間ごとに再起動が必要というくだらない問題が起こりましたが、開発のスケジューリングはともかく、結果的にはなかなか良い結果だと自画自賛しております。

(追記: はてなに書いて、ちびロボ!がキーワードなのにビックリしました。テキトウに安易に考えた名前なのに商品名にする人がいるとは。。。兎に角関係ないので悪しからず)