



WithCodeMedia-1-pc
WithCodeMedia-2-pc
WithCodeMedia-3-pc
WithCodeMedia-4-pc




WithCodeMedia-1-sp
WithCodeMedia-2-sp
WithCodeMedia-3-sp
WithCodeMedia-4-sp









生徒最近、Webサイトの表示速度を改善したくて調べていたら「AVIF」っていう画像フォーマットを見つけたんですけど、これって何ですか?



よーく聞くんだぞ!AVIFは次世代の画像フォーマットで、JPEGやPNGよりもはるかに高効率なんじゃ。今日はAVIFの特徴から自動変換の方法まで、詳しく解説するぞい!



すごい便利ですね!ぜひ教えてください!
Webサイトのパフォーマンス改善において、画像の最適化は非常に重要な要素です。特に近年、モバイルデバイスからのアクセスが増加する中、ページの読み込み速度はユーザー体験やSEOに直接影響を与えます。
本記事では、次世代画像フォーマットとして注目されているAVIF(AV1 Image File Format)について、基本的な特徴から実践的な自動変換の方法まで、実装例を交えながら詳しく解説します。既存のJPEG、PNG、WebPとの比較や、具体的なコード例、パフォーマンス改善の実データもご紹介します。
「学習→就職」につなげた受講生のリアルな体験談も公開中!
働き方を変えたい方にも響くストーリーです。
吉池さん
Web制作を体系的に学びたいと考え、WithCodeに入会されました。卒業後は、WithCode経由で実案件を経験したほか、ご自身でも案件を獲得。今後はWeb系の業務に携わりたいという思いから転職活動を行い、受託開発の会社への転職を成功させました。
詳しくはこちらの記事をご覧ください。


吉池さんの主な制作実績はこちら


AVIF(AV1 Image File Format)は、動画コーデックAV1をベースとした画像フォーマットです。Alliance for Open Mediaによって開発され、2019年に正式リリースされました。
AVIFは以下のような特徴を持つ、非常に先進的な画像フォーマットです:
インターネットトラフィックの大部分を画像が占める中、より効率的な画像配信の必要性が高まっていました。従来のJPEGは1992年に策定された古い規格であり、現代のWeb環境には最適化されていません。
GoogleはWebPフォーマットを開発しましたが、さらなる圧縮効率の向上を目指し、動画コーデックAV1の技術を応用したAVIFが誕生しました。AV1自体が非常に高効率な動画圧縮技術であるため、その静止画版であるAVIFも優れた性能を発揮します。



動画の技術を画像に応用したんですね!だから圧縮効率が高いんだ!



その通りじゃ!動画は1秒間に何十枚もの画像を効率的に圧縮する必要があるから、その技術を静止画に使えば当然高効率になるんじゃぞ!





どうしてAVIFが注目されているのですか?



Webサイト運営者にとって非常に魅力的なメリットを多数持っているためじゃ!今から詳しく解説するぞ!
AVIFの最大のメリットは、驚異的な圧縮効率によるファイルサイズの削減です。
実際の比較データでは、同じ画質を保ちながら以下のようなファイルサイズ削減が実現されています:
具体的な例として、1MBのJPEG画像をAVIFに変換すると、約500-600KB程度になります。100枚の画像を掲載するWebサイトであれば、合計で40-50MBの転送量削減が可能です。
ページの読み込み速度は、GoogleのCore Web Vitalsにおいても重要な指標とされており、SEOにも直接影響します。AVIFの採用により、LCP(Largest Contentful Paint)を大幅に改善できます。
モバイルデバイスからのアクセスが全体の60%以上を占める現代のWeb環境において、データ転送量の削減は極めて重要です。
AVIFを使用することで:
Googleの調査によれば、ページの読み込み時間が1秒から3秒に増加すると、直帰率が32%増加すると報告されています。AVIFによる高速化は、ユーザー体験の向上に直結します。
ファイルサイズを削減する際、通常は画質の劣化が避けられません。しかしAVIFは、知覚的な画質をほぼ維持したまま高圧縮を実現します。
特に以下のような画像で効果を発揮します:
JPEGでは高圧縮時に発生する「ブロックノイズ」や「モスキートノイズ」と呼ばれる画質劣化が、AVIFでは大幅に抑制されます。
AVIFはアルファチャンネル(透過情報)をサポートしているため、PNGの代替として使用できます。特に以下のような用途で有効です:
また、AVIFはアニメーション画像もサポートしており、GIFやAnimated WebPの代替としても機能します。ループするアニメーションをより小さいファイルサイズで実現できます。
AVIFはHDR(High Dynamic Range)と広色域(WCG: Wide Color Gamut)をサポートしており、より豊かな色表現と明暗の表現が可能です。
これにより:
最新のディスプレイ技術を活用し、ユーザーに最高の視覚体験を提供できます。


AVIFの優位性を理解するために、既存の主要画像フォーマットとの詳細な比較を見ていきましょう。
| フォーマット | 圧縮効率 | 画質 | 透過 | アニメーション | ブラウザ対応 |
|---|---|---|---|---|---|
| JPEG | ★★☆☆☆ | ★★★☆☆ | × | × | ★★★★★ |
| PNG | ★☆☆☆☆ | ★★★★★ | ○ | × | ★★★★★ |
| WebP | ★★★★☆ | ★★★★☆ | ○ | ○ | ★★★★☆ |
| AVIF | ★★★★★ | ★★★★★ | ○ | ○ | ★★★☆☆ |
JPEG(Joint Photographic Experts Group)は1992年に策定された、最も普及している画像フォーマットです。
JPEGの特徴:
AVIFとの比較:
PNG(Portable Network Graphics)は可逆圧縮の画像フォーマットで、主に透過画像やロゴに使用されます。
PNGの特徴:
AVIFとの比較:
WebPはGoogleが開発した画像フォーマットで、AVIFの先駆けとなった次世代フォーマットです。
WebPの特徴:
AVIFとの比較:
WebPは現時点での実用性が高く、AVIFは将来性と性能に優れています。理想的には、AVIFをメインとし、WebPをフォールバック(代替)として提供する戦略が推奨されます。



AVIFって、他のフォーマットと比べてかなり優秀なんですね!でも、どうやって既存の画像をAVIFに変換すれば良いんですか?



良い質問じゃ!これから実際の変換方法を複数紹介するぞい。コマンドラインツール、オンラインツール、プログラム自動化など、用途に応じて選べるんじゃ!





AVIFに変換する方法を教えてください!



うむ。ここではAVIFに変換する方法を5つ紹介するぞ!
ffmpegは動画・音声・画像を処理できる強力なオープンソースツールです。AVIFへの変換も簡単に実行できます。
macOS(Homebrew使用):
brew install ffmpegUbuntu/Debian:
sudo apt update
sudo apt install ffmpegWindows:
公式サイト(https://ffmpeg.org/download.html)からバイナリをダウンロードし、環境変数PATHに追加します。
1枚の画像をAVIFに変換する基本コマンド:
ffmpeg -i input.jpg -c:v libaom-av1 -crf 30 output.avifパラメータの説明:
-i input.jpg: 入力ファイルを指定-c:v libaom-av1: AV1コーデックを使用(AVIFのベース)-crf 30: 品質を指定(0-63、数値が小さいほど高品質。推奨:25-35)output.avif: 出力ファイル名高品質を維持しながら効率的に圧縮:
ffmpeg -i input.jpg -c:v libaom-av1 -crf 25 -cpu-used 4 output.avif-cpu-used 4: エンコード速度の調整(0-8、数値が大きいほど高速だが品質低下)フォルダ内のすべてのJPEG画像を一括変換するスクリプト:
bash(Linux/macOS):
#!/bin/bash
for img in *.jpg; do
ffmpeg -i "$img" -c:v libaom-av1 -crf 30 "${img%.jpg}.avif"
donePowerShell(Windows):
Get-ChildItem -Filter *.jpg | ForEach-Object {
$output = $_.BaseName + ".avif"
ffmpeg -i $_.FullName -c:v libaom-av1 -crf 30 $output
}複数の静止画からアニメーションAVIFを作成:
ffmpeg -framerate 10 -i frame_%03d.png -c:v libaom-av1 -crf 30 animation.avif-framerate 10: 秒間10フレームで再生frame_%03d.png: frame_001.png, frame_002.png… のような連番ファイルavifencはlibavifライブラリに含まれる、AVIF専用のエンコーダーです。ffmpegよりも高速で効率的な変換が可能です。
# macOS
brew install libavif
# Ubuntu/Debian
sudo apt install libavif-binavifenc input.jpg output.avifavifenc --min 0 --max 63 --speed 6 input.jpg output.avif--min 0 --max 63: 品質範囲を指定(0が最高品質)--speed 6: エンコード速度(0-10、大きいほど高速)Webアプリケーションに統合する場合、Node.jsのライブラリを使用すると便利です。
sharpは高速な画像処理ライブラリで、AVIFへの変換もサポートしています。
インストール:
npm install sharp基本的な変換コード:
const sharp = require('sharp');
// 1枚の画像を変換
sharp('input.jpg')
.avif({ quality: 50 })
.toFile('output.avif')
.then(info => {
console.log('変換完了:', info);
})
.catch(err => {
console.error('変換エラー:', err);
});複数画像の一括変換スクリプト:
const sharp = require('sharp');
const fs = require('fs');
const path = require('path');
// 画像フォルダを指定
const inputDir = './images';
const outputDir = './images-avif';
// 出力フォルダが存在しない場合は作成
if (!fs.existsSync(outputDir)) {
fs.mkdirSync(outputDir);
}
// JPEGとPNGファイルを取得
const imageFiles = fs.readdirSync(inputDir)
.filter(file => /\.(jpg|jpeg|png)$/i.test(file));
// 各画像を変換
Promise.all(
imageFiles.map(file => {
const inputPath = path.join(inputDir, file);
const outputPath = path.join(outputDir, file.replace(/\.(jpg|jpeg|png)$/i, '.avif'));
return sharp(inputPath)
.avif({
quality: 50,
effort: 6 // 0-9、大きいほど圧縮効率が良いが時間がかかる
})
.toFile(outputPath)
.then(info => {
console.log(`✓ ${file} → ${path.basename(outputPath)} (${info.size} bytes)`);
});
})
)
.then(() => {
console.log('すべての画像の変換が完了しました!');
})
.catch(err => {
console.error('エラーが発生しました:', err);
});リサイズとAVIF変換を同時に実行:
sharp('large-image.jpg')
.resize(1200, 800, {
fit: 'inside', // アスペクト比を維持
withoutEnlargement: true // 元画像より大きくしない
})
.avif({ quality: 50 })
.toFile('optimized.avif');コマンドラインやプログラミングに慣れていない場合、オンラインツールが便利です。
WordPressサイトの場合、プラグインを使用することで簡単にAVIFを導入できます。





AVIF画像を作成したら、次はWebサイトに実装する方法を見ていこう。重要なのは、AVIFに対応していないブラウザへのフォールバック(代替手段)を用意することじゃ!



そうなんですね!具体的に教えてください!
<picture>タグを使用すると、ブラウザが対応しているフォーマットを自動的に選択してくれます。
<picture>
<!-- AVIF対応ブラウザはこちらを読み込み -->
<source srcset="image.avif" type="image/avif">
<!-- WebP対応ブラウザはこちらを読み込み -->
<source srcset="image.webp" type="image/webp">
<!-- フォールバック:すべてのブラウザで表示可能 -->
<img src="image.jpg" alt="説明文" loading="lazy">
</picture>
ブラウザの判定ロジック:
<source>タグを確認<source>も対応していない場合、<img>タグのJPEGを表示異なる画面サイズに応じて最適な画像を配信:
<picture>
<!-- デスクトップ用 AVIF -->
<source
media="(min-width: 1024px)"
srcset="image-large.avif"
type="image/avif">
<!-- タブレット用 AVIF -->
<source
media="(min-width: 768px)"
srcset="image-medium.avif"
type="image/avif">
<!-- モバイル用 AVIF -->
<source
srcset="image-small.avif"
type="image/avif">
<!-- WebPフォールバック -->
<source
media="(min-width: 1024px)"
srcset="image-large.webp"
type="image/webp">
<source
media="(min-width: 768px)"
srcset="image-medium.webp"
type="image/webp">
<source
srcset="image-small.webp"
type="image/webp">
<!-- 最終フォールバック -->
<img src="image-medium.jpg" alt="説明文" loading="lazy">
</picture>CSSの背景画像でAVIFを使用する場合、JavaScriptでブラウザ対応を検出する必要があります。
JavaScript(ブラウザ対応検出):
// AVIFサポート検出
async function supportsAVIF() {
if (!self.createImageBitmap) return false;
const avifData = 'data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUEAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=';
try {
const blob = await fetch(avifData).then(r => r.blob());
return await createImageBitmap(blob).then(() => true, () => false);
} catch {
return false;
}
}
// ページ読み込み時に検出
supportsAVIF().then(supported => {
if (supported) {
document.documentElement.classList.add('avif');
} else {
document.documentElement.classList.add('no-avif');
}
});CSS(条件分岐):
/* AVIF対応ブラウザ */
.avif .hero-section {
background-image: url('hero.avif');
}
/* AVIF非対応ブラウザ */
.no-avif .hero-section {
background-image: url('hero.jpg');
}Next.js 13以降では、<Image>コンポーネントが自動的にAVIFを生成・配信してくれます。
import Image from 'next/image';
export default function MyComponent() {
return (
<Image
src="/images/photo.jpg"
alt="写真の説明"
width={800}
height={600}
quality={75}
// Next.jsが自動的にAVIF/WebP/JPEGを生成し、
// ブラウザに応じて最適なフォーマットを配信
/>
);
}next.config.jsでの設定:
module.exports = {
images: {
formats: ['image/avif', 'image/webp'],
deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
imageSizes: [16, 32, 48, 64, 96, 128, 256, 384],
},
};

AVIFは優れた性能を持つ一方で、すべてのブラウザで対応されているわけではありません。実装前に対応状況を確認しておきましょう。
| ブラウザ | 対応バージョン | 対応状況 |
|---|---|---|
| Chrome | 85以降 | 完全対応 |
| Edge | 85以降 | 完全対応 |
| Firefox | 93以降 | 完全対応 |
| Safari | 16以降(iOS 16、macOS Ventura) | 完全対応 |
| Opera | 71以降 | 完全対応 |
| Samsung Internet | 15以降 | 完全対応 |
| Internet Explorer | – | 非対応 |
現在、主要なモダンブラウザはすべてAVIFに対応しており、全世界のブラウザシェアの約85-90%がAVIFをサポートしています。
AVIFに対応していないブラウザのために、必ずWebPやJPEGのフォールバックを用意してください。
<picture>
<source srcset="image.avif" type="image/avif">
<source srcset="image.webp" type="image/webp">
<img src="image.jpg" alt="説明" loading="lazy">
</picture>AVIFの品質設定は、JPEGよりも低い値で同等の画質が得られます:
AVIFのエンコードはJPEGやWebPよりも時間がかかります。大量の画像を処理する場合は:
AVIFは圧縮効率が高い反面、デコード(展開)に若干の処理時間が必要です。特にローエンドのモバイルデバイスでは注意が必要です。
対策:
loading="lazy"属性で遅延読み込みを実装loading="eager"で即座に読み込み画像検索におけるSEOでは、Googleが画像をクロールできることが重要です:
<img>タグのalt属性を必ず設定product-red-shirt.avifなど)




AVIFの導入により、実際にどの程度のパフォーマンス改善が得られるのか、具体的なデータを見ていこう!



はい!よろしくお願いします!
同じ画像を異なるフォーマットで保存した場合のファイルサイズ比較:
| フォーマット | ファイルサイズ | 削減率 | 画質評価 |
|---|---|---|---|
| 元画像(PNG) | 2.4 MB | – | ★★★★★ |
| JPEG(品質85) | 420 KB | -82% | ★★★★☆ |
| WebP(品質80) | 280 KB | -88% | ★★★★☆ |
| AVIF(品質50) | 180 KB | -93% | ★★★★☆ |
この例では、AVIFはJPEGと比較して約57%、WebPと比較して約36%のファイルサイズ削減を実現しています。
100枚の画像を掲載するECサイトでAVIFを導入した場合の改善例:
約57%の転送量削減、50%のLCP改善を実現しました。
GoogleのCore Web Vitalsにおける改善効果:
4G回線(10Mbps)でのページ読み込み時間比較:
モバイル環境では通信速度が制約要因となるため、ファイルサイズ削減の効果が顕著に現れます。



AVIFを使うだけで、こんなにページ速度が改善されるんですね!すごい!



そうじゃ!ページ速度の改善は、ユーザー体験だけでなくSEOにも直結するから、AVIFの導入は今や必須と言えるぞい!



すごく勉強になります!ありがとうございました!
本記事では、次世代画像フォーマットAVIFについて、基本的な特徴から実践的な自動変換の方法、実装例まで詳しく解説しました。
重要なポイントは以下の通りです。
・AVIFの圧縮効率:JPEGの約50%、WebPの約20-30%のファイルサイズ削減を実現
・高品質維持:高圧縮率でありながら、視覚的な画質劣化を最小限に抑制
・多機能対応:透過画像、アニメーション、HDR、広色域をサポート
・変換方法:ffmpeg、avifenc、Node.js(sharp)、オンラインツール、WordPressプラグインなど多様な選択肢
・実装方法:pictureタグを使用し、必ずWebP/JPEGのフォールバックを用意
・ブラウザ対応:主要モダンブラウザは全て対応(全世界シェアの85-90%)
・パフォーマンス改善:ページ読み込み速度の大幅改善、Core Web Vitalsの向上
AVIFは、Webサイトのパフォーマンスとユーザー体験を大幅に改善できる強力なツールです。適切なフォールバック戦略と組み合わせることで、すべてのユーザーに最適な画像配信を実現できます。
まずは小規模なプロジェクトやテスト環境で導入を試し、効果を実感してから本番環境へ展開することをおすすめします。画像の最適化は、Web制作における最も効果的なパフォーマンス改善手法の一つです。ぜひ実際のプロジェクトでAVIFを活用してみてください。


本記事でご紹介したAVIF画像フォーマットの活用方法は、Web制作の実務で非常に重要なスキルです。WithCodeでは、こうした最新技術を含む実践的なWeb制作スキルを学べる環境を提供しています。
副業・フリーランスが主流になっている今こそ、自らのスキルで稼げる人材を目指してみませんか?
未経験でも心配することはありません。初級コースを受講される方の大多数はプログラミング未経験です。まずは無料カウンセリングで、悩みや不安をお聞かせください!
公式サイト より
今すぐ
無料カウンセリング
を予約!