速さが足りない!! ホームページの速度を上げて閲覧を快適にするWordPress構築方法

速さが足りない!! ホームページの速度を上げて閲覧を快適にするWordPress構築方法
こんにちは、フロントエンドのたくとです。
先日、当社のイケメン人事部(彼女募集中)から

ページ速度が遅いから早くしろ
求人来なかったらお前のせいだ!


と難癖を付けられたので、Webkidのホームページを改修することになりました。
今回は改修内容をまとめつつ、どうやったらページ速度があがるかまとめたいと思います。

はじめに

当社のホームページはWordpressというCMSをカスタマイズして制作しています。
Wordpressといえば、重いことでわりと有名ですが、今回は軽量化プラグインは一切使用しません。

まず、施策前のWebkidの速度を計りましょう。
速度を測るにはGoogleの「PageSpeed Insights」を使います。

使い方は簡単、URLを入力して分析ボタンを押すだけ。
ブラウザの応答を少し待てば、PC版のスコアとモバイル版のスコアが表示されます。

ちなみにWebkidのホームページは・・・

株式会社Webkid パソコン 91 / モバイル 56

あれ、そんなに遅くないじゃん。
ということで人事に報告しましたが、

お前に足りないものは、それは!
情熱・思想・理念・頭脳・気品・優雅さ・勤勉さ!
そしてなによりもォォォオオオオッ!!
速さが足りない!!

と、スクライド風に突っ返されたのでサイト改修をはじめました。

キャラクターアイコン

ページ速度ってそんなに大切なの?

キャラクターアイコン

そうね、例えばページを開くのに1000年かかったらみんな死んじゃうよ。

キャラクターアイコン

うわあああああああああああああああああああああああああ

施策1.GoogleMapの読み込みを遅延する

まず、はじめにGoogleMapの読み込みを遅延させます。
ページの読み込みと同時にGoogleMapAPIから取得し、描画させていたのを指定位置にスクロールが到達した段階で描画を行います。

結果的にオフスクリーンであるGoogleMapを非表示にすることでページ速度の遅延を解消させます。
当社の場合は「ScrollMagic」というjQueryに依存しないプラグインを導入しているので、スクロールに連動してGoogleMapを表示するよう置き換えています。

ソースコードに関しては、ここら辺を読むと幸せになります。

施策2.LazyLoadで遅延読み込み

画像を遅延読み込みさせることで有名なLazyLoadを使います。
jQueryを使用したくないので、今回はバニラで動く2系になりますね。
https://appelsiini.net/projects/lazyload/

ちなみにIE11では動かないようですので、pollyfillを使います。
pollyfillは読み込ませるだけでいいようなので、その旨を記載します。

<script src="https://cdn.jsdelivr.net/npm/lazyload@2.0.0-beta.2/lazyload.js"></script>

あとは、スクリプトを記述してHTMLのdata属性を記述すれば完了です。

<script>
 const myLazy = new LazyLoad({
  elements_selector: ".elem"
 });
</script>

HTMLは1系と異なるので注意してください。

<img class="elem" data-src="**.jpg" alt="***">

と、ここで問題が発生。
ページ速度は確かに早くなったが、スマホで実機確認した際にスクロール速度が早すぎると遅延読み込みが遅延しすぎて、逆に不自然だろという感じに。

人事部にユーザビリティーがーとか言われるのも面倒なので、今回はLazyLoadを見送りました。
ちなみにページ速度はモバイルで+8スコアくらい(当社の場合)でした。

キャラクターアイコン

今日も新小岩で電車が遅延か・・・。

キャラクターアイコン

LazyLoadだよ。

施策3.定番の画像圧縮・リサイズ

さて続いては定番の画像圧縮とリサイズです。
画像ファイルはcssやjavascriptなどと比較してもデータサイズが大きいので、画像を最適に圧縮・リサイズすればその分、読み込み速度はあがるというものです。

wordpressのプラグインを用いれば一瞬で行えますが、
有名どころのプラグインばかりなので、少なからずセキュリティリスクだったり、アップデート時の整合性だったりが気になります。
そのため、日常的に圧縮する癖をつけアップロードした画像が既に最適化されているのが理想ですね。

そんなときに役立つサービスがtinypngというサービスです。
画像を一括して圧縮してくれるので便利です。
一応、jpgも圧縮してくれるのですが、そこまで圧縮率は高くないためPhotoshopなどの「Web用に書き出し」の画質「60」くらいでもいいと思います。

リサイズの注意点

レスポンシブデザインを行った場合、通常PCで利用している画像をモバイルで使用することになります。
pictureタグを用いれば、独立して設定することもできるのですが、IEへの対応のためPolyfillを導入したり、ブレイクポイントが多いとメンテナンスが面倒だったりします。
そもそもIEに対応しない前提であれば、もっと楽な方法がいっぱいあるのにIE大好きな日本なので、残念ながら対応せざるを得ないです。

つまるところIEが全て悪い

IEの悪口はそこまでにして、webpをはじめとした諸々の技術が普及しつつあるので、
そろそろWebkidのwebpに乗り換えようと思っています。

ここまでの結果

とうことで、結果的にGoogleMap、画像圧縮しか対応していないものの、
ページ速度を測ったら以下の結果になりました。

PC版表示速度
モバイル版表示速度

おぉ、GoogleMapと画像の表示を改善するだけでこんなに上がるのか!
人事に報告したところ、不満げながらも納得してくれました。
※これで遅いと言われたら、LazyLoad対応するしかなかったです。

他社との比較

せっかくなので千葉県の競合他社さんと比較してみました。

株式会社Webkid パソコン 99 / モバイル 84
A社さん パソコン 64 / モバイル 37
B社さん パソコン 49 / モバイル 13
C社さん パソコン 78 / モバイル 29

お、おお・・・。
ちょっと圧倒的なスコアになってきましたね。

ちなみに「千葉 圧倒的」という需要のなさそうなワードで検索すると、当社が一位です。

まとめ

今回はホームページのページ速度についてブログにしてみましたがいかがだったでしょうか。
ページ速度は遅いより、早い方がいいのは当たり前ですが、いざ施策をするとなると結構手間がかかってきます。
チリも積もれば山となるという感じで、少しずつページ速度をあげていけるよう日々メンテナンスが大事ですね。

それでは、みなさま良いお年を。
フロントエンドのたくとでした。