【新・言語進化論】アレで使われている言語って何?
第3回:cell computing βirthでハイビジョンアニメを作る
著者:NTTデータ 古矢 満
公開日:2007/11/16(金)
なぜJavaによるクライアント
今回行われる実証実験では、「SETI@home
(http://setiathome.berkeley.edu/)」で有名な「BOINC(Berkeley Open Infrastructure for Network Computing、
http://boinc.oocp.org/indexj.php)」をベースに分散コンピューティングシステムを構築している。
また、レンダリングはDisney作品で有名なPixar Animation Studios社がフリーで公開しているRenderman互換の「Aqsis
(http://www.aqsis.org/xoops/modules/news/)」を使用している。
この2つのシステムが「C++言語ベースで開発されている」という点を、すでにご存じの方も多いと思う。しかし先に述べたとおり、今回のプロジェクトではJavaによるレンダリングエンジンを活用している。
つまり今回のプロジェクトでは、C++言語ベースで開発されたレンダリングエンジンをJavaへ移植した上で実証実験を行っているのだ。では、なぜJavaへの移植を行ったかについて詳しく解説していこう。
(画像をクリックすると別ウィンドウに拡大図を表示します)
まずJavaのデメリットから見ていくべきだろう。Javaは何といっても「遅い」という印象が強い。Javaバイトコードからネイティブコードへの変換だけでなく、さまざまなプラットフォームで利用するために、最大公約数的な機能しか利用できないことが、その要因だ。このため、C++言語で最適化された性能値の10倍以下の性能しか出せないケースも珍しくはない。
しかし逆にメリットといえるのが「JavaVMが動作する環境であれば、同一のパッケージを使用できる」という点だ。
本プロジェクトでは高精細画像をあつかう関係上、大量のメモリが必要となり、必然的に動作環境はPC以上を想定している。しかし、1つ1つの計算量が小さい場合には、携帯電話にJavaVMが実装される現在は、非常に多くのクライアントを活用することができる。
今回のプロジェクトで活用しているcell computing®は、もともと「遅い」マシンを「大量に集めた」結果として、大容量の計算を実現することを目的としてる。つまり、最初にデメリットとしてあげた「実行速度が遅い」という点は、最初から織り込み済みなのだ。
つまり、単体のJavaによる遅さを嘆くより「異なるマシンでもより簡単に大量に集めることができる=多種多様なクライアントで実行できる」ことこそが重要である。「結果的に演算性能が高くなればよい」というのが、本プロジェクトでJavaを使用する理由の1つといえるだろう。 次のページ