ブログに戻る
プラットフォーム

Next.js & React AVIF 2026:実装ガイド [コード例]

Next.jsとReactにAVIFを実装:自動変換、Imageコンポーネント、最適化。完全なコード例 →

2025年1月28日14分で読める
Next.js & React AVIF 2026:実装ガイド [コード例] - AVIF.expert

ReactエコシステムでのAVIF

ReactとNext.jsはAVIF画像最適化のための優れたオプションを提供します。

Next.jsにはAVIFを含む自動最適化を持つImageコンポーネントが含まれています。

バニラReactや他のフレームワークでは、AVIFを効果的に統合するいくつかのアプローチがあります。

Next.js画像最適化

next/imageコンポーネントはAVIFを自動的に処理します。

Next.jsは自動的にブラウザサポートを検出し、AVIF、WebP、またはオリジナルを提供します。

import Image from 'next/image'

export default function Home() {
  return (
    <Image
      src="/product.jpg"
      alt="商品"
      width={800}
      height={600}
      // AVIFはサポートされていれば自動的に提供されます!
    />
  )
}

💡 プロのヒント

Next.jsでは、AVIFの恩恵を受けるために何も設定する必要がありません。自動です!

高度な設定

next/imageの動作をカスタマイズします。

  • formats: フォーマットの優先順位。
  • deviceSizes: レスポンシブ画像のブレークポイント。
  • minimumCacheTTL: 最適化された画像のキャッシュ期間。
// next.config.js
module.exports = {
  images: {
    formats: ['image/avif', 'image/webp'],
    deviceSizes: [640, 750, 828, 1080, 1200],
    minimumCacheTTL: 60 * 60 * 24 * 365,
  },
}

バニラReact実装

Next.jsなしのReactプロジェクト向け。

この再利用可能なコンポーネントは各ブラウザに最適なフォーマットを自動的に提供します。

const OptimizedImage = ({ src, alt, ...props }) => {
  const avifSrc = src.replace(/\.(jpg|png)$/, '.avif');
  const webpSrc = src.replace(/\.(jpg|png)$/, '.webp');
  
  return (
    <picture>
      <source srcSet={avifSrc} type="image/avif" />
      <source srcSet={webpSrc} type="image/webp" />
      <img src={src} alt={alt} loading="lazy" {...props} />
    </picture>
  );
};

ビルドパイプライン

ビルド時に画像生成を自動化します。

// scripts/optimize-images.js
const sharp = require('sharp');
const glob = require('glob');

glob('public/images/**/*.{jpg,png}', async (err, files) => {
  for (const file of files) {
    await sharp(file).avif({ quality: 80 }).toFile(file.replace(/\.(jpg|png)$/, '.avif'));
    await sharp(file).webp({ quality: 85 }).toFile(file.replace(/\.(jpg|png)$/, '.webp'));
  }
});

💡 プロのヒント

各デプロイで自動生成のためにこのスクリプトをprebuildとして追加してください。

パフォーマンスヒント

React画像をさらに最適化します。

  • 優先読み込み: ファーストビュー画像にはpriority={true}を使用。
  • プレースホルダー: より良いUXのためにblurプレースホルダー。
  • 遅延読み込み: next/imageではデフォルト。
  • サイズ指定: CLSを避けるためにwidth/heightを常に指定。
<Image
  src="/hero.jpg"
  priority
  placeholder="blur"
/>

よくある質問

Next.jsはネイティブでAVIFをサポートしていますか?
はい!Next.js 12以降、AVIFは自動的に生成されます。
Create React AppでAVIFを提供するには?
<picture>コンポーネントを使用し、Sharpでビルド時にフォーマットを生成。
VercelはAVIFをサポートしていますか?
はい、Vercel画像最適化は自動的にAVIFをサポートします。
AVIFはビルドを遅くしますか?
AVIF生成はCPU集中型です。大規模サイトではCDN経由のオンデマンド生成を検討。

画像を変換する準備はできましたか?

無料のAVIFコンバーターをお試しください - アップロード不要、100%プライベート。

変換を開始

関連記事