
IE9の中身:マイクロソフトがブラウザを一から書き直した経緯

ジェイソン・ウェーバーのオフィスは素晴らしい眺めと巨大なモニターを誇り、そしてマイクロソフトのキャンパスの中でも最もパッとしないマシンがいくつか並んでいる。彼の4年前のPCは初期のIntel Core 2 Duoプロセッサを搭載している。タブレットPCのプロセッサはわずか1GHzだ。
そして、まさにそれが彼の望みだった。ウェーバー氏はInternet Explorerのパフォーマンス担当主任プログラムマネージャーであり、彼のチームの仕事は、今夜一般公開される新バージョンInternet Explorer 9の全面的な改良において重要な役割を担ってきた。
「ここでIE9を高速化できれば、どこでも高速化できる」とウェーバー氏は説明する。ウェーバー氏は、自身のマシンのグラフィックスコアが、一般的なユーザーが使っているPCの下位20%に留まっていることに、ほとんど誇りを込めた様子で言及する。もし自分の環境でブラウザがスムーズに高速に動作しているなら、「ハイエンドマシンでも驚異的なパフォーマンスを発揮するだろう」と彼は言う。
[続報: Internet Explorer 9: Windows XP ユーザーは残念です]
これらのパフォーマンスの向上は、Google Chrome、Mozilla Firefox などとの厳しい競争に直面しているブラウザ市場での勢いを取り戻すための Microsoft の取り組みにとって極めて重要となるでしょう。
マイクロソフトは、長年にわたり Internet Explorer にほとんど手が付けられず、メジャーバージョン間に 2001 年から 2006 年までの 5 年間のギャップが生じたことなどから、ブラウザに対する根強い否定的な評価を克服する必要もある。

一方、Internet Explorer 9は、5年足らずで3回目のリリースとなります。IE9のベータ版とリリース候補版は合計4,000万回ダウンロードされており、新ブラウザへの強い関心を反映しています。画面上のインターフェースも刷新され、より洗練された操作性やWindows 7のタスクバーとの統合など、様々な新機能が追加されています。
しかし、最も根本的なのは、内部での変更です。
「ユーザーがIE8でウェブページを読み込むときのコードパスとIE9でページを読み込むときのコードパスを見てみると、ほぼ完全に新しいコードになっています」とウェーバー氏は語る。「私たちのブラウザは、全く異なるものになったのです。」
彼は主な変更点を次のように説明しています…
JavaScript : ウェブプラットフォームは従来、JavaScriptをインタープリタで実行してきました。インタープリタにはいくつかの利点があります。非常に簡単に記述でき、クロスプラットフォームへの移植も容易ですが、速度が遅いという欠点があります。Chakra(IE9のJavaScriptエンジンのコード名)では、ネイティブコード生成を可能にしました。Internet Explorer 9内部では、JavaScriptを受け取り、マシンのバックグラウンド処理を使ってコンパイルします。このコンパイルプロセスは、ウェブページの読み込みやウェブページとのやり取りには影響しません。しかし、マシンがこれまで持っていてウェブプラットフォームが実際に活用していなかった余分なリソースを活用し、CPU上でJavaScriptをネイティブマシンコード(0と1)にコンパイルします。これは、ネイティブC++コード、つまりネイティブアプリケーションで行われるのと同じコンパイルプロセスです。これにより、JavaScriptアプリケーションはネイティブコンパイルされたアプリケーションと同等の速度を実現できます。WebKit Sunspiderベンチマークなどのベンチマークでは、Internet Explorer 9はハードウェアによっては10~20倍高速化しています。インタープリターのみを使用する Internet Explorer 8 よりも優れています。
グラフィックス:「Web上のグラフィックスは、従来、CPU、つまり中央処理装置で処理されてきました。これは2つの理由で残念なことです。1つ目は、CPUですべての計算を行うと、JavaScriptの実行、ページの読み込み、ページ操作といったCPUの他の処理に割く時間が奪われてしまうことです。2つ目の理由は、過去11年間に出荷されたすべてのWindowsマシンにGPU、つまりグラフィックス処理装置が内蔵されていることです。GPUは非常にスケーラブルで、グラフィックス向けに設計されています。多くの場合、CPUよりも数百倍、いや数千倍も高速にグラフィックス計算を実行できます。CPUでのグラフィックス関連処理の負担を軽減する方法を検討した結果、GPUは自然な選択肢でした。この負担を軽減しただけでなく、この計算がGPU上で超並列的に実行されるようになったため、この負担は大幅に軽減されました。…GPUを活用する方法は数多くあり、ブラウザメーカーごとに異なるアプローチが採用されています。IE9で採用したアプローチは…ブラウザを完全にハードウェアアクセラレーションすることでした。画面には、画像、テキスト、動画、SVG、HTML 5 Canvas機能など、グラフィックとして表示できるものが多種多様にあります。これらすべての機能をGPUで直接処理できるようになりました。CPUを経由せずにGPUに渡すことはありません。ハードウェアアクセラレーションを採用している競合他社の一部でさえ、依然としてCPUを経由してGPUに渡しています。パフォーマンスの違いがはっきりと見て取れるでしょう。」
レイアウトエンジン:「Internet Explorer 8 のレイアウトエンジンは、従来型の静的なウェブページ向けに設計されており、リッチでインタラクティブなウェブページ向けではありませんでした。IE9 では、レイアウトエンジンをゼロから書き直し、リッチでインタラクティブなサイト向けに設計しました。既存のレイアウトエンジンを何ヶ月もかけて分解したチームがあります。実は、そのチームは IE8 のレイアウトエンジンを開発していたチームです。そのため、彼らは豊富な専門知識を持っていました。レイアウトエンジンの仕組みを理解し、CSS1、CSS2、CSS3 といった標準規格を深く理解し、今日のレイアウト標準を用いてウェブページがどのように記述されているか、そして、最近登場した CSS3 がこれらのパターンをどのように変えるのかを考察するために、何ヶ月もかけてレイアウトエンジンを分解しました。私たちは、非常に効率的なレイアウトエンジンをゼロから設計しました。レイアウトは、非常にアルゴリズム的で計算集約的なプロセスです。小さなボックスやレイアウト、Z オーダーなど、多くの要素が絡み合います。これはアルゴリズムが鍵となります。チームのメンバーの中には、Microsoft 全体でアルゴリズムの専門家が数人います。そのため、私たちは過去 18 年近くを費やしてきました。数ヶ月かけてゼロから書き直しました。実は、これが私が最も誇りに思っていることの一つです。ゼロから書き直した部分を見てみると、互換性の問題(既存ページの表示に関する問題)が発生する可能性が最も高かった部分です。しかし、IE9では、これまでのどのバージョンのInternet Explorerよりも高い互換性率を実現しています。確かにリスクはありましたが、その甲斐はありました。」
Internet Explorer 9 の完成版は、今夜からダウンロード可能になる予定で、テキサス州オースティンで開催される South by Southwest Interactive カンファレンスの Microsoft イベントに合わせて公開される予定です。