【ちえんよみこみ】

遅延読み込み(Lazy Loading) とは?

最終更新:
💡 必要になるタイミングに合わせて読み込む

画像やコードなどを、必要になるタイミングに合わせて読み込む方法。初期表示に不要なリソースを後回しにし、最初の通信量や処理を減らす。

📌 このページのポイント
画像を読むタイミングの違い通常の読み込み画像 1画像 2画像 3画像 4画面外も取得する遅延読み込み画像 1画像 2後回し後回し遠い画像は後で取得破線は画面の下端を表す模式図
画面外でも近くの画像は先に取得される場合がある。距離や開始時期はブラウザが判断する。最初に見せる重要な画像は遅延させず、表示領域も確保する。
ひよこ ひよこ
どういう仕組みなの?
ペンギン先生 ペンギン先生
たとえば画像にloading="lazy"を指定すると、ブラウザが画面からの距離などを見て取得時期を判断するよ。20枚あるページなら、遠くの画像を後回しにできる。ただし、見える瞬間まで必ず待つわけではない。表示に間に合うよう、画面へ近づいた段階で取得を始めることもあるんだ。
ひよこ ひよこ
全部の画像にlazyを付ければいい?
ペンギン先生 ペンギン先生
ページを開いて最初に見える重要な画像は、遅延させない方がいいよ。特にLCPの対象になる大きな画像を遅らせると、表示が遅くなることがある。fetchpriority="high"も、重要な画像を優先するための指定だ。最初に見える全画像へ一律に付けるのではなく、何を優先したいかを考えよう。
ひよこ ひよこ
画像が読み込まれた時に、文章がずれるのは防げる?
ペンギン先生 ペンギン先生
画像のwidthとheightなどを指定して、先に表示領域を確保する方法があるよ。画像が届いてから場所を広げると、下の文章が動いてしまう。遅延読み込みだけで表示の安定性まで解決するわけではないので、画像のサイズ指定も合わせて確認するんだ。
ひよこ ひよこ
画像以外にも使うの?
ペンギン先生 ペンギン先生
iframeにもloading="lazy"を指定できるよ。また、JavaScriptを小さく分け、必要な機能を使う時にdynamic import()で取得する方法もある。Intersection Observer APIで画面との位置関係を検知して、独自の読み込み処理を動かすこともできるんだ。対象によって実装方法は違うよ。
ひよこ ひよこ
遅延読み込みした画像も、検索に載る?
ペンギン先生 ペンギン先生
自動的に登録されるとは限らないよ。Googleのクローラーはスクロールやクリックをしないので、その操作が必須の読み込みは避ける必要がある。レンダリング後のHTMLに画像のURLや必要な内容が現れるかを、URL検査などで確認しよう。lazyという指定の有無だけで、検索への登録は決まらないんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「遅延読み込み」って出てきたら「必要になるまで読み込みを後回しにする技術」と思えればだいたいOK!
📖 おまけ:英語の意味
「Lazy Loading」 = 怠惰な読み込み
💬 Lazy(怠惰な)。必要になるまで「怠けて」読み込まない、というニュアンスだよ

参考資料

← 用語集にもどる