先日RC1が公開された「Firefox 3.0」。当初予定されていた2007年内からは遅れたものの、仕上がりは上々、大きな不具合がないかぎり現状のまま正式版として公開される予定だ。今回は、そのFirefox 3.0 (RC1) の新機能、特にコアコンポーネントに絞り解説を行ってみよう。
今度のエンジンは「Gecko 1.9」
Firefox 3.0のコアコンポーネントにおける最大の見どころは、レンダリングエンジン「Gecko 1.9」だろう。2005年夏に開発がスタート、以来数百万行 (Firefox 3.0 β1の時点で200万超) にもおよぶコードの加除修正を経て、メジャーバージョンアップに相応しい機能強化を果たしている。
Gecko 1.9は、HTML 4.01およびCSS 2.1にほぼ対応。W3C勧告への準拠度 / 互換性を測るAcid2テスト もクリア、現在のWeb標準仕様を満たしている。
Cairoへの移行
グラフィックAPI「Thebes (テーベ)」の採用も要注目。従来のGeckoは、グラフィック抽象化レイヤーとして「GFX」を使用してきたが、設計時点から10年を過ぎ時代の要請にそぐわない部分 (および解決困難な不具合) も生じてきたことから、ベクトルベースの「Cairo」をバックエンドに採用した新APIへの移行に踏み切ったのだ。
Thebes / Cairoに移行するメリットを簡単にまとめてみよう。まず1つは、グラフィック抽象化レイヤーを一本化できること。従来のGFXでは、HTMLやXUL (GUI部分) のレンダリングに必要な機能しか備えておらず、透過表示やベクトルグラフィックの描画といったモダンな機能を利用する場合は外部の、しかもプラットフォームごとに異なるAPI (WindowsならばGDI+、Mac OS XならばQuartz) に依存していたため、複雑化していた。Cairoには必要な機能が一通り揃っており、プラットフォーム非依存であることから、好都合だったのだ。
Gecko 1.8(左)と1.9(右)はグラフィック抽象化レイヤーが大きく異なる(Brendan's Roadmapより) |
もう1つは、GFXからThebes / Cairoへの移行により、これまで一掃することが困難だった不具合を減らせること。前述したとおり、GFXではプラットフォームごとに異なるコードを用意しなければならず、ディスプレイやプリンタなど出力デバイスごとの対応も必要だったことからコードが複雑化、それが不具合の温床となっていた。たとえは悪いが、引っ越しすると整頓される……というか引っ越ししないかぎり散らかる一方の部屋 (某編集部ではありませんよ) に似ているかもしれない。
高速化も見込まれている。Cairoには、OpenGLの3Dハードウェアアクセラレーションに対応するコードが含まれているのだ。Firefox 3.0 RC1時点で実装は完了していないが、今後期待していい機能といえるだろう。
SVGのサポート強化
Firefox 1.5から正式にサポートされた「Scalable Vector Graphics (SVG)」も、機能が強化されている。「feGaussianBlur (ガウスぼかし)」や「feBlend (混色)」など24種以上のフィルタを新たにサポート、Firefoxが目指すSVG実装 (SVG 1.1 Full) に近づいた。未実装の機能も残るが、Safari / WebKitなど他のオープンソースなブラウザに比べ先行していることは確か。
W3CのサイトにあるSVGファイルを表示したところ。Firefox 3.0 RC1だけが意図したとおりに表示できた (上から順にFirefox 3.0 RC1、Firefox 2.0.0.14、Safari 3.1.1) | |
高速化されたJavaScriptエンジン
JavaScriptの処理系が強化されたことも重要なポイント。Webアプリが普及した現在、Firefox 3.0 / Gecko 1.9に移行する大きなメリットといえるだろう。
とにかく、パフォーマンスが大幅に向上した。JavaScriptベンチマーク「SunSpider 0.9」で試したところ、Firefox 2.0.0.14の12,408.8msというスコアに対し、Firefox 3.0 β1は3,093.6ms (テストにはMacBook Pro 2.33GHz / 2GB RAMを使用)。実に4倍近いスピードアップだ。このベンチマークには現れていないが、多くのWebアプリで使用されるDOMの処理系も高速化されているので、リッチな機能を持つWebアプリは体感できるほど速度が改善されている。
なお、Firefox / GeckoのJavaScriptエンジンは、次の「Firefox 4」でさらなる高速化が見込まれている。採用予定のJavaScriptエンジン「Tamarin」は、Adobe Systemsから寄贈されたもので、Java VMなどでお馴染みのJITコンパイルによりネイティブコードを生成、大幅なパフォーマンス向上を図るというもの。話はFirefox 3.0から逸れるが、期待の新技術ということで敢えて紹介しておきたい。