PerfData

計算の世界

Webサイトの表示速度高速化の考え方

2017年3月7日
著者: 竹洞 陽一郎

「Webパフォーマンス改善」「Webサイト表示速度高速化」と検索すれば、色々な記事が見つかります。
その中の幾つかを、実際に試された事がある方もいらっしゃるでしょう。

「やってみたけど、速くならない」
高速化できなかった場合、その原因を知りたいと思いませんか?
今回は、高速化を確実に成功させるための、高速化の考え方、勘所を解説します。

高速化とは計算量を減らす事

Webサイトの高速化手法は、色々なものが紹介されています。
その具体的な方法は、一旦脇に置いて、抽象化して考えてみましょう。

Webサイトの高速化とは、本質的には、計算量を減らす事なのです。

私達がWebサイトをPCやスマートフォン、タブレットなどで閲覧するとき、それらの端末のCPUは計算をしています。
端末が動作するというのは、「何かを計算している」という事なのです。
従って、何かの動作を素早くするということは、「計算する速度を速くする」という事です。

Webサイトをユーザが閲覧する過程には、大雑把に分けると、以下の三つの計算作業がCPU上で行われています。

高速化の三つの方策

Webサイトの表示速度の高速化は、計算量を減らす事だと分かったので、具体的に、どのように減らすかを考えるとしましょう。
計算量を減らすためには、以下の三つのやり方があります。

追加

追加とは、ハードウェアリソースを追加するやり方です。
例えば、以下のような対策が挙げられます。

サーバを増やす
サーバを増やす事で、1 CPUあたりの計算量を減らす事ができる。
メモリを増強する
メモリを潤沢にすることで、ハードディスクにスワップする頻度を減らし、そのスワップ処理の減った分だけ、計算量を減らす事ができる。
ハードディスクを増強する
ハードディスクからSSDに交換したり、ハードディスクを増設したり、I/O処理のオーバーヘッドを減らした分だけ、計算量を減らす事ができる。

交換

交換とは、現在の実装とは異なる実装にする事で、計算量を減らすやり方です。
例えば、以下のような対策が挙げられます。

HTTP1.1から、HTTP/2へ配信プロトコルを変更する
HTTP1.1のTCP Slow Startや、3 way handshakesのオーバーヘッドを、HTTP/2のパイプライン化で減らす。
その一方で、TLSのハンドシェイク処理が増えるので、それがHTTP1.1でのオーバーヘッドを下回る場合に有効となる。
PHPのバージョンアップ
PHP5.xから7.xへのバージョンアップによって、言語の処理系そのものの高速化の恩恵を享受する。
WordPressのプラグインを使う
WordPressの各種プラグイン、例えば、画像圧縮、キャッシュの機能を持つプラグインを導入する。
プラグインを追加したことで増えた計算量が、プラグインの効果でWeb配信全体の減らせた計算量を下回れば、効果が出る。

削除

削除とは、計算そのものを削減するやり方です。
例えば、以下のような対策が挙げられます。

画像を削除する
読み手に伝えたい情報に直接関与しない画像を削除する。
その分、サーバ側も、ネットワークも、クライアント側も、計算量が減る。
サードパーティコンテンツの削除
効果測定や広告関係で、どうしても必要なものだけを残し、あとは削除する。
その分、クライアント側のブラウザ処理で、計算量が減る。
情報の価値を向上させる事に貢献しないコンテンツを削除する
伝えたい情報について補完関係に無い、単なる見栄えや印象のための表現処理を削除する。
その分、サーバ側も、ネットワークも、クライアント側も、計算量が減る。

まずは計測、そして分析

高速化は、上述の「追加・交換・削除」のいずれかに該当します。
これら、三つの方策を闇雲に試していたのでは、時間が掛かりますし、本当に効果を発揮するかどうか分かりません。
例えば、CPUの使用率が大して高くないのに、CPUを増やしても、1 CPUあたりの計算量は大して減らないです。

大事なのは、Webサイトの表示速度の計測を行い、そのデータを分析して、ボトルネックになっている箇所を明確にする事です。

Webサイトの高速化は病気の治療と同じ

Webサイトの高速化は、別のものに喩えると、病気の治療と同じです。
もしも、お医者さんが診察もせずに、「とりあえず、切開してみますか」と言ったら、そんなお医者さんに任せられますか?
Webサイトの高速化も、まずは診察=計測が大事なのです。

パレートの法則

皆さんは、パレートの法則(80:20の法則)をご存知でしょうか?
イタリアの経済学者 ヴィルフレド・パレートが発見した冪乗則べきじょうそくです。
冪乗則とは、統計モデルの一つです。

この法則は、経済だけでなく、自然現象、社会現象などでも当て嵌まるものが多く、Webサイトも同様なのです。
Spelldataでは、高速化コンサルティングの際に、まずは計測して、Webサイトの遅延原因を特定します。
それは、全体の遅延の80%を引き起こす、20%を見つけ出すためです。

特定できた遅延要因について、真っ先に考えるのは、「削除」です。
これが最も強力な高速化になります。

「削除」できない場合は、「交換」を次に考えます。
「交換」の策は、綿密な調査と論理的な考察と地道な検証が必要になります。
「交換」ではどうにもならない場合があります。その場合には、「追加」の策を採る事になります。

継続的な計測と分析が必要な理由

さて、パレートの法則に従い、遅延の8割を引き起こす、原因2割を解決すれば、後は計測は必要無いのでしょうか?
いいえ、アクセス数の多いサイトであればあるほど、高速化すると、必ずアクセス数がより増えて、別の遅延要因が現れます。

遅延要因の1番目、2番目を解決すれば、3番目が主たる遅延要因になるかというと、そうではないのです。
順位としては低かったものが遅延要因として、全体の8割を占めるようになった、という事が多々あります。

システムでは、一番弱い箇所が、遅延要因となります。
A chain is no stronger than its weakest link.(鎖の強さは、最も弱い結び目で決まる)という諺があります。
Webサイトは、他のITシステム同様に、非常に複雑な構成要素から成り立っているため、実際にやってみないと、次のWeakest Linkが特定できない事が多いのです。

Webサイト高速化のプロジェクト成功の鍵

Webサイト高速化プロジェクトの成功の鍵を握るのは、「波に乗っている」感を関係者全員で体感することです。
高速化すればするほど、達成感や充実感を味わう事が出来ますし、その結果としてページビュー数が増えたり、コンバージョン率が改善すれば、「やって良かった!」と盛り上がります。
だから、まずは、最初の段階で、遅延の80%を生み出している20%の原因を特定して改善する事が重要なのです。

人は、暗中模索の状態だと不安になってしまって、その結果、プロジェクトチームの雰囲気が暗くなり、徒労に終わってしまうのではないかという不安が渦巻きます。
しかし、計測によって、解決すべき事項が明確であり、且つ、きちんと成果が出れば、プロジェクトチームの雰囲気は希望と達成感で明るくなります。
その改善策を練る時に、高速化の三つの方策、削除→交換→追加の順番での検討を行えば、策を間違える事は無いでしょう。