ブログで使うWeb用の画像のフォーマットについて検討する

ブログで使うWeb用の画像のフォーマットについて検討する

背景と目的

普段から写真撮影を行っていると、画像ファイルが占める容量は無視できない規模になる。現在はNASとAmazon Photosに保存しているため、容量的な制約は少ないものの、ファイルサイズが小さくできるのであれば小さくしておく方が合理的だ。特にWeb公開を前提とする場合、ファイルサイズはアップロード・ダウンロード、そしてページ表示時間に直結するため、可能な限り小さい方が望ましい。

これまでは現像ソフトからJPEG品質100で出力し、Web用途など容量削減が望ましいケースではWebPに変換してきた。RAWファイルは別途バックアップしてアーカイブとして保存している。目視で画質劣化が認められないのであれば、全てWebPで保存しても問題ないのではないかと考えたが、より優れたフォーマットが存在する可能性があるため、現在利用可能な画像フォーマットについて調査した。

主要な画像フォーマットの特徴

JPEG

最も広く普及している画像フォーマットで、互換性に関する信頼性は高い。しかし、規格自体が古く、現代的な圧縮技術と比較すると効率は劣る。

JPEGについて知っておくべきすべてのこと | Adobe
現代のwebや出版物の画像に欠かせない多目的画像ファイル形式、JPEGファイルについて紹介する便利なガイドです。

JPEG2000

JPEGの後継として開発されたが、実際にはほとんど普及していない。対応ソフトウェアやブラウザが限られており、実用性は低い。

WebP

Googleが開発した画像フォーマットで、可逆圧縮・非可逆圧縮の両方に対応している。主要ブラウザでの対応も進んでおり、実用性が高い。JPEGと比較して同等の画質でファイルサイズを削減できる。

WebPファイルの詳細 | Googleのweb画像形式 | Adobe
オンライン写真のサイズの削減を目的としてGoogleが設計した画像形式であるWebPを紹介します。このガイドでは、次回のプロジェクトでWebPファイルをどのように使用できるかを説明します。

AVIF

AV1動画コーデックをベースとした比較的新しい画像フォーマット。圧縮効率はWebPよりも優れているが、エンコード・デコードのコストが高い。

PNG

可逆圧縮専用のフォーマット。非可逆圧縮の文脈におけるJPEGに相当する、可逆圧縮における標準的な選択肢。

PNGファイルの詳細と開く方法 | Adobe
PNG画像ファイルは、オンライングラフィックおよびロゴを作成するために幅広く使用されています。 その歴史、考えられるメリットとデメリット、編集方法を説明します。

TIFF

主に印刷業界や専門的な用途で使用される。写真を公開するWeb用途には適さない。

TIFFファイルの詳細と開く方法 | Adobe
TIFFファイルとは何か、可逆(ロスレス)圧縮方式の画像はどこでどのように使うのかを説明します。アドビのガイドでTIFFファイル形式について調べましょう。

圧縮効率と実用性の検討

結論から。

現代では少なくともWeb用といったファイル容量が重要なシーンではWebp/AVIFがベストだ。結局WebpとAVIFのどっちを使えばいいのだということに関しては、とりあえずWebpを使っておけば問題ないだろう。

GoogleとしてもWebp/AVIFを推奨している。

WebP と AVIF は一般的に古い形式よりも圧縮率が高いため、可能な限り使用する必要があります。
適切な画像形式を選択する | Articles | web.dev
ウェブサイトに最適化された画像を提供するには、まず適切な画像形式を選択します。この投稿は、正しい選択をするうえで役立ちます。
webp vs avif vs jpeg2000 - Qiita
これは何? つい先日 avif という形式が使いやすそうだという記事を読み。 webp とどっちがいいの? と思い。 そういえば圧縮対決の記事見てないなと思い。 対決させてみた。 せっかくなので jpeg2000 も参戦。 使い方とか全然書いてないけど、コードは http…
AVIF 画像の配信 | Google Codelabs
PNG に代わるロスレス圧縮の画像フォーマットをさがす - Seaoak’s READ

WebP vs AVIF

圧縮技術としてはAVIFの方が優秀であることは確かだが、エンコード・デコードのコストを考慮すると、2025年現在ではまだWebPの方が実用的である。

参考として、同一画像のLossless WebP形式での容量は87.8MBであった。

“webp” | Can I use... Support tables for HTML5, CSS3, etc
“avif” | Can I use... Support tables for HTML5, CSS3, etc

ブラウザ対応状況

主要ブラウザではWebPとAVIFの両方がサポートされているが、WebPの方が対応開始時期が早く、より広範な環境での動作が期待できる。

適切な画像形式を選択する | Articles | web.dev
ウェブサイトに最適化された画像を提供するには、まず適切な画像形式を選択します。この投稿は、正しい選択をするうえで役立ちます。

実際の運用方法

現像ソフトからの出力

普段はCapture Oneを使用している。Capture OneをはじめとするNikon NX-Studioなどの一般的な現像ソフトは、WebPやAVIFを直接出力する機能を持っていないことが多い。そのため、現実的にはなんらかの中間画像フォーマットを経由してWebP/AVIFに変換する必要がある。

キヤノン:製品マニュアル|Digital Photo Professional|調整結果の保存
対応フォーマットについて

https://helpx.adobe.com/jp/lightroom-classic/help/export-files-disk-or-cd.html#main-pars_heading_3

https://support.captureone.com/hc/en-us/articles/360002629217-File-formats-for-processing-and-export

実際の変換フロー

現在採用しているワークフローは以下の通り

  1. 現像ソフト(Capture One)からJPEG品質100で出力
  2. 出力されたJPEGをWebPに変換

JPEG品質100を中間フォーマットとして選択している理由は、現像ソフトからの出力において最も一般的で安定しており、後続の変換処理で画質劣化を最小限に抑えられるためである。

結論

2025年現在、Web用画像フォーマットとしてはWebPが最も実用的な選択肢である。AVIFは圧縮効率では優れているものの、エンコード・デコードコストや対応環境を考慮すると、まだWebPの方が総合的に優れている。

実際の運用においては、現像ソフトからJPEG品質100で出力し、WebPに変換するワークフローが、品質と効率のバランスが取れた現実的な選択肢である。

Read more

Boids

群れに指揮者はいない 鳥の群れは、誰かが指示を出しているわけではない。魚の群れも同じ。それぞれが周囲を見て、少しだけ動く。その繰り返しが、全体として秩序ある動きを生む。 これを1986年にCraig Reynoldsがコードで再現した。名前は Boids(bird + oid)。個体に与えるルールは3つだけ。 1. Separation ── 近すぎたら離れる 2. Alignment ── 周囲と同じ方向を向く 3. Cohesion ── 群れの中心に寄る これだけで、群れは群れらしく動く。 なぜ作ったか 群れの動きは、見ていて飽きない。 * 単純なルールから複雑な動きが生まれる ── 創発(emergence)の典型例。設計していないのに、設計したかのように見える。 * 自分のブログに置きたかった ── 静的なページに、動くものがあると空気が変わる。 * Web Components で作りたかった ── どこにでも持っていける部品として。 設計の話 見えないときは止める 画面外でアニメーションを回し続けるのは無駄。Inte

By Sakashita Yasunobu

Days Elapsed

一年を「面」で見る 一年は365日。数字で見ると多いけど、並べてみると案外少ない。 12ヶ月を並べて、過去を塗りつぶして、今日を光らせる。それだけのカレンダーを作った。進捗バーが「一次元」なら、これは「二次元」の進捗表示。 Year Progress一年は50週ちょっとしかない 2026年を週で数えると、52週とちょっと。 カレンダーで見ると長そうなのに、週で数えると急に短くなる。そんな感覚を形にしたくて、このページの上の方に進捗バーを置いた。 やっていることは単純で、「今年が何%進んだか」をリアルタイムで表示しているだけ。 なぜ作ったか 理由は3つある。 1. 時間を「量」として見たかった ── イベントや予定ではなく、単純に「どれだけ経ったか」を数値で見たかった。 2. 目に見える形にしたかった ── 抽象的な「一年」を、動く数字に落とすとどう感じるか試したかった。 3. 自分の場所に置きたかった ── 誰かのツールを借りるのではなく、自分のブログに自分で作ったものを置きたかった。 実装の話 せっかく作るなら、

By Sakashita Yasunobu

Year Progress

一年は50週ちょっとしかない 一年を週で数えると、52週とちょっと。 カレンダーで見ると長そうなのに、週で数えると急に短くなる。そんな感覚を形にしたくて、このページの上の方に進捗バーを置いた。 やっていることは単純で、「今年が何%進んだか」をリアルタイムで表示しているだけ。 なぜ作ったか 理由は3つある。 1. 時間を「量」として見たかった ── イベントや予定ではなく、単純に「どれだけ経ったか」を数値で見たかった。 2. 目に見える形にしたかった ── 抽象的な「一年」を、動く数字に落とすとどう感じるか試したかった。 3. 自分の場所に置きたかった ── 誰かのツールを借りるのではなく、自分のブログに自分で作ったものを置きたかった。 実装の話 せっかく作るなら、それなりに丁寧にやりたかった。 * Web Components で実装。ブログのCSSやDOMを汚さず、どこにでも持っていける。 * requestAnimationFrame で描画。固定間隔のタイマーではなく、画面更新に同期させることで滑らかさとリソース効率を両立。 *

By Sakashita Yasunobu