Webパフォーマンス

Webパフォーマンスとは

Webパフォーマンスとは、WebブラウザでWebページがどのくらいの速度で表示を開始し、表示処理を終える事ができるかという速度を指します。

歴史

パフォーマンスエンジニアリング

Webパフォーマンスは、新しい分野ではなく、パフォーマンスエンジニアリングで扱うシステムタイプの1つです。
パフォーマンスエンジニアリングは、コンピュータがこの世に登場した時から、ずっとついて回っているコンピュータの性能問題を扱います。

パフォーマンスエンジニアリングとは、コンピュータシステムの非機能要求の1つである性能について、要求を確実に達成するための技術分野です。
WikipeidaのPerformance Engineeringでは、以下のように記載されています。
(原文は英語)

パフォーマンスエンジニアリングは、システム開発のライフサイクルの中で、パフォーマンスに対する非機能的な要件(スループット、レイテンシ、メモリ使用量など)を確実に満たすために適用される技術を網羅しています。システム・エンジニアリングの中のシステム・パフォーマンス・エンジニアリング、ソフトウェア・エンジニアリングの中のソフトウェア・パフォーマンス・エンジニアリングまたはアプリケーション・パフォーマンス・エンジニアリングとも呼ばれることがあります。

アプリケーションの成功とビジネスの成功との関連性が、特にモバイル分野で認識されるようになるにつれ、アプリケーション・パフォーマンス・エンジニ アリングは、ソフトウェア開発のライフサイクルの中で、予防的かつ完全な役割を担うようになりました。そのため、この用語は一般的に、非機能的な要件を効果的にテストし、サービスレベルを確実に遵守し、デプロイ前にアプリケーションのパフォーマンスを最適化するために必要なプロセス、人材、および技術を説明するために使用されています。

パフォーマンスエンジニアリングという用語は、ソフトウェアとそれをサポートするインフラストラクチャだけでなく、それ以上のものを含んでいるため、パフォーマンスエンジニアリングという用語は、マクロな視点から見ることが望ましいです。非機能要件への準拠は、本番システムを監視することで、デプロイ後にも検証されます。これはITサービス管理の一部です(ITILも参照すること)。

パフォーマンス・エンジニアリングは、多くの大企業において、システム・エンジニアリングとは別個の、しかし並行して行われているタスクを持つ別個の規律となっている。これは、複数の組織単位からの人々が関与し、普及していますが、主に情報技術の組織内で行われています。

指標の変遷

Webパフォーマンスは、計測技術の発達と共に、指標となる値が変わってきました。
1997年に、世界で初めてWebパフォーマンス計測事業を始めたのは、Keynote Systemsです。
その当時は、Webパフォーマンスとは、Webページを構成する全てのファイルがWebブラウザにダウンロードされるまでの時間を指しました。

ダウンロード時間は、技術の発達と共に、Webパフォーマンスの指標として不適切になっていきました。
HTML、CSS、JavaScript、画像を使ったシンプルなWebページから、Ajaxによるデータ送信・取得、それが発展したユーザの行動のトラッキングや、SPA(Single Page Application)のようなページ遷移を伴わない動的な画面変更など、Webページは技術と共に変わってきたからです。
このようにWebページのつくり方が高度になっていくのに呼応して、Webパフォーマンス計測手法も発展しました。

2000年代は、Keynote Systemsや、その最大の顧客だったMicrosoftを中心としてWebパフォーマンス計測手法が発展してきました。
2000年代の末から2010年代の初頭に、FirefoxやGoogle Chromeの台頭し、MicrosoftのメンバーやGoogleのメンバーが中心となり、Webパフォーマンス計測の標準化のために、2010年にW3C Webperformance Working Groupが創設されました。
そして、表示速度の標準化指標として、2012年12月17日に、Navigation TimingがW3C Recommendationとなりました。

W3C Web Performance Working Groupが制定した指標

Navigation Timing
ナビゲーションや要素に関連するタイミング情報の計測指標
Paint Timing
First PaintやFirst Contentful Paintなど、表示開始に関する計測指標
Resource Timing
Webページを構成するファイルのダウンロードに関する計測指標
Server Timing
サーバのレスポンス時間に関する計測指標
User Timing
開発者がJavaScriptなどのプログラムの実行速度を精度を高く計測するための指標

目標値

表示開始時間

表示開始時間とは、Webページに最初の1ピクセルが表示された時間です。
0.5秒以内に表示が開始されるのが理想です。

人間の視覚は、何かが動いたのを認識するのに、0.2秒かかります。
従って、0.5秒以内に表示を開始すれば、一瞬で表示されたように認識されます。

表示完了時間

表示完了時間とは、Webページの表示処理が完了した時間です。
何を以って表示完了とするかですが、loadイベントの終了(=Document Complete)が一般的です。
1秒以内に表示が完了するのが理想です。