<NuxtImg>
Nuxtは自動画像最適化を処理するための<NuxtImg>コンポーネントを提供します。
<NuxtImg>はネイティブの<img>タグの代替として使用できます。
- 組み込みプロバイダーを使用してローカルおよびリモート画像を最適化
srcをプロバイダー最適化されたURLに変換widthとheightに基づいて画像を自動的にリサイズsizesオプションを提供するとレスポンシブサイズを生成- ネイティブの遅延読み込みやその他の
<img>属性をサポート
セットアップ
<NuxtImg>を使用するには、Nuxt Imageモジュールをインストールして有効にする必要があります:
npx nuxt module add image
使用法
<NuxtImg>はネイティブのimgタグを直接出力します(ラッパーなし)。<img>タグを使用するのと同様に使用してください:
<NuxtImg src="/nuxt-icon.png" />
これは次のようになります:
<img src="/nuxt-icon.png" />
こちらも参照 image.nuxt.com > usage > nuxt-imgtips
このセクションは公式ドキュメントの翻訳ではなく、本サイト独自の補足記事です。
NuxtImgコンポーネントとは?画像最適化の課題を解決する強力なツール
ウェブサイトのパフォーマンス向上において、画像の最適化は非常に重要な要素です。特にモバイルユーザーが増加する現代では、画像の読み込み速度や表示品質がユーザー体験に直結します。Nuxtが提供するNuxtImgコンポーネントは、こうした画像最適化の課題を簡単に解決できる便利な機能です。
NuxtImgは単なる画像表示のためのコンポーネントではなく、画像のリサイズやフォーマット変換、遅延読み込みなどを自動で処理し、最適な形でブラウザに配信します。これにより、開発者は画像管理の複雑さから解放され、パフォーマンスの高いサイトを効率的に構築できます。
まず結論:NuxtImgコンポーネントのポイント
- 自動画像最適化:ローカル・リモート画像を自動でリサイズ・圧縮し、最適なURLを生成
- レスポンシブ対応:
sizesオプションで画面サイズに応じた画像サイズを自動生成 - ネイティブの遅延読み込み対応:
loading="lazy"などの属性を簡単に利用可能 - ネイティブの
<img>タグを出力:余計なラッパーがなくSEOやアクセシビリティに配慮 - 簡単セットアップ:Nuxt Imageモジュールを追加するだけで利用可能
いつ使うべきか?使わない方がよいケースは?
使うべきケース
-
パフォーマンス重視のサイト
ページの読み込み速度を改善したい場合、画像の自動最適化は必須です。NuxtImgは手軽に導入できるため、特に画像が多いサイトで効果を発揮します。 -
レスポンシブデザイン対応が必要な場合
画面サイズに応じて適切な画像サイズを配信したいときに、sizesオプションを活用できます。 -
外部の画像を扱う場合
リモート画像もプロバイダーを通じて最適化できるため、CDNや外部APIから取得した画像にも対応可能です。
使わない方がよいケース
-
極めて単純な画像表示のみの場合
画像最適化の恩恵が少ない小規模サイトや、画像がほとんどない場合は導入コストに見合わないこともあります。 -
カスタムな画像処理が必要な場合
独自の画像変換や特殊なフォーマット変換を行いたい場合は、専用の画像処理パイプラインを用意した方が柔軟です。
実務でよくあるユースケースとサンプルコード
1. ローカル画像のレスポンシブ表示
<NuxtImg src="/images/sample.jpg" width="800" height="600" sizes="(max-width: 600px) 100vw, 800px" alt="サンプル画像" />
- 画面幅が600px以下なら100%幅で表示し、それ以上は最大800px幅で表示
- 自動で適切な画像サイズを生成し、無駄なデータ転送を防止
2. リモート画像の最適化
<NuxtImg src="https://example.com/photo.jpg" width="400" height="300" alt="外部画像" />
- 外部URLの画像もプロバイダー経由で最適化されるため、パフォーマンス向上に寄与
3. 遅延読み込みを活用したパフォーマンス改善
<NuxtImg src="/images/large-photo.jpg" width="1200" height="800" loading="lazy" alt="遅延読み込み画像" />
- ページ初期表示時に画像読み込みを遅延させ、ファーストビューの高速化を実現
よくある落とし穴・注意点
SSRとHydrationのズレに注意
NuxtImgはサーバーサイドレンダリング(SSR)時に最適化された画像URLを生成しますが、クライアント側でHydrationが行われる際にURLや属性が変わると、ReactやVueの警告や表示崩れが起こることがあります。
- 画像の
srcやwidth、heightはSSRとCSRで一致させることが重要です。
過剰な画像サイズ指定は逆効果
widthやheightを指定しないとレイアウトシフトが発生しやすくなりますが、過剰に大きなサイズを指定すると無駄なデータ転送が増えます。- 実際の表示サイズに合わせて適切に設定しましょう。
パフォーマンスへの影響を理解する
- 画像最適化はサーバー負荷やビルド時間に影響を与える場合があります。
- 大量の画像を頻繁に更新する場合は、キャッシュ設定やビルド戦略を検討してください。
まとめ
NuxtImgコンポーネントは、画像最適化の複雑な処理を自動化し、パフォーマンスとユーザー体験を大幅に向上させる強力なツールです。レスポンシブ対応や遅延読み込みも簡単に実装できるため、モダンなウェブ開発においては積極的に活用すべき機能と言えます。
ただし、SSRとCSRの整合性や適切なサイズ指定など、運用上の注意点も存在します。これらを理解し、実務に即した使い方を心がけることで、より効果的にNuxtImgを活用できるでしょう。
Nuxt Imageモジュールの導入は簡単ですが、画像の種類やサイトの規模に応じて最適な設定を検討することが重要です。公式ドキュメントと合わせて本記事の内容も参考にしてください。
※このページは Nuxt.js 公式ドキュメントの翻訳ページです。
公式ドキュメントの該当ページはこちら:
https://nuxt.com/docs/3.x/api/components/nuxt-img