同じ12 MPの写真(4000 × 3000ピクセル)を、2通りで保存してみる。1つはPNGで24 MB、もう1つは品質90のJPEGで3.4 MB。画面に並べても違いはわからない。400%まで拡大して、ようやく差が見えてくる。髪や草がわずかにぼやけ、一番シャープなエッジのまわりに、かすかなハローが浮かぶ。
ファイルは2つ、画像は1つ、サイズ差は7倍。どちらのファイルも壊れてはいない。立てた約束が違うだけだ。PNGは全ビットを守る。JPEGは、見た人が気づくすべてを守る。画像フォーマットの設計は、ほぼすべてがこの2択のどちらを取るかで決まる。
圧縮が2つの陣営に分かれた理由
1948年、Claude Shannonが「A Mathematical Theory of Communication」を発表し、圧縮には超えられない下限があることを示した。情報源符号化定理によれば、データをそのエントロピー(1シンボルあたりの平均情報量)以下に可逆的に表現することはできない。完全にランダムな画像はまったく圧縮できない。真っ白な画像ならほぼゼロまで小さくなる。現実の画像はその両極のどこかにあり、その下限を破れる可逆アルゴリズムは存在しない。
非可逆圧縮が成り立つのは、ここに抜け穴があるからだ。エントロピーの下限が縛るのは「今あるデータ」であって、「残すデータ」ではない。先に画像を、少しだけ違う、エントロピーの低い画像に置き換えてしまえば、下限も一緒に下がる。やることはこれだけだ。先にデータを変えて、それから詰める。あとは、どの変更なら許せるかという工学の問題になる。
答えを決める要素は2つある。1つ目はコンテンツだ。設定画面のスクリーンショットは、平坦な色と繰り返しの図形がほとんどで、エントロピーが低く、予測しやすい。森の写真は、ピクセル単位で見れば光子のショットノイズとセンサーの読み出しノイズの集まりで、エントロピーが高く、予測は難しい。2つ目は受け手だ。ファイルを読むプログラムには正確なビットが必要になる。一方、ファイルを見る人間の視覚には、もともと誤差耐性がある。色の細かな変化の空間分解能は低く、微細な高周波テクスチャには鈍感で、明るさの変化は絶対値ではなく比率で感じる(Weberの法則。おおよそ1〜2%の輝度差から知覚できる)。
こうしてフォーマットは分かれた。コンテンツの予測可能性が高く、受け手が機械か、ピクセルを拡大して検証する人間なら、可逆を選ぶ。コンテンツがノイズだらけで、受け手が普通の距離で画面を見る人間なら、削ってもバレない。
非可逆圧縮の仕組み
非可逆コーデックはよく「データを捨てる」と説明される。間違いではないが、正確でもない。捨てるのは、人間の視覚モデルに基づいて選んだ特定のデータだ。パイプラインは次のとおり。
-
RGBを輝度・色差の色空間に変換する(JPEGはYCbCr、他のコーデックも似たような分離をする)。人間の目は、色の変化より明るさの変化をはるかに細かく捉える。だからクロマチャンネルは4分の1の解像度で保存できる(4:2:0サブサンプリング)。この一手だけで生データは約50%減り、ほとんどの写真では誰も気づかない。
-
各ブロックを周波数に変換する。 JPEGは8 × 8ブロックに離散コサイン変換をかける。JPEG 2000はウェーブレット、AV1とHEVCはより大きな可変サイズの変換を使う。結果はどれも同じ顔つきになる。全体の形を表す大きな係数がわずかと、細かい質感を表す小さな係数が多数だ。
-
量子化する。 各係数をステップサイズで割って整数に丸める。小さな係数はゼロになる。パイプライン全体で、ここだけが非可逆のステップだ。エンコーダーの品質設定とは、このステップサイズにかける倍率にすぎない。品質95なら小さなステップでほぼすべてが残り、品質30なら大きなステップで細かい質感の大半がゼロになる。
-
残った係数をエントロピー符号化する。 ジグザグスキャン、ランレングス符号化、ハフマン符号化、算術符号化。この段階は可逆で、量子化済みの数値をただ効率よく詰めるだけだ。
もう一度、上のリストを見直してほしい。ステップ1、2、4はどれも元に戻せる、いわば事務的な処理だ。実際に画像が壊れるのはステップ3だけで、そこでは丸め誤差がひとつずつ、意図的に積み上げられていく。
壊れ方には特徴がある。品質を下げすぎると、ブロッキング(空や壁に8 × 8のグリッド境界が浮き出る)、リンギング(文字やコントラストの高いエッジのまわりにハローが出る)、バンディング(なめらかなグラデーションが階段状に崩れる)が現れる。非可逆ファイルを保存し直すと、すでに傷ついたデータにパイプライン全体がもう一度かかる。だから世代劣化は累積する。10回保存し直したJPEGは、最初の画像を水彩画にしたような見た目になる。
可逆圧縮の仕組み
可逆コーデックにそんな勝手は許されない。デコード結果は元のファイルとビット単位で一致しなければならないから、できることは予測して詰めることだけだ。基本の手順は2段階ある。
第1段階:相関を取り除く。 PNGは圧縮の前に、すべてのスキャンラインにフィルターをかける。行ごとに5つの予測器(None、Sub、Up、Average、Paeth)から1つを選び、実際のピクセル値と予測値の差分を保存する。真っ白な行なら、白いピクセル1個と、それに続く数千個のゼロになる。なめらかなグラデーションなら、小さく緩やかに変化する残差になる。どちらにしても値は小さく、ゼロの近くに集まる。次の段階にとって、これほど都合のいい形はない。
第2段階:エントロピー符号化。 PNGが使うのはDEFLATE、gzipやzipと同じアルゴリズムで、1970年代の2つのアイデアでできている。LZ77が繰り返し出現するバイト列を見つけ、2回目以降を直前32 KBへの(距離、長さ)ポインタに置き換える。続けてハフマン符号化が、頻出の値に短いビット列を、まれな値に長いビット列を割り当てる。どちらの処理でも情報は失われない。圧縮後のストリームからは、いつでも元のバイト列を完全に復元できる。
だからPNGは、スクリーンショットでは驚くほど小さくなり、写真にはほとんど歯が立たない。UIの画像は繰り返しだらけだ。同じ行、同じアイコン、単色の長い連続。LZ77はあちこちで一致を見つけ、フィルターが残りをゼロに近い残差に変えてくれる。写真には繰り返しがない。ショットノイズのせいで、どのピクセルも隣と少しずつ違う。予測は外れ、残差は大きくランダムなままになり、LZ77にも参照先が見つからない。12 MPの写真をPNGにした場合、圧縮率は生のピクセルデータに対してせいぜい1.3:1から1.6:1。見た目が同程度のJPEGなら10:1取れる。
ファイルが大きくなる代わりに、得られるのは絶対の保証だ。PNGをデコードしてピクセルをハッシュすれば、結果は毎回、元の画像と一致する。OCRにかけるスクリーンショット、あとで再編集するスキャン、論文や法廷に提出されるかもしれない医療・科学の画像。こうした用途では、その保証こそが存在意義だ。
なぜJPEGは1992年に非可逆に賭けたのか
Joint Photographic Experts Groupは1986年に作業を始めた。当時の制約を見れば、その後の設計判断はすべて説明がつく。20 MBのハードドライブが数百ドルした時代だ。ファイルの受け渡しは1.44 MBのフロッピーが標準だった。モデムは運がよければ14.4 kbps。921 KBの非圧縮VGA写真1枚のダウンロードに、約9分かかる計算になる。10:1の非可逆版なら1分以内で届く。2:1の可逆版でも4分以上はかかる。
委員会自身のテストでも、可逆圧縮の限界ははっきりしていた。対象と公言していた写真(「連続階調画像」)には、そもそも十分な冗長性がない。この数字を前にして、残された唯一の余地、つまり「見る人」の側に賭ける設計を選んだ。
あまり知られていないが、1992年に公開された規格(ISO/IEC 10918-1)には、実は可逆モードが含まれている。DCTを完全に省略し、7つある固定予測器の1つで、最大3つの近傍ピクセルから各ピクセルを予測し、残差をエントロピー符号化する。仕組みとしては、PNGが3年後に採用するのと同じものだ。だが実装した人はほとんどいなかった。デコーダー側も無視し、エンコーダー側も無視した。医療画像の分野で本当に可逆JPEGが必要になったときには、別の規格が作られた(JPEG-LS、ISO/IEC 14495、1999)。
委員会は特許の回避にも気を配る必要があった。JPEGの算術符号化オプションはIBMのQ-coder特許にひっかかったため、ロイヤリティフリーのベースラインはハフマン符号化に落ち着き、ほとんどの実装は算術符号化の経路に触れなかった。特許問題にコーデック設計が振り回されるのは、1992年が初めてではない。そして事態は、この先さらに悪化していく。
JPEGは本質的に、人間の視覚への賭けだった。圧縮の最後の5倍を可能にするのは数学ではなく、生物学だ。
なぜPNGは1995年に可逆に賭けたのか
PNGは技術プロジェクトとして始まったのではない。きっかけは法的な緊急事態だった。
1994年12月、Unisysが、GIFを使うソフトウェアにライセンス料を課すと発表した。GIFの圧縮がLZWアルゴリズムに依存しており、それがUnisysの引き継いだ1985年の特許にかかっていたからだ。GIFの生みの親であるCompuServeはUnisysと妥協し、コストを開発者に転嫁した。Usenetのグラフィックスコミュニティは激怒した。7年間フリーだったGIFをめぐって、初期Webの画像とツールのすべてが、突然、特許料の対象にされたのだ。
1995年1月初め、騒動から数週間もたたないうちに、Thomas Boutellが代替フォーマットの最初のドラフトを投稿した。ボランティアたちがメーリングリストで議論を重ね、数ヶ月で設計をまとめ上げた。PNG 1.0は1996年10月にW3C勧告となり、1997年3月にはRFC 2083になった。
2つの要件は、最初から議論の余地がなかった。1つは、使うアルゴリズムがすべて特許フリーであること。それを満たすのがDEFLATEだった(Phil KatzのPKZIPに由来するLZ77とハフマンの組み合わせで、Jean-loup GaillyとMark Adlerがzlibに実装した)。もう1つは、完全に可逆であることだ。目的はGIFの置き換えであり、画像を劣化させる代替品など誰も受け入れなかっただろう。そもそも特許を徹底的に避ける方針では、JPEGが使うような知覚ベースの手法を採る余地もなかった。
対象コンテンツの事情も同じくらい大きかった。PNGが想定したのは、GIFが実際に運んでいたものだ。ロゴ、図版、線画、アイコン、スクリーンショット。シャープなエッジと平坦な色、つまりJPEGのリンギングが最も目立つ種類の画像である。写真に手を出せば、DCTを再発明した上に、定着済みでロイヤリティフリーのJPEGと戦うことになる。PNGは勝ち目のある領域に的を絞り、完勝した。GIFの特許は2003年に失効した(米国外では2004年)。だがその頃には、PNGはとっくにGIFの座を奪っていた。
それでも非可逆が市場を制した理由
PNGはニッチを取り、JPEGは世界を取った。
理由は量だ。Web上の画像は圧倒的に写真が多い。そして写真にとって、非可逆圧縮は妥協ではなく正解だ。2025年のWeb Almanacによれば、JPEGは登場から30年を経た今も、配信される画像全体の約**57%**を占める。ソーシャルフィード、ニュース写真、商品写真、物件情報。どれも連続階調のコンテンツで、品質75の非可逆エンコードは、人が実際に見る画面では元画像と見分けがつかない。
コスト面の計算も同じ方向を向く。ストレージも帯域もバイト単位の課金だ。10:1と2:1の違いは些細な差ではなく、許容できる品質のまま配信コストが5倍変わることを意味する。ページ速度はファイルサイズで決まり、ファイルサイズは圧縮率で決まる。カメラもスマートフォンも、標準設定は非可逆(JPEGかHEIC)だ。CMSはみな非可逆のサムネイルを生成する。SNSはアップロードされた画像をすべて再エンコードする。サイズを下げるためでもあり、メタデータや、そこに潜む悪意あるデータを除去するためでもある。写真家が完璧なTIFFをアップロードしても、タイムラインに配信されるのは品質85のJPEGだ。
可逆圧縮は、負けたというより、保証がものを言う場所へ退いた。スクリーンショットやUIアセットの領域では、アーティファクトはすぐ目立つし、もともと圧縮効率もいい。編集パイプラインのマスターでは、非可逆の世代を重ねるたびに劣化が積み上がる。医療、法務、科学の画像では、「だいたい合っている」は証拠にならない。これらの領域ではPNGとTIFFが今も盤石だ。ただ、そこに大きなトラフィックはない。
フォーマットの行き着いた先
| フォーマット | 年 | モード | 主な居場所 |
|---|---|---|---|
| JPEG | 1992 | 非可逆(可逆モードもあるがほぼ使われていない) | 写真全般、互換性の最終手段 |
| JPEG 2000 | 2000 | 両方(非可逆9/7と可逆5/3のウェーブレット) | デジタルシネマ、アーカイブ |
| PNG | 1996 | 可逆 | スクリーンショット、UI、グラフィックス |
| GIF | 1987 | 可逆、最大256色 | 簡単なアニメーション、ミーム |
| TIFF | 1986 | コンテナ形式:raw、LZW、ZIP、JPEGを格納 | 印刷、スキャン、アーカイブ |
| WebP | 2010 | 両方 | Web配信、LCP画像の約11% |
| HEIC | 2015 | 実質的には非可逆(HEVCに可逆モードあり) | iPhoneの写真 |
| AVIF | 2019 | 両方 | ブラウザで使える最高の非可逆圧縮率 |
| JPEG XL | 2021 | 両方。既存JPEGの可逆再圧縮も可能 | Safari、Chromeはフラグで有効化 |
ここから2つの傾向が見える。まず、新しいコーデックはもうどちらか一方を選ぶ必要がない。WebP、HEIC、AVIF、JPEG XLはいずれも、非可逆と可逆の両モードを1つの仕様に収めている。JPEG 2000は2000年の時点でそうだった。非可逆か可逆かという問いは、「どのフォーマットか」から「どのモードか」へ移った。もう1つは、両者の境界をまたぐ技術の登場だ。JPEG XLなら、既存のJPEGを情報を失わずに約80%のサイズへ再圧縮できる。2つの陣営が30年かけて互いの手法を学び合ってきたからこそ、実現できた芸だ。
実際の選び方
選び方は単純だ。
- 写真を公開するなら非可逆。互換性重視ならJPEG、サイズ重視ならWebPかAVIF。
- スクリーンショット、ロゴ、文字や単色を含む画像を保存するなら可逆。PNG一択だ。
- 編集するなら、マスターは可逆で保持し、非可逆のコピーを書き出す。非可逆ファイルを同じ形式で保存し直してはいけない。世代を重ねるたびに劣化が積み重なる。
- 変換するなら、入力形式ではなく用途に合わせて出力を選ぶ。フォトギャラリーに出すPNGスクリーンショットはJPEGかWebPに変える。デザインデータに組み込むJPEGはPNGに変える。画質が上がるからではなく(上がることはない)、これ以上劣化しなくなるからだ。
ここでつまずきやすいのがiPhoneの写真だ。HEICはすでに非可逆のHEVC圧縮がかかっている。PNGに変換しても、失われた情報は何も戻らない。今の状態を固定し、これ以上の劣化を防ぐだけだ。それでも、これから編集するつもりなら意味がある。共有が目的なら、素直にJPEGへ変換すればいい。当サイトのHEICからJPG、HEICからPNG、HEICからWebPの変換ツールは、いずれもブラウザ内でローカルに処理するので、ファイルがデバイスの外に出ることはない。
同じ考え方は、ほかの組み合わせにもそのまま使える。JPEGを可逆の編集ワークフローに入れたいならJPGからPNG。PNGのスクリーンショットをWeb用に小さくしたいならPNGからJPG、サイズを下げつつ透過を残したいならPNGからWebP。逆方向なら、WebPからPNGやWebPからJPGで、古いソフトウェアでも開ける形式に戻せる。非圧縮のBMPスキャンを抱えているなら、BMPからJPG、BMPからPNG、BMPからWebPで、非可逆にするか可逆にするかを一度に決められる。ドキュメントでも同じ分かれ道だ。PDFページを画像として書き出すなら、写真中心のページはPDFからJPG、文字のシャープさを保ちたいページはPDFからPNGを選ぶことになる。
30年が経ち、生き残ったのは、ユーザーが何を捨ててよくて、何を捨ててはいけないかを正確に見極めていたフォーマットだった。



