【ちえんよみこみ】

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

💡 「見えるまで読み込まない」省エネ技法
📌 このページのポイント
遅延読み込み(Lazy Loading)と通常読み込みの比較 通常読み込み ページ表示時にすべて読み込む 画像1 画像2 画像3 画像4 ⏱ 初期表示が遅い 遅延読み込み 必要になったら読み込む 画像1 画像2 待機 待機 ⚡ 初期表示が速い スクロールで画面内に入ると 画像の読み込みを開始 → 帯域とメモリの節約に貢献
遅延読み込みのイメージ
ひよこ ひよこ

どういう仕組みなの?

ペンギン先生 ペンギン先生

ユーザーがスクロールして画像が画面に近づいた時に初めて画像をダウンロードする。20枚の画像があるページで、最初に見えるのは3枚だけなら、残り17枚の読み込みを後回しにできる。HTMLにloading="lazy"と書くだけでブラウザが自動でやってくれるよ

ひよこ ひよこ

全部の画像にlazy付ければいい?

ペンギン先生 ペンギン先生

ファーストビュー(ページ表示直後に見える領域)の画像にはlazyを付けない方がいいよ。LCP(Largest Contentful Paint)に影響する画像をlazyにすると、逆にCore Web Vitalsスコアが下がることがある。ファーストビューの画像にはloading="eager"(デフォルト)+fetchpriority="high"を付けるのが正解だね

ひよこ ひよこ

画像以外にもLazy Loadingはある?

ペンギン先生 ペンギン先生

あるよ。①コード分割(Code Splitting):JavaScriptモジュールを必要な時にdynamic import()で読み込む、②iframe:YouTubeの埋め込みにloading="lazy"を付ける、③コンポーネントの遅延読み込み:ReactReact.lazy()やVueのdefineAsyncComponent。ページの初期バンドルサイズを小さくする効果があるよ

ひよこ ひよこ

SEOへの影響は?

ペンギン先生 ペンギン先生

GooglebotはIntersection Observerやloading="lazy"に対応しているから、遅延読み込みした画像もインデックスされる。ただしJavaScriptが実行されない検索エンジン(一部のクローラー)ではインデックスされない可能性がある。重要なコンテンツ画像はlazyにしない、または

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「遅延読み込み」って出てきたら「必要になるまで読み込みを後回しにする技術」と思えればだいたいOK!
📖 おまけ:英語の意味
「Lazy Loading」 = 怠惰な読み込み
💬 Lazy(怠惰な)。必要になるまで「怠けて」読み込まない、というニュアンスだよ
← 用語集にもどる