Insight / 速くて快適なサイト
画像とフォントで表示速度を半分にする
読了目安 9 分
この記事の結論
多くの中小企業サイトで最も重い要素は、最適化されていない画像です。スマホで撮った数 MB の写真をそのまま載せているのが典型例。AVIF は JPEG 比で約 50% も軽く、picture 要素で安全に切り替えられます。さらに画像にサイズを指定すれば画面のガタつき(CLS)が止まり、フォントは font-display と preload で文字のちらつきを抑えられます。コードを書き換えるより前に、まず「重い画像を直す」だけで体感速度は大きく変わります。
1. サイトを重くする最大要因は画像
「サイトが遅い」と相談を受けて中身を見ると、原因の上位に必ず入るのが画像です。とくに多いのが、スマートフォンで撮影した数 MB の写真を、サイズも形式も変えずにそのまま載せているケースです。
画像は、Core Web Vitals の中で「主要な中身が表示される速さ」を測る LCP を最も悪化させる典型要因です。ファーストビューの大きな写真が重いと、ページが表示されきるまでの時間がそのぶん延びます。
逆に言えば、画像を適切に直すだけで体感速度は大きく変わります。コードの書き換えやサーバーの引っ越しといった大がかりな作業の前に、まず取り組む価値があるのが画像の最適化です。
2. AVIF / WebP — 軽い画像形式を使う
同じ写真でも、保存する「形式」を変えるだけでファイルサイズは大きく変わります。現在の主役は AVIF と WebP の 2 つです。
web.dev によると、AVIF は JPEG 比で約 50%、WebP 比でも 20〜30% ファイルサイズが小さくなります。見た目の品質をほぼ保ったまま、写真の重さを半分近くまで落とせるということです。ブラウザの対応も広く、2025 年 9 月時点で AVIF が約 94%、WebP が約 95% の環境で表示できます。
つまり「JPEG や PNG のまま載せている写真を AVIF / WebP に変換する」だけで、ほとんどのサイトは目に見えて軽くなります。撮影した写真をアップロードする前に、変換のひと手間を挟む。これが最も費用対効果の高い最適化です。
3. picture 要素で安全に切り替える
AVIF は軽い一方、ごく一部の古い環境では表示できません。そこで使うのが picture 要素です。複数の画像形式を並べて書いておくと、ブラウザが「自分が表示できる中で最も上にあるもの」を自動で選びます。
定石は、AVIF を主、WebP をフォールバック、JPEG を最終保険として並べる構成です。AVIF が使える環境では AVIF、使えなければ WebP、それも無理なら JPEG、と段階的に降りていきます。すべての訪問者が「その環境で最も軽い画像」を受け取れます。
この仕組みは一度組んでしまえば、あとは画像を差し替えるだけ。新しい形式が普及しても、同じ構成のまま対応できる拡張性も持っています。
4. サイズ指定で画面のガタつきを止める
画像でもう一つ起きがちなのが、読み込んだ瞬間に周囲のレイアウトがガタッとずれる現象です。これは Core Web Vitals の CLS(表示のずれ)を悪化させ、読んでいた行を見失わせたり、ボタンの誤タップを誘発したりします。
原因は、画像にサイズが指定されていないこと。サイズ指定がないと、ブラウザは画像が届くまで「どれだけの場所を空けておけばいいか」が分からず、画像が来てから慌てて場所を確定します。そのぶん下の要素が押し下げられてずれます。
対策はシンプルで、画像に幅と高さ(または縦横比)をあらかじめ指定すること。場所を先に確保しておけば、画像が届いてもレイアウトは動きません。img 要素に width と height を書く、この一手間だけで CLS の主因の一つが消えます。
5. フォントのちらつきを抑える
画像の次に注意したいのがフォントです。Web フォントは読み込みに時間がかかり、その間に「文字が一瞬消える」「あとから別のフォントに入れ替わって行がずれる」といったちらつきが起きます。
web.dev が挙げる最有力の対策が、font-display: optional とフォントの preload の組み合わせです。optional は「読み込みが間に合わなければ無理に切り替えず代替フォントのままにする」設定で、後からの入れ替わりによるレイアウトシフトを防ぎます。preload は重要なフォントを早めに読み込ませる指定です。
補足として、フォントを自分のサーバーに置く(self-host)場合でも preload には crossorigin 指定が必要です。また size-adjust を使うと、代替フォントと本来のフォントの大きさの差を揃え、入れ替わり時のずれをさらに抑えられます。
6. 【Top 6】速度を半分にする実装手順
効果が大きく取り組みやすい順に、実際の作業手順としてまとめます。上から進めるのが効率的です。
重い画像を洗い出す — PageSpeed Insights や DevTools で、ファイルサイズの大きい画像とファーストビューの LCP 画像を特定する。
表示サイズまで縮小する — そもそも画面に表示される寸法より大きい画像は無駄。表示幅に合わせてリサイズしてから載せる。
AVIF / WebP に変換する — JPEG・PNG の写真を AVIF / WebP へ。JPEG 比で約半分まで軽くなる。
picture 要素で 3 段構成にする — AVIF 主・WebP フォールバック・JPEG 保険。すべての環境で最も軽い画像が届く。
すべての画像に width / height を指定する — 場所を先に確保し、読み込み時のガタつき(CLS)を止める。
フォントに font-display と preload を設定する — 文字のちらつきと入れ替わりによるシフトを抑える。size-adjust も併用する。
画像とフォントは「直せば確実に効く」領域です。大がかりな作り直しをしなくても、形式変換・サイズ指定・フォント制御だけで LCP と CLS は大きく改善します。T.C.HARTON は全ページの画像とフォントを含む Core Web Vitals を実測し、方法論ページで公開しています。まずは現状サイトの「一番重い画像」を知ることから始められます。
よくある質問
- AVIF と WebP はどちらを使えばいいですか?
- AVIF は JPEG 比で約 50%、WebP 比でも 20〜30% ファイルサイズが小さく、最も軽い形式です。ブラウザ対応も AVIF が約 94%、WebP が約 95%(2025 年 9 月時点)と十分広がっています。picture 要素を使い、AVIF を主・WebP をフォールバック・JPEG を最終保険として並べておくのが現実的な構成です。
- 画像で画面がガタつくのを防ぐにはどうすればいいですか?
- 画像に幅と高さ(または縦横比)をあらかじめ指定しておくことです。サイズ指定がないと、画像が読み込まれた瞬間に表示領域が確定して周囲のレイアウトがずれ、CLS が悪化します。サイズを先に伝えておけば、ブラウザは画像が届く前に場所を確保でき、ガタつきを防げます。
- font-display: optional とは何ですか?
- font-display: optional は、Web フォントの読み込みが間に合わなければ無理に切り替えず代替フォントのまま表示する設定です。フォント preload と組み合わせると、文字の表示が遅れたり後から入れ替わったりするレイアウトシフトをほぼゼロに抑えられます。web.dev はこれをシフト対策の最有力として挙げています。
- 画像とフォントの最適化で本当に速くなりますか?
- 多くの中小企業サイトでは、最も重いのが最適化されていない画像です。スマホで撮った数 MB の写真をそのまま載せているケースが典型で、これを適切な形式・サイズに直すだけで表示速度は大きく改善します。フォントの読み込み制御と合わせれば、LCP と CLS の両方に効きます。
関連記事
出典
- web.dev, Best practices for fonts — web.dev/articles/font-best-practices
- web.dev, Improve font fallbacks with size-adjust — web.dev/articles/css-size-adjust
- caniuse, AVIF image format — caniuse.com/avif
- web.dev, Web Vitals — web.dev/articles/vitals
Free Diagnosis
あなたのサイトの一番重い画像は、どれですか
無料診断では、現状サイトの画像・フォントを含む Core Web Vitals を実測し、削れる重さをお見せします。発注前に「成功の基準」を一緒に決めます。診断だけで終わっても費用は一切かかりません。
1 分で無料診断を申し込む