特集:Internet Explorer 9(プレビュー版)概説

開発者が知っておくべきIE9の新機能

デジタルアドバンテージ 一色 政彦
2010/04/09
2010/04/13 更新
Page1 Page2 Page3 Page4

 昨年2009年11月のPDC09に続き、2010年3月のMIX10でIE9(Internet Explorer 9)の概要が紹介された。そのプレビュー版がすでにダウンロード可能になっている。

 また、IE9の機能を体験できるデモ・サイト(IE9 Test Drive)も新設されているので、IE9(プレビュー版)をインストールしたら、そのサイトも試してみるとよいだろう。

 IE9の今回のリリースはプレビュー版ということもあり、ブラウザの外観や使い勝手はまだまだプロトタイプ・レベルであり、日常的に利用できるようなものではない。特にURLアドレス・バーがなく、[戻る]ボタンが搭載されておらず、しかも[Back Space]キーでも戻れないので、通常の閲覧作業でも困ることが多い。

 このような状況なので、ベータ版のレベルに達するまでは、8週間ごとにプレビュー版をアップデートし続けることが計画されている。なお、ベータ版や正式版のリリース時期は明らかにされていない。

 IE9では、さまざまな機能が刷新、強化される。その中でも、特に注目すべきは下記の3点だ。

  1. 新JavaScriptエンジン
  2. HTML5対応
  3. CSS3対応

 本稿では、これらの内容を中心に、IE9の主要な新機能を開発者向けに紹介する。本稿の内容はあくまでIE9プレビュー版の段階でのもので、今後変更される場合があるので注意してほしい。

【コラム】インストール要件:IE9はWindows XPをサポートしない

 IE9プレビュー版はWindows XPをサポートしない。この状況は、正式版になっても変わらない。つまりIE9を利用するには、Windows Vista/7以降のWindowsが必要となる。

 また、IE9プレビュー版をWindows Vistaにインストールするには、IE8とDirectX 2D(D2D)が事前にインストールされている必要がある。それぞれのインストーラは、下記のリンクからダウンロードできる。

1. 新JavaScriptエンジン

 Ajaxが脚光を浴びてからの近年、WebにおけるJavaScriptの利用と重要性はますます高まってきている。GmailやGoogleドキュメントなどのWebアプリケーションでは、大量のJavaScriptコードが実行されており、JavaScriptエンジンの性能がそのWebアプリケーションの性能に直結するようになってきた。このため、いま、各ブラウザのJavaScriptエンジンの高速化が強く求められているのだ。

 もちろんIE8までのIEでも、このような時代背景を踏まえて、(JavaScriptコードを実行するための)スクリプト・インタプリタのパフォーマンス改善に尽力してきた。しかし(マイクロソフトの説明によると)、このような純粋なスクリプト・インタプリタは、通常、少量のJavaScriptコードしかない従来のWebページには最適ではあるものの、大量のJavaScriptコードを持つ今日のWeb 2.0型アプリケーション、そして明日のHTML5アプリケーションには向いていない。そこでマイクロソフトはIE9で、これまでのJavaScriptエンジンを捨て、まったく新しいJavaScriptエンジンを構築することを決定したのである。

 “Chakra”(チャクラ)というコード名で呼ばれる、そのJavaScriptエンジンでは、スクリプト処理のパフォーマンスが(従来よりも)大きく改善される予定だ。実際、下に掲載したグラフを見ると、現時点で最速のJavaScriptエンジンはOpera 10.5のCarakanもしくはChromeのv8であるようだが、IE9プレビュー版も開発初期段階にもかかわらず、かなりの好成績をはじき出している(WebKits.org提供のSunSpider JavaScript Benchmarkを使った、マイクロソフトによる調査)。マイクロソフトによると、今後さらにパフォーマンスを向上させていくそうだ。

各種ブラウザにおけるJavaScriptベンチマークの比較(WebKits.org SunSpider JavaScript Benchmark)
Internet Explorer 9 Test Drive」から引用。

 IE9の“Chakra”では、インタプリタ(=Webページ上でJavaScriptコードを解析して実行)から、コンパイラ(=JavaScriptコードを高品質なネイティブ機械語コードにコンパイル)、型システム、ライブラリ、メモリ管理などのランタイム機能、DOM相互運用性など、さまざまな側面でJavaScript処理性能の改善が図られる予定だ。以下では、それぞれの機能的な特徴を簡単に紹介しよう。

高速なスクリプト・インタプリタ

 IE9では、起動時にページを即座に実行する高速なスクリプト・インタプリタが搭載される。技術的な詳細は不明だが、「レジスタ・ベースのレイアウト」「効率的な命令コード」「型の最適化」などを用いて、より高速なページ表示を実現するとしている。

バックグラウンド・コンパイル(マルチコアにおける並列処理)

 JavaScriptエンジンの性能を稼ぐには、JavaScriptコードを高品質に最適化された機械語コードにコンパイルする必要がある。特に今日のJavaScriptを多用したWebアプリケーションにはこの作業が必須となる。しかしながら、そのコンパイルには時間が掛かるという欠点がある。

 これを解決するためにIE9では、「アプリケーションの初期実行を止めることなく、バックグランドでコンパイルを行い、コンパイルされたメソッドをアプリケーションに押し戻す」というアプローチを採用している。

 このコンパイル時にIE9は、バックグランドでマルチコアCPUにおける並列処理を行い、PCの資源をフルに活用する。つまり、デュアルコアやクアッドコアのマシンになると、IE9の性能はさらに高速になるというわけだ。今後、CPUのマルチコア化はさらに進んでいくと予想されるので、数年後の将来を考えると、これは賢いアプローチといえるだろう。

 次の上下に並べた2つの画像は、IE8とIE9プレビュー版での処理速度の違いを、フォアグラウンド処理とバックグランド処理に分けて視覚化したものである。これを見ると、確かに、IE9の方が効率的に処理されていることが分かる。

IE8とIE9プレビュー版での処理速度の違い(上:IE8、下:IE9プレビュー版)
MIX10:CL29 High-Performance Best Practices for Web Sites」から引用。

型の最適化

 JavaScriptコードの実行性能を大きく向上させるポイントの1つに、効率的な型システムを構築することが挙げられる。これを実現するために“Chakra”では、最新の動的言語実装に共通する優れた技術(例えば多相インライン・キャッシュなど)を積極的に採用していくと、マイクロソフトは説明している。

ライブラリ最適化

 JavaScriptコードの実行性能は、文字列、配列、オブジェクト、正規表現といったJavaScriptランタイム・ライブラリの出来具合にも当然影響を受ける。こういったライブラリ機能も、現実のWebサイトでのJavaScriptコードの利用に合わせて注意深くチューニングする予定だ。

 マイクロソフトが現実世界のWebサイトをいろいろと分析した結果、「JavaScriptコードには、一連のよくあるパターンが存在することに気付いた」という。例えば正規表現では、数百の正規表現を作成しても、実際にはそのうちの少ししか使っていないことなどだ。こういった普遍的なケースで性能が向上するように、最適化やチューニングを行っていく。

 なお“Chakra”では、アプリケーションの変化や、Webでよく用いられるパターンの変化、ハードウェアの変化に、スムーズに適応していくことを目標としているとのこと。時代の変化に伴い上記の性能改善の内容も変わっていくのかもしれない。

 続いて、HTML5対応について説明しよう。


 INDEX
  特集:Internet Explorer 9(プレビュー版)概説
  開発者が知っておくべきIE9の新機能
  1.新JavaScriptエンジン
    2.HTML5対応
    3.CSS3対応
    4.IE9のそのほかの新機能

更新履歴
【2010/04/13】

以下のような誤りがありました。お詫びして訂正させていただきます。

登録者ベース
レジスタ・ベース




Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間