BlinkとServoとRust: ブラウザの次の進化の方向性が見えてきた

先週は、ぼくのようにブラウザを追っているブロガーにとっておもしろい週だった。週の終わりには、Internet Explorer 11がWebGLとSPDYをサポートするらしい、という話も聞いた。その前の火曜日にはMozillaがメールで、MozillaのCTO Brendan Eichへの電話インタビューの可能性を打診してきた。その話題は次世代のブラウザエンジンServoと、それが書かれているプログラミング言語Rustだ。しかしMozilla Researchが単独でこれらを手がけているのではなく、この、マルチコアプロセッサと異種混成的なアーキテクチャ向けに最適化されている新型エンジンをAndroidとARMに実装する作業には、Samsungが協力しているのだった。MozillaはこれまでServoについてあまり何も発表しなかったから、今こうやって大きく発表することは少々意外だ。

おもしろいことに、GoogleのChromeのチームが話をしたいと言ってきたのも、先週の火曜日だ。おかしなことに、そのときの広報の連中は、いつもと違って、詳しい話を何もしない(通常は、何の話かぐらいは事前に教えてくれる)。Googleのエンジニアリング担当VP Linus UpsonとOpen Web PlatformのプロダクトマネージャAlex Komoroskeは、WebKitをフォークしてWebKitベースの独自のレンダリングエンジンBlinkをローンチする、と言った。ぼくは自分が話を聞き間違っていないか気になって、何度も彼らに念を押した。WebKit開発の外部の人間ににとっては、GoogleがWebKitの本流を去るという話を、にわかには信じられない。一般的にWebKitは、ChromeとSafariのおかげでデスクトップとモバイルで大成功した、と見られている。それを独自フォークする理由が、思い当たらない。

でもBlinkは正しい

だからGoogleのWebKitフォークは先週のいろんな発表やリークの中で、いちばん話題になった。Googleはフォークの理由を純粋に技術的なものと言うが、WebKitは今でもAppleとGoogleが仲良くやっている数少ないものの一つだから、政治的動機も疑われる。しかもWebKitへのコード貢献量は、このところGoogleが最大なのに。

今後の成り行きを予言するのは早すぎるが、ぼく自身はかなり楽観的だ。たしかに、Webデベロッパが自分のコードを試験すべきレンダリングエンジンが一つ増えてしまう。でもChromeのチームによれば、それは彼らにとって“苦渋の決断”だった。Googleはレンダリングのスピードを上げたいが、WebKitは今いろんなブラウザで使われている。だから、WebKit本流における抜本的な改作は難しい。

Chromeのチームは、“ブラウザが複数あることと同じく、レンダリングエンジンも複数あった方が、今後の健全なイノベーションを刺激し、オープンなWeb全体のエコシステムの健康にとって良い”、と考えている。たしかに、そのとおりだろう。2008年にChromeが突然現れてから、ほかのブラウザのイノベーションは加速した。当時の競争の中心は、高速なJavaScriptエンジンの開発だった(そしてWebKitを使っているブラウザも、JavaScriptエンジンはそれぞれ違っていた)。BlinkとServoという新しい馬が走り出した今は、レンダリングエンジンも重要な競争の要素になり、そしてその競争は、より速くてより安定的なブラウザを求めるユーザとデベロッパに利益をもたらす。

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))


Mozillaもブラウザの並列処理に本腰, Samsungと提携してマルチコアプロセッサ向けエンジンServoを開発

一見すると不似合いなカップルのようだが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))