こんにちは!Web制作やフロントエンドの世界へようこそ。
日々、素敵なホームページやWebアプリを作っていると、避けて通れないのが「表示スピード(パフォーマンス)」の悩みですよね。
「画像をたくさん載せたら、ページが重くなってしまった……」
「スマホで見るときに、一番下の画像なんて最初はいらないのに、全部まとめて読み込もうとするからイライラする!」
そんなWeb制作現場の永遠の課題を、魔法のようにスッキリ解決してくれる救世主がいます。それが、今回お話しする「ネイティブLazy Loading(`loading=”lazy”`)」です。
難しい言葉や仕組みに圧倒されてしまうかもしれませんが、大丈夫ですよ。今回は、お買い物の流れや身近なモノに例えながら、ブラウザの頭の中をのぞき見する感覚で優しく紐解いていきましょう!
—
1. ブラウザさんは、実は「真面目すぎる働き者」
まず、私たちが普段何気なく使っているWebブラウザ(Google ChromeやSafariなど)が、ページを表示するときに裏側でどんな仕事をしているかを知ることから始めましょう。
ブラウザさんは、例えるなら「超がつくほど真面目なスーパーの店員さん」です。
あなたがWebサイトのURLをポチッと押すと、ブラウザさんは「よし!お客様がいらっしゃったぞ!」と大慌てでHTMLという名の「お買い物リスト」を上から順番に読み込み始めます。
ここで問題になるのが、ページの中に画像がたくさんある場合です。
昔のやり方だと、ブラウザさんは「お客様がまだ見ていない(画面の一番下にある)画像も含めて、お店にあるすべての商品を、開店と同時に一斉に棚に並べよう」としていました。
これが、ページが重くなる(表示が遅くなる)原因です。まだスクロールして見てもいない画像のために、貴重な通信量やスマホのパワーを最初に使い果たしてしまうのですから、ブラウザさんもお疲れ気味になってしまいますよね。
2. そこで登場したのが、ネイティブLazy Loading!
「最初に見えない画像は、お客様がその売り場(スクロールして画面内)にやって来るまで、バックヤードに置いておけばいいじゃない!」
このナイスなアイデアを実現したのが、HTMLの `loading=”lazy”` という属性です。これが「ネイティブ」と呼ばれるのは、JavaScriptという難しいプログラムを使わなくても、ブラウザ(ChromeやSafariなど)自身が標準の機能として持っているからなんですね。
HTMLにこの魔法の言葉をたった一つ書き添えるだけで、ブラウザさんは次のように賢くお仕事を変えてくれます。
1. 初期ロード時: 画面に見えている(ファーストビューにある)画像だけを真っ先に読み込んで、ページを素早く表示する。
2. スクロール時: ユーザーが下へスクロールしていき、「おっ、そろそろこの画像が見えてくるな」というタイミングを見計らって、裏側からこっそり画像を読み込んで表示する。
まるで、あなたの代わりに優秀なスタッフが先回りして商品を陳列してくれているようなものです。これなら、ページを開いた瞬間の表示スピードが劇的に速くなりますよね!
—
3. 実際の書き方を見てみましょう
「難しそうだな……」と思いましたか?
安心してくだだい。書き方は驚くほどシンプルです。普段使っている `` タグや `
以下のサンプルコードを見てみてください。そのままコピーして、ご自身の練習用ファイルに貼り付けて試すことができますよ。
ネイティブLazy Loadingの実験室
最初の画像は、ページを開いた瞬間にすぐ読み込まれます!
ここから下は、画面をスクロールして近づいてきたら初めて読み込まれます。
💡 ここでちょっとしたワンポイントアドバイス!
一番最初にパッと目に入る画像(ヘッダーのメインビジュアルなど)にまで `loading=”lazy”` を付けてしまうと、「あれ、画像がなかなか表示されないぞ?」とユーザーを不安にさせてしまいます。
- 画面の最初に見える画像: つけなくてOK(あるいは `loading=”eager”`)
- スクロールしないと見えない下のほうの画像: `loading=”lazy”` をつける!
この「使い分け」を意識するだけで、あなたの作るWebサイトはプロ顔負けの快適なスピードに生まれ変わりますよ。
—
4. レンダリングパス(ブラウザの裏側の世界)への優しい影響
最後に、少しだけプロっぽいお話をしますね。
ブラウザが画面を作り上げる一連の流れを「レンダリングパス」と呼びます。
私たちが `loading=”lazy”` を設定すると、ブラウザさんは次のような嬉しい省エネ行動をとってくれます。
- ネットワークの渋滞を防ぐ: 初期表示のときに、不要な画像データのダウンロードで回線を独り占めしません。そのおかげで、人間にとって一番大事な「文字(テキスト)」や「デザインの骨組み(CSS)」が、驚くほどスムーズに画面に到着します。
- メモリの節約: まだ使われていない画像データを一時的にため込む必要がないため、スマホやパソコンのメモリ(脳みそ)への負担が軽くなります。バッテリーの持ちが良くなるのも、ユーザーにとって大きな優しさですね。
—
まとめ
いかがでしたでしょうか?
`loading=”lazy”` は、私たちが複雑なプログラミングをしなくても、HTMLの小さなワンフレーズでブラウザさんと意思疎通をはかれる、とっても素敵な機能です。
「全部を一気にやらせるのではなく、必要なタイミングで、必要な分だけお願いする」。
これはWeb制作のパフォーマンス最適化だけでなく、日々の暮らしや仕事に通じる心地よさがありますよね。
最初につまずきやすいポイントも、こうして仕組みを知ってしまえば怖くありません。ぜひ次の制作から、画像のタグにそっと `loading=”lazy”` を添えて、快適なWebの世界を広げていってくださいね!

コメント