Next.js 14 の App Router 環境で next/image を活用する方法について解説します。画像の最適化やレスポンシブ対応、ローカル画像・外部画像の扱い方などを詳しく紹介します。
Next.js には組み込みの画像最適化機能を提供する next/image
コンポーネントがあります。
これを利用することで、
自動的な画像の最適化 や レスポンシブ対応、遅延読み込み(lazy loading) などが可能になります。
本記事では、Next.js 14 の App Router における next/image
の基本的な使い方や設定について詳しく解説します。
next/image
を使うことで、以下のようなメリットがあります。
Next.js では、public/
フォルダ内の画像を next/image
で表示できます。
JSXimport Image from "next/image"; import exampleImage from "../public/example.jpg"; export default function Home() { return ( <div> <h1>ローカル画像の表示</h1> <Image src={exampleImage} alt="サンプル画像" width={500} height={300} /> </div> ); }
✅ ポイント
src
にローカル画像のパスを指定width
と height
を明示的に設定する必要がある外部の画像(例: CDN や API から取得した画像)を next/image
で表示するには、
next.config.js
で domains
を設定する必要があります。
JAVASCRIPTmodule.exports = { images: { remotePatterns: [ { protocol: "https", hostname: "example.com", }, ], }, };
JSXimport Image from "next/image"; export default function ExternalImage() { return ( <Image src="https://example.com/sample.jpg" alt="外部画像" width={500} height={300} /> ); }
✅ ポイント
next.config.js
に remotePatterns
を追加width
と height
を指定するのが基本Next.js 14 では layout="intrinsic"
は廃止され、fill
を使って親要素に合わせたレスポンシブな画像を表示できます。
JSXimport Image from "next/image"; export default function ResponsiveImage() { return ( <div style={{ position: "relative", width: "100%", height: "300px" }}> <Image src="/example.jpg" alt="サンプル" fill style={{ objectFit: "contain" }} /> </div> ); }
✅ ポイント
fill
を指定すると、画像が親要素のサイズにフィットするstyle={{ objectFit: "contain" }}
を指定して、アスペクト比を維持div
の position: relative
が必要(fill
は absolute
になるため)placeholder="blur"
を使うと、画像の読み込み前に ぼかし効果 を表示できます。
ただし、外部画像を使用する場合は blurDataURL
を手動で指定する必要があります。
JSX<Image src="/example.jpg" alt="サンプル" width={500} height={300} placeholder="blur" blurDataURL="data:image/png;base64,...(省略)" />
✅ 高品質な画像を扱う際に便利
❌ next/image
は use client
内で使うと警告が出る
next/image
はデフォルトでサーバーコンポーネントとして動作するため、use client
を指定したコンポーネント内では使用しないのが基本❌ next.config.js
で domains
設定を忘れるとエラーが発生
Next.js 14 の App Router における next/image
は、画像を最適化しつつ効率的に配信できる便利なコンポーネントです。
📌 学んだこと
next/image
を使うと、画像が最適化され自動的に軽量化 されるnext.config.js
の設定が必要)fill
を活用use client
内での使用に注意これらの知識を活かして、Next.js の next/image
を効果的に活用しましょう。
回 | タイトル | リンク |
---|---|---|
第 1 回 | Page Router と App Router の違い | 詳 細 |
第 2 回 | App Router のルーティング | 詳 細 |
第 3 回 | App Router における Metadata の設定 | 詳 細 |
第 4 回 | OGP・Twitter 画像の自動設定 | 詳 細 |
第 5 回 | App Router における API ルートの基本 | 詳 細 |
第 6 回 | use server と use client の使い分け | 詳 細 |
第 7 回 | useContext の Provider の適用方法 | 詳 細 |
第 8 回 | next/link の基本と使い方 | 詳 細 |
第 9 回 | next/image の概要 | この記事 |
第 10 回 | next/navigation の使い方 | 詳 細 |
当サイトの情報は、一般的な参考情報として提供しております。
正確な情報の掲載に努めておりますが、その内容の正確性・完全性・最新性を保証するものではありません。
記事の内容をご利用の際は、ご自身の責任において判断し、必要に応じて専門家にご相談ください。
当サイトの情報の利用により生じたいかなる損害についても、一切の責任を負いかねますのでご了承ください。
※ 本ページでは、著作権法に基づき、適正な引用の範囲内でコンテンツを紹介しています。
オリジナルの情報は発信元をご確認ください。
もし問題がありましたら、こちら からお問い合わせください。