ページスピードインサイトで「 次世代フォーマットでの画像の配信」の問題を解決する方法
PageSpeed Insightsで「改善できる項目」として、次世代フォーマットでの画像の配信という項目が表示された時の対処方法です。
次世代フォーマットでの画像の配信とは
JPEG 2000、JPEG XR、WebP などの画像フォーマットは、PNG や JPEG より圧縮性能が高く、ダウンロード時間やデータ使用量を抑えることができます。詳細
また、『現在使用している画像形式は、圧縮率が低くページの表示スピードに悪影響を及ぼしているのですぐに変更しましょう。』とも言い換える事が出来ると思います。
どの画像フォーマットを選べば良いの?
理由は、それぞれ対応しているブラウザが限られるため。
下記に対応状況がありますのでご覧ください。(画像は投稿時の物)
最新の状況は、画像下の Can I use のリンクからご覧頂けます。
JPEG 2000(ジェイペグにせん)のサポート状況
画像クリックで拡大します。
Can I use で確認すると、サポートしているのは、緑で表示されているブラウザ(Safari系)のみという事が判ります。
JPEG XR(ジェイペグ エックスアール)のサポート状況
同じく、Can I use で調べると、IE または、Edge のみ対応となっているのが判ります。
WebP(ウェッピー)のサポート状況
Can I use の結果はご覧の通り。
最も多くのブラウザでサポートされており、今後対応していくブラウザも増えていくそうです。
という事で、WebP(ウェッピー)に画像を置き換えていきます。
その前に・・
JPEG と WebP形式の画像を比較してみる。
★使用画像(PR:高解像度の写真素材なら【写真AC】)
JPEG(710×450px)386 KB
画像URL:https://msstyle.jp/wp-content/uploads/2019/07/fireworks710-450.jpg
WebP(710×450px)80KB
画像URL:https://msstyle.jp/wp-content/uploads/2019/07/fireworks710-450.webp
↑ブラウザが対応していない場合は表示されません。(文字列のみ表示)
わずか、80 KB しかありませんがこの画質です。
拡張子は「.webp」となります。
表示されている方は、画像を見比べてみて下さい。
IE や iPhone(Safari)で表示されないんじゃ使えなくね?
とお思いの方もおられると思います。
大丈夫です!
これから、対応していないブラウザでも画像を表示させる方法をご紹介します。
厳密に言うと、
・対応していないブラウザには、画像A(JPEG or PNG)
・対応しているブラウザには、画像B(WebP)
を表示させる記述をします。
ブラウザに応じて WebP 画像と JPEG または PNG 画像を切り替えて表示
基本のコードはこんな感じです。
<picture>
<source srcset="/images/sample.webp" type="image/webp" />
<img src="/images/sample.png" alt="サンプル画像" />
</picture>
2行目でWebPに対応しているブラウザなら WebP画像を表示、対応していないブラウザでは、3行目の画像を表示させる事ができます。
しかも、両方の画像を読まず対応している画像のみを読み込むのでページが重くなりません。
こうすることで、全てのブラウザで最適な画像を表示できます。
デモ(対応・未対応で画像が切り替わります)

★使用画像(PR:高解像度の写真素材なら【写真AC】)
WebP画像の作成方法
「WebP 変換」で調べるとたくさん出てきますが、私がよく使用させて頂いているサイトをご紹介します。(オンライン上で変換できます)
WEBP変換ツール (jpg、pngとwebpを相互変換)
WebPコンバーター
https://lab.syncer.jp/Tool/Webp-Converter/
使い方
「ファイルを選択」の部分にドロップさせてもOK。
先程の画像の例
412.1KB → 80KB まで削減できました。
画像のダウンロード方法
①変換後の画像をクリックで自動ダウンロード。
②右クリックから名前をつけて保存(推奨)
デスクトップ上で表示(アイコン)
画像のように、HTML ドキュメントとして保存されます。
なので、名前を付けて保存する事でファイルの判別がしやすくなります。
WordPressでWebP形式の画像を使用するには
①FTPソフトを使って手動でアップする。
上記の通り手動でアップします。
画像URL:https://msstyle.jp/wp-content/uploads/2019/07/fireworks710-450.webp
↑これを先程のコードに置き換えると使えます。
②プラグインを使ってアップする。
デフォルトの状態では、WebP 形式の画像はアップできないので、プラグインを使用します。
当サイトでは「EWWW Image Optimizer」を使用しています。
使い方はこちらが参考になります。
③PHPを使ってアップする。
プラグインを使いたくない方向けです。
注意事項
それほど難しい作業ではないですが、知識が無い方は触らないほうが無難です。
functions.php に下記を記入するだけで、アップロード出来るようになります。
function custom_mime_types( $mimes ) {
$mimes['webp'] = 'image/webp';
return $mimes;
}
add_filter( 'upload_mimes', 'custom_mime_types' );
ここから「picture 要素」の詳しい解説です。
<picture> タグの対応状況
Can I use の結果です。IEが未対応になってますが、下記のコードでも画像は表示されます。
記事内で使用する画像は、下記のような簡単なコードで使用できるのはお伝えしました。
<picture>
<source srcset="/images/sample.webp" type="image/webp" />
<img src="/images/sample.png" alt="サンプル画像" />
</picture>
これまで、CSSファイルにメディアクエリを書いてレスポンシブに対応していた作業が不要になります。
(しかも、3種類画像を用意していた場合、全ての画像が読み込まれていた → 重くなる)
例)picture タグを使ったレスポンシブ対応の書き方
<picture>
<source media="(min-width: 1300px)" srcset="/images/pc.webp" type="image/webp">
<source media="(min-width: 768px)" srcset="/images/tab.webp" type="image/webp">
<source media="(min-width: 100px)" srcset="/images/sp.webp" type="image/webp" sizes="100vw">
<source media="(min-width: 1300px)" srcset="/images/pc.jpg">
<source media="(min-width: 768px)" srcset="/images/tab.jpg">
<source media="(min-width: 100px)" srcset="/images/sp.jpg" sizes="100vw">
<img alt="サンプル画像" class="responsive" src="/images/pc.jpg" />
</picture>
ご覧の様にメディアクエリを書くことで、画像の切り替えができます。(ブレイクポイントに合わせて書き換えOK)
しかも、これだけ多くの画像ファイルを設定しても、読み込まれる画像は1枚だけです。
(ブラウザが一瞬で判別し条件に合わない画像はスルーします。神対応w)
各ブラウザ毎の表示
・picture タグ対応、WebP 対応、画面幅1300px 以上の場合 → pc.webp が表示されます。
・picture タグ対応、WebP 未対応、画面幅 768~1299pxの場合 → tab.jpg が表示。
・picture タグ対応、webP 未対応、画面幅 100~767px(スマホを想定)→ sp.jpg が 画面幅100%で表示。
・picture タグ未対応、webP 未対応(IEを想定)の場合、pc.jpg が表示される。
ページスピードインサイトで再チェック
合格した監査に表示されれば、この課題はクリアです。
<picture>要素のより詳しい使い方と解説は下記のサイトが参考になります。
おすすめの書籍
参考になれば幸いです。
ディスカッション
コメント一覧
まだ、コメントがありません