Web パフォーマンス API が驚異的な速さで W3C の勧告に認定

W3C Web Performance ワーキング グループは最近、すべての主要なブラウザー ベンダーで実装されている 3 つの仕様を W3C 勧告として公開しました。これにより、開発者は Web アプリケーションのパフォーマンスをより正確に計測できるようになり、Web が高速化されます。この 3 年間、Microsoft、Google、Mozilla、Intel、Facebook をはじめとする企業がこのワーキング グループで、Navigation Timing (英語)、High Resolution Time (英語)、Page Visibility (英語) の各インターフェイスの標準化に向けて尽力してきました。業界とコミュニティが W3C のもとに結集すると何が実現できるか、これらの勧告が驚異的な早さでの採用が物語っています。

Web を高速化するには、開発者が Web アプリケーションのパフォーマンス特性を正確に測定し、基盤のハードウェアを有効に活用してアプリケーションのパフォーマンスを向上させる必要があります。これらの問題を解決するため、Web パフォーマンス ワーキング グループでは、これらに対処する 15 もの異なる仕様を検討しました。以下の表は、同ワーキング グループが現在編集しているすべての仕様の成熟段階を表しています。

仕様 編集者草案 公開草案初版 最終草案 勧告候補 勧告案 勧告
Navigation Timing 2010 年 9 月 2010 年 10 月 2011 年 1 月 2011 年 3 月 2012 年 7 月 2012 年 12 月
Resource Timing 2010 年 9 月 2011 年 5 月 2011 年 8 月 2012 年 5 月
User Timing 2010 年 10 月 2011 年 8 月 2011 年 9 月 2012 年 7 月
Performance Timeline 2011 年 7 月 2011 年 8 月 2011 年 9 月 2012 年 7 月
High Resolution Time 2012 年 2 月 2012 年 3 月 2012 年 3 月 2012 年 5 月 2012 年 10 月 2012 年 12 月
Page Visibility 2011 年 4 月 2011 年 6 月 2011 年 7 月 2012 年 7 月 2013 年 2 月 2013 年 5 月
Display Paint Notifications 2011 年 5 月 2011 年 6 月 2012 年 2 月
Navigation Timing L2 (新規) 2013 年 1 月 2013 年 1 月
Efficient Script Yielding 2011 年 6 月
High Resolution Time L2 (新規) 2013 年 4 月
Beacon (新規) 2013 年 3 月
Resource Priorities (新規) 2013 年 4 月
Navigation Error Logging (新規) 2013 年 4 月
Resource Error Logging (新規) 2013 年 4 月
Prerender (新規)

Navigation Timing (英語)、Resource Timing (英語)、User Timing (英語)、Performance Timeline (英語) の各仕様は、開発者がドキュメントのナビゲーション、ページ上のリソースの取得、開発者スクリプトの実行のタイミングを正確に計測するのに役立ちます。これらの API が登場するまで、こうしたデータを取得するのは困難でした。Navigation Timing は W3C 勧告として公開され、すべての主要なブラウザー ベンダーによってサポートされています。他の 3 つのインターフェイスは現在、ブラウザー ベンダーに完全に実装されるのを待っている勧告候補の段階にあります。今のところ、これらのインターフェイスをすべて実装しているブラウザーは IE10 だけですが、他のベンダーでも実装を検討しています。

これらのパフォーマンス指標を可能な限り高い精度で測定するために、High Resolution Time (英語) 仕様が策定され、開発者はミリ秒以下の精度で操作を測定できるようになりました。このインターフェイスは、パフォーマンス指標の正確な測定というメリットを提供するのはもちろん、フレーム レートの計算やアニメーション/オーディオ キューの同期も効率化します。このインターフェイスは W3C 勧告として公開されており、この仕様で定義されている performance.now() メソッドは、すべての主要なブラウザー ベンダーによって実装されています。

Page Visibility (英語) API によって、ページが閲覧者に見えているかどうかについて最新の状態をプログラム的に判定できるようになります。開発者はこのデータを使用して、バッググラウンドのタブにあるページのアクティビティの負荷を下げるよう調整するなど、CPU と電力効率化に関する判断を下せるようになります。この仕様も W3C 勧告として公開されており、すべての主要なブラウザー ベンダーによって実装されています。

Timing Control for Script-Based Animations (英語) 仕様と Efficient Script Yielding (英語) 仕様は、CPU 効率と電力効率に優れた Web アプリケーションの開発をサポートします。スクリプト ベース アニメーションのタイミング制御に関する仕様が提供する requestAnimationFrame API は、より効率的な JavaScript アニメーションの開発を可能にします。このインターフェイスはすべてのブラウザー ベンダーで完全にサポートされており、ワーキング グループはこの仕様を勧告候補として公開することを前向きに検討しています。Efficient Script Yielding 仕様が提供する setImmediate API を使うと、ユーザー エージェントに対する制御フローの生成を効率化して、コールバックを瞬時に受け取れるようになり、CPU の利用効率を高めることができます。IE10 は、このインターフェイスを実装する初めてのブラウザーです。

今年に入って、ワーキング グループは新しいアイデアにも目を向けるようになり、これらのアイデアの編集者草案がワーキング グループ内で現在検討されています。Beacon (英語) は、スクリプトがアンロード イベントをブロックすることなく Web サーバーにデータを非同期で転送することを意図していますが、次のナビゲーションのパフォーマンスに悪影響を与える可能性があります。Resource Priorities (英語) API は、Web 開発者がリソースのダウンロード優先度のヒントをブラウザーに提供してページ読み込み時間を改善する手段を定義します。Timing 仕様の当然の帰結として、Navigation Error Logging (英語) 仕様と Resource Error Logging (英語) 仕様により、開発者はアプリケーションのエラーと可用性を把握できるようになります。Navigation Timing Level L2 (英語) 仕様では、Navigation Timing に High Resolution Time と Performance Timeline のサポートが追加され、High Resolution Time L2 (英語) 仕様では Web Worker のサポートが追加されています。これらは、ワーキング グループが現在定義している草案のほんの一部であり、プリテンダーやその他の診断分野に関する仕様の草案が次々と公開される予定です。

W3C Web パフォーマンス ワーキング グループの動向は、新しいアイデアが驚くべき速さで相互運用可能な標準として確立されていることをわかりやすく示すものです。開発者はこれらの標準を HTML 5 対応の最新ブラウザーで活用できます。Microsoft は、同ワーキング グループに参加している、業界を先導する組織やコミュニティのリーダーたちと連携して、開発者が Web の高速化を進めるための相互運用可能な標準を早急に実現するため、引き続き取り組んでまいります。

お読みいただき、ありがとうございました。
Jatinder Mann
Internet Explorer プログラム マネージャー