W3C Web パフォーマンス: パフォーマンスへの投資に関する進捗のご報告

W3C Web パフォーマンス ワーキング グループでは去る 2012 年 11 月 8 日、W3C パフォーマンス ワークショップを開催しました。目的は、現在の課題やパフォーマンスに関する新しいアイデアの提案を収集し同ワーキング グループで検討することです。同ワークショップには、最新のブラウザー ベンダー (Microsoft、Google、Mozilla)、ハードウェア メーカー (Intel、Qualcomm、Nokia、Motorola)、ネットワーク ベンダー (Cisco、Akamai、F5)、そして Web サービスを提供する企業や組織 (GMail、Google Search、Bing、NetFlix、LinkedIn、Zynga など) を含む 21 組織、45 名の参加者が集まりました。ワークショップのプレゼンテーションや議論の詳しい内容については、このレポート (英語) をご覧ください。

Web パフォーマンスの問題では、Web アプリケーションのパフォーマンス特性を正確に測定し、電力効率と CPU 効率に優れたアプリケーションを開発するための機能を提供することが欠かせません。W3C Web パフォーマンス ワーキング グループ (英語) では、最近終了した第 2 期目の検証期間でこれらの目標の達成に取り組みました。2 年間をかけて同ワーキング グループが標準化を実現し、最新の HTML5 対応ブラウザーが実装したインターフェイスは、Navigation Timing (英語)、Resource Timing (英語)、User Timing (英語)、Performance Timeline (英語)、Page Visibility (英語)、スクリプト ベース アニメーションのタイミング制御 (英語)、High Resolution Time (英語)、Efficient Script Yielding (英語) の 8 種類に上ります。Internet Explorer 10 は、これら 8 種類の API をすべてサポートする初めてのブラウザーです。

それ以降は、Web パフォーマンス ワーキング グループは、検証期間の第 3 期に重点的に対応する分野を把握するためのデータ収集に取り組みました。同グループではパフォーマンス ワークショップの他、パフォーマンス分野のエキスパートを交えたカンファレンス コールを毎週実施し、パフォーマンス関連コミュニティのアイデアを幅広く調査しました。

こうした数か月間の取り組みで収集したデータに基づいて Web パフォーマンス ワーキング グループが第 3 期での集中的な対応を決定した分野は以下のとおりです。

  • 時間の測定:
    Web パフォーマンス ワーキング グループは、Navigation Timing (英語)、Resource Timing (英語)、User Timing (英語)、Performance Timeline (英語) の時間関連インターフェイスの強化に引き続き取り組みます。たとえば、時間関連インターフェイスにおける Web Workers サポートの実現や、ビデオのバイト範囲情報を Resource Timing に含めることなどを検討する予定です。
  • Efficient Script Yielding:
    Web パフォーマンス ワーキング グループは、Efficient Script Yielding (英語) 仕様が定義する setImmediate API など、電力効率と CPU 効率に優れた API の強化に引き続き取り組みます。
  • プリテンダー:
    Web パフォーマンス ワーキング グループは、プリテンダー機能の標準化を推進します。プリテンダーとは、ユーザーが特定の URL にアクセスすることをブラウザーが確信できる場合に、ナビゲーションをほぼ一瞬で表示できるようにする機能です。 ここでは、あるリンクを "偽装 (プリテンド)" 型としてブラウザーが判断した場合や、ユーザーがそのリンクにアクセスすることを高確率で信用できる場合に、ブラウザーが非表示のタブを使って対象の Web ページに先回りして移動します。リンクへのアクセスが行われると同時にこの非表示タブを見えるようにすることで、ナビゲーションが一瞬で完了したように感じさせることができます。
  • リソースの優先度:
    現在のブラウザーでは、ページ読み込みの高速化に有効と信じられている最も効率的な順番で優先度が設定され、リソースがダウンロードされます。ただし開発者によっては、特定のリソースをその他よりも優先したい場合があります。たとえば、スクロール不要な範囲にある画像は、それ以下に配置されている画像よりも優先度は高くなります。マークアップ内に "defer" や "async" 属性を使うことでダウンロード優先度のヒントをブラウザーに与えることは可能ですが、大部分のリソースはこの概念ではカバーできません。Web パフォーマンス ワーキング グループでは、ブラウザーによるリソース ダウンロードの優先度設定のサポートを目的とした検証の拡充に取り組みます。これが実現されれば、リソースのダウンロード優先度のヒントを相互運用性の高い手段でブラウザーに提供できるようになります。
  • 診断用インターフェイス:
    開発者の関心は、高速化されエラーの少ない Web アプリケーションの開発手法を知ることにあります。Web パフォーマンス ワーキング グループは、ブラウザーの Web アプリケーション診断情報を入手する相互運用性の高い手段を開発者に提供するための検証の拡充に取り組みます。たとえば、これらのインターフェイスを使って Web アプリケーションで発生しているメモリ リークの場所やユーザー エラーの種類を特定できるようになります。
  • ビーコン:
    現在の分析用スクリプトでは、Web サーバーへの分析データの送信確認用のループを実行することで、表示中ページのアンロードがブロックされます。この動作によって次ページに移動するナビゲーションに遅延が発生することで、低パフォーマンスという印象がユーザーに与えられることになります。Web パフォーマンス ワーキング グループでは、このパターンの回避を目的とした検証の拡充にも取り組みます。これが実現されれば、相互運用性の高い手段を通してブラウザーから Web サーバーにデータを非同期で転送しながら、ブラウザーによる確実なデータ送信が保証されるようになります。
  • パフォーマンスの表示:
    ゲームやアニメーションのパフォーマンスを把握することも開発者の重要な関心事項です。
    Web パフォーマンス ワーキング グループは、表示する情報の種類に応じたフレーム レートとスループットを提供する相互運用性の高い手段の実現に向け、検証の拡充に取り組みます。

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

Internet Explorer プログラム マネージャー、Jatinder Mann