Next.jsのImageコンポーネント:sizes、preload、外部画像

Next.jsのImageコンポーネントガイド

Next.jsのImage:sizes、preload、remotePatterns、LCP | We.Inc

Next.js 16でのnext/imageの仕組みを解説します。width、height、fill、sizesの計算ツール、priorityに代わるpreload、remotePatterns、qualities、srcsetの既定の幅まで。

next/imageからImageをインポートし、srcとaltに加えて、widthとheightの組み合わせかfillのどちらかを渡します。表示される幅が画面に応じて変わるときは必ずsizesの文字列を付けると、ブラウザーはより小さなファイルをダウンロードします。LCPとなるヒーロー画像にはpreloadを設定します(Next.js 16でpriorityに代わりました)。外部ホストはimages.remotePatternsで許可します。

速度を左右するプロパティ

Next.jsでは、画像に関して陥りやすい失敗が2つあります。sizesのないfill画像のせいでスマートフォンがデスクトップ用のファイルをダウンロードしてしまうこと、そしてヒーロー画像が遅延読み込みを待ってしまうことです。このページでは各プロパティをわかりやすく説明し、レイアウトに合ったsizesの文字列を書き出す計算ツールを用意し、Next.jsが現在使っている設定の既定値を一覧にしています。

よくある質問

priorityプロパティは非推奨ですか?

はい。Next.js 16から、ドキュメントではpriorityが非推奨とされ、代わりにpreloadが推奨されています。preloadはhead内にプリロード用のリンクを挿入します。ドキュメントには、ほとんどの場合はloading="eager"かfetchPriority="high"のほうが良い選択であり、preloadをそのどちらとも組み合わせるべきではないとも書かれています。

next/imageでホスト名が設定されていないと表示されるのはなぜですか?

外部画像は、next.configのimages.remotePatternsのいずれかの項目に一致する必要があります。プロトコル、ホスト名、そして/photos/**のようなパス名を持つオブジェクトを追加し、開発サーバーを再起動してください。どのパターンにも一致しないリクエストには、画像最適化の処理から400のレスポンスが返ります。

sizesプロパティは実際に何を変えるのですか?

CSSが読み込まれる前に、各ブレークポイントで画像がどれくらいの幅になるかをブラウザーに伝えます。sizesがあると、Next.jsは1xと2xだけでなく、幅に基づく完全なsrcset(640w、750wなど)も出力するので、スマートフォンははるかに小さなファイルを選べます。

fillを使う場合もwidthとheightは必要ですか?

いいえ。fillとwidth/heightはどちらか一方を使うものです。fillでは画像が位置指定された親いっぱいに広がり、切り抜き方はstyleまたはclassNameプロパティを通じてobject-fitで制御します。

最適化された画像はどれくらいキャッシュされますか?

minimumCacheTTLの既定値は14400秒、つまり4時間です。実際の最大有効期間は、この値と元画像が送るCache-Controlヘッダーのうち大きいほうです。静的にインポートした画像はファイル名にハッシュが付くため、長期間の不変キャッシュが適用されます。

このコンポーネントがある理由

LCPを正しく扱う

触ることになる設定

よく使うプロパティの一覧

next/imageのプロパティ(Next.js 16のリファレンス)

画像設定の既定値

next.configのimages設定とその既定値

コピーして使える例

静的インポートしたヒーロー画像

インポートによって、Next.jsは実際の寸法とぼかしのプレースホルダーを得ます。preloadでhead内からダウンロードが始まります。

fillとsizesを使ったカードのグリッド

各カードはデスクトップではページの3分の1、タブレットでは半分、スマートフォンでは全幅になり、sizesの値はまさにそれを表しています。

外部画像ホスト用のnext.config.ts

1つのホストの/uploads/以下にあるHTTPSのファイルだけを許可します。画質の値は2つ許可しています。

全幅

デスクトップでは半分

2カラムのグリッド

3枚のカードのグリッド

4枚のカードのグリッド

sizes計算ツール

レイアウトとブレークポイントを選んでsizes属性を生成し、特定の画面が既定のsrcsetのうちどの幅をダウンロードしそうかを確認できます。

レイアウト

スマートフォンのブレークポイント(px)

タブレットのブレークポイント(px)

画面の幅:{n}px

ピクセル密度

{screen}pxでは、画像の枠は約{slot}pxの幅({vw}vw)です。{dpr}xの密度では{need}デバイスピクセルが必要なので、ブラウザーはおそらく{pick}wの候補を取得します。

コピー

既定の候補の幅:{list}。より大きなファイルがすでにキャッシュされている場合など、ブラウザーが別の幅を選ぶこともあります。

無料で始める · クレジットカード不要

関連: ガイド|Webマーケティングと集客を学ぶ

製品

ご利用いただける方

機能

リソース

会社情報

サイトマップを見る