一見すると不似合いなカップルのようだがMozillaが今日(米国時間4/3)、同団体の次世代ブラウザエンジンServoでSamsungとのコラボレーションを開始した、と発表した。Mozilla ResearchがServoに研究プロジェクトとして着手したのは2012年だが、今もまだ商用プロジェクトにはほど遠い。Rustという比較的新しいプログラミング言語で書かれていて、この言語もMozilla Researchが開発している。MozillaとSamsungは、RustとServoをAndroidとARMアーキテクチャに実装することで協働する。
Samsungの広報によると、同社がこのプロジェクトに関心を持った理由は、同社が“レガシー製品を革新するためのさまざまな新しい技術を探究中であるから。このコラボレーションによって未来のWeb体験の新しい局面が切り開かれることを期待している”、とのことだ。
マルチコア時代のブラウザエンジンとは
MozillaのCTO Brendan Eichによると、未来のコンピューティングにおいては並列処理がふつうになる(そう思っているのは彼だけではない)。Mozillaの研究部門はこのことをWebという視点から見て、今多くのユーザのコンピュータや携帯電話やタブレットがマルチコアのプロセッサを使っているにもかかわらず、今日のブラウザはもっともベーシックなマルチコアプロセッサすら有効活用していないことに気づいた。というより、Eichによれば、Webの今日のスタンダード自体が、これまでのブラウザが用いているシーケンシャルな処理から、マルチコア上のより効果的なページレンダリングに移行することを、妨げている。今その例外と言えるのは、GPUを使うWebGLと、JavaScriptにマルチスレッドを導入するHTML5のWeb Workersぐらいだ。
しかしEichが強調するのは、ブラウザの処理の一部とレンダリングのパイプラインをただ並列化するだけでは不十分である、ということ。彼によると、全体的にすみからすみまで、いちばん深い部分で並列化されているWebエンジンだけが、明日の16コア32コア〜〜といったマルチコアプロセッサを完全に有効利用できる。
Samsungはもちろん、モバイル用の強力なマルチコアプロセッサの開発に取り組んでいる。だから、今マルチコア指向にはまっているMozillaとのパートナーシップは、良い相性である。しかし問題は、SamsungとGoogleの長年の深い仲、それにAndroid上のモバイルブラウザとしてのChromeの強力な地位が、今後どうなるのかだ。
RustとServo
そこで、Rustが登場する(Mozillaは今日、コンパイラのバージョン0.6と関連ツールをローンチした)。Rustは、C++、Lisp、Erlangなどいろんな言語の良いとこ取りをしたような言語だが、言語設計の力点は安全性(C++のようにメモリ管理のエラーが頻発しないこと)と並列処理に置かれている。RustはMozillaによると、“多くの用途においてC++をリプレースできる現代的な言語を作る試みであり、とくに、クラッシュやセキュリティの脆弱性に導くタイプのエラーの抑止を目標としている”、という。今年の終わりまでにはコアライブラリが完備し、めでたくRust 1.0をリリースすることをMozillaは目指している。現在の開発チームはMozillaから5〜6人、Samsungから10〜20名、という規模だ。
Geckoの将来
Mozillaにはすでに、Geckoという優秀なエンジンがあり、それが同団体のブラウザとFirefox OSのベースになっている。また現時点では、Geckoを完全にServoでリプレースする計画はない。むしろMozillaはServoを、“新しいハードウェアのための新しいエンジン”と位置づけるだろう、とEichは語る。Firefoxの人気から考えると、Geckoの抜本的改良は互換性を損なう危険性が大きい。しかしたとえばFirefox OSでは、かなり新しい機能をエンジンに導入することに成功している。だからEichが考えているのは、ServoがMozillaに多くのことを教えて、それがGeckoにも使われていく、という将来の道筋だ。
[原文へ]
(翻訳:iwatani(a.k.a. hiwa))