今回から数回にわたって、Googleが進める"Make the Web Faster" というプロジェクト(プロジェクト)について、プロジェクトにリストされたGoogleのプロダクトや仕様提案、ベストプラクティスなどを連載形式で紹介します。
Make the Web Faster
"Make the Web Faster" のページには、文字通り Google が 「ウェブを速くするため」に開発したプロダクトや、新しい仕様の提案、ベストプラクティスなどがリストされています。
例えば以下のようなものがあります。
- WebP
- TCP Fast Open
- Google DNS
- Google Hosted Libraries
- Page Speed
- SPDY
- etc…
Make the Web Faster
この連載では、そこから特に重要なものを、筆者の気の向いた順に紹介していきます。今回は、これら “Make the Web Faster" を紹介するにあたり、共通して押さえておくべき基本知識について紹介します。
ウェブというターゲット
プロジェクトにはさまざまな手法がリストされていますが、全てに共通するのは「Webの高速化」を目的としている点です。対象がウェブであるために、共通するチューニングの観点としては大きく「ネットワーク」と「アプリケーション」の2つが考えられます。
ネットワークのチューニング
ウェブはネットワークへのアクセスを伴います。ネットワークを効率よく使うことは、パフォーマンスの改善を試みる上で非常に重要です。
まずは、一番簡単な原則としてこれだけは覚えておいてください。
なるべく小さく
ウェブは、HTML、CSS、JS、画像、動画などのデータをネットワーク経由でクライアントに届けています。このデータが小さければ小さいほど、速く届けることができます。特に画像や動画はサイズが大きくなりがちです。送る上でなるべく小さくするにはどうするか、ここで圧縮などの技術が有効になります。
なるべく少なく
ネットワークアクセスの回数が増えるほどオーバーヘッドが大きくなるため、極力少ない方が望ましいです。アクセス回数を減らす工夫や、プロトコル仕様レベルの改善などがあります。
なるべく近く
ネットは世界の裏側でも簡単にデータを届けることができますが、遠ければそれだけ遅くなってしまいます。しかし、コンテンツの種類によっては、ユーザーに近いところに配置するなど、工夫できるところがあります。
他にも HTTP と TCP についての基本的な知識が必要な回もあります。そうした場合は、3 Minutes Networking や、現在執筆が進んでいる High Performance Browser Networking などが参考になるでしょう。(この本はすでにHTTP2.0など最新のトピックも扱っています。)