今回も行って来ましたー、HTML5とか勉強会。
色々勉強になる会でした。
http://kokucheese.com/event/index/90708/
個人的にWebGLというキーワードがたくさんでてきたのが嬉しかったです。
WebGLはイチオシでして、初めての講演内容もWebGLだったということもあり、私以外にもあの扱いにくいテクノロジーを愛してくれている人がいるものだと感動すらしたものです。
昨年、初めてわたしがCanvas/WebGLについて発表した時、聴講者に何故このテクノロジーを使うのかと問われたことがあります。その際私は迷わず言ったんです。「ハードウェアアクセラレーションが使えるから」と。
3Dの表示って、パースペクティブ射影とかの仕組みや計算方法などをマスターすると、DIV要素とまで言わなくても、CANVASなどを使って無理やり表現することはできなくもない。それはとてつもなく泥臭いやり方だけど、決して無理ではないんですよね。じゃあ何故WebGLなのか、それはGPUのアクセラレーションを直接制御できるからなんだと思うんです。
Canvasについて、私はあれはDirect2Dなんかには到底及ばない、言うなればGDI+程度のものと考えています。だから最初から、その程度のものと割り切れば良いと思う。それでも十分に世の中で活用されるシーンはいっぱいあるんですよ。
MicrosoftのDirectXはあるタイミングでDirect3DにDirect2Dを統合しましたが、その理由はハードウェアアクセラレーションに違いが無かったからと聞いています。実際のところ間違いじゃないと思ってて、Direct2DでできることはDirect3Dでもできてましたし、現にスプライトという考え方も、3Dで言うところのテクスチャーで代替することが十分に可能だったんですよね。違うところがあるとすれば、2D特化か3D特化かという、API仕様の扱いやすさぐらいに思えます。
ただ、それはJSライブラリが当たり前の今の時代、そこまで重要視されるようなことでは無いと思うんです。いくらプリミティブで、原始的なAPIしかなかったとしても、それはJSライブラリが必ずカバーしてくれるはずなんです。で、WebGLは唯一のハードウェア資源を活用できるAPIとして捉えることもできて、別に3Dグラフィクスを扱うのに閉じた使い方をする必要はない。もっと別の用途としての活用法が出てくると思うんです。私はそこが、楽しみなんです。
講演者の佐々木さんが言う、「チューンができるプログラマーが天文学的な確立でしか見つからない」というのには合意できて、Windowsなんかでもハードウェアがジャブジャブに余っているので、すごくシンプルなゲームでもメモリをガンガン食い、それでもなんとかなってしまうという状態が、プログラマを怠慢にし、そういうアプローチについて考えることを忘れてしまっているように思えます。いや、どちらかといえばそういうチューンができるプログラマがあまり求められなくなり、いられなくなってしまったのかもしれません。どれだけ時代が過ぎてもOSやミドルウェアは残るし、そういう場でパフォーマンスと闘いながらプログラムを書く人間はいるはず。
ゲームという枠で閉じれば、多分この先、C++でガリガリとチューンすることは不要な時代が来ると思ってて、チップセットによる改善も含め、最適化は必ず進む。そう思えば、任天堂が専用機でHTML5を動作させるという一見異様に見えるこの取り組みも、自然に思えてしまう。
ただ世の中にはシビアなパフォーマンスを求められる場はいっぱいあって、いつになってもそれは消えない。また何かに特化したハードウェアもこれからどんどん発明されて、トライアルエラーで研究も続けられたりする。そういう意味でHTML5、あるいはその先にある標準APIは、その時代のコンピューターの一般的な姿を現す抽象的ハードウェアとして捉えられ、維持され残り続けるのではないでしょうか。