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

Share
ブログで使う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

Dependabotの対応が面倒なのでRenovateを導入する

Dependabotくんはある程度の依存関係の更新を通知してくれるが、山のようにprojectを抱えているとなんとも痒いところに手が届かない。 ということで、Renovateを使ってみる。 Build software better, togetherGitHub is where people build software. More than 150 million people use GitHub to discover, fork, and contribute to over 420 million projects.GitHub ここからGitHub Appを入れる。 あとは、指示に従ってポチポチするだけで、超かんたんだった。 感想 自動化最高。

By Sakashita Yasunobu

nodejsのバグを見つけたのでPRを投げてみた

概要 要するに、node --testで特定のバイナリを標準出力に書くと、テストランナーが固まったり、異常終了したりするバグです。 バグ自体は既知のものだったようで、修正がされていました。 test_runner: infinite loop in FileTest#drainRawBuffer when child stdout contains FF 0F followed by large size bytes · Issue #62693 · nodejs/nodeVersion v25.9.0 (also reproduced on v24.14.1 LTS, v22.21.0 LTS, v23.4.0) Platform Darwin 25.

By Sakashita Yasunobu
青空文庫のParser

青空文庫のParser

青空文庫のParserを作ってます。 GitHub - P4suta/aozora: Pure-functional Rust parser for 青空文庫記法 (Aozora Bunko notation): ルビ, 傍点, 縦中横, 外字, 返り点, indent containers, page breaks.Pure-functional Rust parser for 青空文庫記法 (Aozora Bunko notation): ルビ, 傍点, 縦中横, 外字, 返り点, indent containers, page breaks. - P4suta/aozoraGitHubP4suta Rustで作ってますが、配布物はcargoのほかにnpm/pypiでも入手できます Documentation * Playground — try it in

By Sakashita Yasunobu