深掘り

JPEGの秘密の生涯:1992年のフォーマットがいかにしてインターネットを支配したか

koboshiCo-founder
·3 分で読めます
JPEGの秘密の生涯:1992年のフォーマットがいかにしてインターネットを支配したか
要約

JPEGは魔法ではない。DCT(離散コサイン変換)、量子化テーブル、クロマサブサンプリングからなるパイプラインで、人間の目に気づかれにくいデータを捨てている。33年後も支配的な理由はただ一つ:すべてが開ける。

任意の .jpg ファイルをhexエディタで開く。先頭2バイト:

FF D8

これが**Start of Image(SOI)マーカーだ。すべてのJPEGファイルはこれで始まる。地球上のすべてのJPEGデコーダーはこれを探す。その後のバイトは、これがどのJPEG亜種か、どの色空間を期待すべきか、ピクセルデータがどこから始まるかをデコーダーに伝える。このフォーマットはWebブラウザより古いにもかかわらず、2025年Web Almanacによると現代のWebで配信される画像の約57%**を担っている。

JPEGを生んだストレージ危機

1986年、生の640 × 480グレースケール画像はディスク307 KBを消費した。同解像度のカラー画像は921 KB必要だった。20 MBハードドライブが数百ドルし、1.44 MBフロッピーディスクが標準的な交換媒体だった時代に、1枚の非圧縮写真がディスクの3分の2を埋めることになる。

必要とされたのは明確だった:連続階調画像——写真であって線画ではない——向けの標準圧縮フォーマットだ。複数のグループがこの問題に取り組んでいた。1986年にISO/IECとITU-Tによって設立されたJoint Photographic Experts Group(JPEG)は、最も優れたアイデアを1つの草案にまとめた。6年の洗練を経て、1992年にISO/IEC 10918-1として標準が公開された。

JPEGは決して唯一の画像フォーマットになるつもりはなかった。設計された目的は1つ:写真を保存・送信に十分小さくすることだ。その目的は、情報を非常に特定の順序で破棄することで達成される。

JPEGがこれほど高圧縮である理由

JPEG圧縮は単一のアルゴリズムではなくパイプラインだ。各ステージで人間の視覚系が最も気づきにくいデータが除去される。

1. 色空間変換(RGB → YCbCr)

画面はRGBを表示する。JPEGはYCbCrを保存する。Yチャンネルは輝度(明るさ)を担う。CbCrは色差(青差と赤差)を担う。これが重要なのは、人間の目には輝度に調整された約250万個の錐体細胞があるのに対し、色に調整されたのは10万個しかない。輝度のディテールは色のディテールよりはるかに鮮明に見える。

2. クロマサブサンプリング

ほとんどのJPEGは4:2:0サブサンプリングを使用する。輝度サンプル4つに対してCbサンプル1つ、Crサンプル1つ。つまりクロマチャンネルは輝度チャンネルの4分の1の解像度で保存される。4000 × 3000の画像では、Yプレーンがフル解像度。CbとCrプレーンはそれぞれ2000 × 1500。本当の圧縮が始まる前に、生データの約50%が削減され、ほとんどの閲覧者は気づかない。

3. 離散コサイン変換(DCT)

画像は8 × 8ピクセルブロックに分割される。各ブロックはDCTに通され、空間データ(ピクセル値)を周波数データ(ブロック内で値がどれだけ速く変化するか)に変換する。結果は8 × 8の係数行列になる。左上の値はDC係数——ブロックの平均輝度だ。残り63個は、段々と高周波のディテールを表すAC係数だ。

高周波係数は微細なテクスチャを符号化する:髪の毛、草、ノイズ。低周波係数は大まかな形状を符号化する:空、壁、肌の色合い。

4. 量子化

ここでロスが発生する。JPEGは各DCTブロックに量子化テーブルを適用する。テーブルは2つ目の8 × 8除数行列だ。各DCT係数は対応する量子化値で除算され、最も近い整数に丸められる。

標準量子化テーブルは高周波係数を最も強く打ち込む:

16  11  10  16  24  40  51  61
12  12  14  19  26  58  60  55
14  13  16  24  40  57  69  56
14  17  22  29  51  87  80  62
18  22  37  56  68 109 103  77
24  35  55  64  81 104 113  92
49  64  78  87 103 121 120 101
72  92  95  98 112 100 103  99

例えば7という高周波係数が121で除算され、0に丸められる。消えた。不可逆だ。デコーダーはそれを二度と見ることがない。これがロス圧縮だ:データは再符号化されるのではなく、破壊される。

品質90では、量子化値はより小さいスケーリング係数で除算される。品質50ではスケーリング係数が大きい。より多くの係数がゼロになる。ファイルは小さくなる。画像は柔らかくなる。

5. エントロピー符号化

量子化後、残りの係数はジグザグスキャンされ、ランレングス符号化され、ハフマン符号化で圧縮される。この段階はロスレスだ。すでに破壊されたデータをより効率的に詰め込むだけだ。

結果:1200万画素の非圧縮RGB画像は36 MB。JPEG品質90、4:2:0サブサンプリングで保存すると約3.5 MBに縮まる。10:1の削減であり、拡大しない限り品質劣化は目に見えない。

実際にどれだけロスがあるのか?

損傷は均一ではない。

品質典型的サイズ(1200万画素)視覚的影響
95+~8 MBほぼ見えない;アーカイブ向き
90~3.5 MBわずかな柔らかさ;カメラ標準
75~1.8 MB微細ディテールでぼけが目立つ;Web標準
50~1.0 MB100%ズームでブロックノイズが明瞭
30~600 KB色バンディング、モスキートノイズ、印刷不可

品質が下がるにつれ、3種類の明確なアーティファクトが現れる:

  • ブロッキング:8 × 8グリッドの境界が目立つ。特に空のような滑らかなグラデーションで。
  • リンギング:高コントラストのエッジ周りに振動するハロー(背景に接する文字など)。
  • カラーブリーディング:クロマサブサンプリングが鋭い境界を越えて色を滲ませる。

本当に致命的なのは**世代劣化(generation loss)**だ。JPEGを開き、編集し、再びJPEGとして保存する。保存のたびにパイプライン全体が再実行される:RGB → YCbCr → サブサンプリング → DCT → 量子化。丸め誤差が蓄積する。10世代後には水彩画のようになる。50世代後には判別不能だ。

グリーンスフトとその他の再圧縮の特異性

JPEGを何度も再保存すると、色温度がずれていることに気づくかもしれない。一部の画像には微かな緑味が乗る。他はマゼンタに寄る。原因はクロマチャンネルの奥深くにある。

JPEGはCbとCrを低解像度で保存し、積極的に量子化する。保存のたびに両チャンネルに丸め誤差が導入される。RGBへの逆変換にはこの行列が使われる:

R = Y + 1.402 × (Cr - 128)
G = Y - 0.344136 × (Cb - 128) - 0.714136 × (Cr - 128)
B = Y + 1.772 × (Cb - 128)

緑はCbとCrの両方から計算されることに注目。繰り返し量子化がCbを上に、Crを下に、たった1量子化ステップずつずらしても、Gチャンネルはずれる。Cbの正のバイアスは緑を下に押す。Crの負のバイアスは緑を上に押す。この相互作用は対称ではない。なぜなら係数-0.344136-0.714136は異なる大きさを持つからだ。結果:元のクロマ値がすでに量子化境界付近だった領域で、緑が徐々に蓄積する。

これは必ず起きる効果ではない。エンコーダーの量子化テーブル、サブサンプリングモード、画像コンテンツに依存する。だがこれは実在し、再現可能であり、プロのワークフローがJPEGの再保存を避ける理由の一つだ。

JPEGにこんな欠陥があるのに、なぜすべてがJPEGを使うのか?

JPEGが普及しているのは完璧だからではない。普及しているのは十分で普遍的だからだ。

  • 特許ロックインなし:ベースラインJPEG特許(Forgent Networks保有)は2006年に期限切れ。ロイヤリティフリーだ。
  • ハードウェアデコード:すべてのカメラ、スマートフォン、プリンター、ブラウザに、シリコンか高度に最適化されたCでJPEGデコーダーが組み込まれている。レンダリングコストはほぼゼロ。
  • 十分に良い:ソーシャルメディア、ニュースサイト、メール添付では、スマートフォン画面では品質75のJPEGはソースと区別がつかない。
  • エコシステムの慣性:CMS、CDN、画像ライブラリ、レガシーアーカイブはみなJPEGを話す。置き換えるには、より良いフォーマットだけでは不十分だ。ペタバイト規模の既存アセットを移行する理由も必要だ。

勝つべきだったフォーマットたち

JPEGを打倒しようとしたフォーマットはいくつかある。どれも完全には成功していない。

フォーマットロスロスレス透過アニメーション最大ビット深度主要な利点
JPEG有り無し無し無し8-bitユニバーサルサポート
PNG無し有り有り無し16-bit完全ロスレス、アルファ
WebP有り有り有り有り8-bitJPEGより25–35%小さい、ブラウザネイティブ
HEIC有り有り有り有り16-bitJPEGより約50%小さい、Apple既定
AVIF有り有り有り有り12-bit現時点で最高の圧縮率、ロイヤリティフリー
JPEG XL有り有り有り有り32-bitロスレスJPEG再圧縮、プログレッシブデコード

PNGはロスレス問題を解決したが、写真ではJPEGの5–10倍のファイルサイズになる。スクリーンショット、UIアセット、グラフィックスを支配している。

WebP(Google、2010)はサイズでJPEGを上回り、透過とアニメーションを追加した。今や主要なブラウザすべてに搭載されている。2025年Web Almanacは、WebPがLCP画像の**11%**を占め、2024年の7%から上昇したとしている。現時点で安全なアップグレードパスだ。

HEIC(Apple、2017)はISOBMFFコンテナ内でHEVC圧縮を使用する。JPEGより約40–50%小さく、1ファイルに複数画像を格納できる。Appleエコシステムを支配し、HEVCの特許プールのため他では停滞している。

AVIF(AOM、2019)はAV1動画から派生した。広くサポートされたフォーマットの中で最高の圧縮率を達成し、同等品質でWebPより約30%小さい。欠点はデコード速度だ。モバイルデバイスではJPEGの2–3倍の時間がかかることがあり、バッテリーを消費しLCPを遅らせる。

JPEG XL(ISO/IEC 18181、2021)は技術的にこれらすべてを凌駕する。JPEGより50–60%小さい。デコードが速い。プログレッシブデコードに対応:ファイルの約1%をダウンロードした時点で使用可能な画像が表示される。最も重要なのは、既存のJPEGをロスレス再圧縮でき、約20%のサイズ削減を実現しつつ、元のファイルをビット単位で復元できる。他のどのフォーマットもこれはできない。

現在地

JPEG XLの幼少期は厳しかった。Googleは2021年にChromeで実験的サポートを追加し、2022年10月31日に削除した——「ハロウィン決定」と呼ばれる。公表された理由:既存フォーマットに対するインクリメンタルな利益が不十分だった。反発は即座だった。そのChromium issueはプロジェクト史上2番目にスター数が多いものになった。Googleは、Googleが共同設立したAlliance for Open Mediaに紐づくAVIFを守っていると非難された。

2025年末、Chromiumは方針を転換した。新しいRustデコーダー(jxl-rs)がChrome Canaryにlandingした。Chrome 145は2026年2月にリリースされ、フラグの背後でJPEG XLサポートを搭載した。Safariは2023年からサポートしている。Firefox Nightlyも同じRustデコーダーを統合中だ。JPEG XLはまだデフォルトで有効ではないが、コードベースに戻ってきた。

一方、AVIFは2026年の現実的な選択だ。ブラウザサポートは広い。エンコーダーは改善している。CloudinaryとCloudflareは両方ともAcceptヘッダー交渉を通じて自動的にAVIFを配信する。CoreDashのデータによれば、AVIFまたはWebPを配信するページのLCP良好率の中央値は**81%で、JPEGのみのページは64%**だ。

結論

JPEGは33年前の妥協案だ。色の解像度、高周波テクスチャ、数値精度を引き換えに、1990年代にデジタル写真を現実にしたファイルサイズを実現した。アーティファクトはよく理解されている。世代劣化は実在する。グリーンスフトも起きる。

それでもJPEGが存続するのは、QWERTYキーボードが存続するのと同じ理由だ:切り替えコストが、現状維持の苦痛を上回る。

実用的な前進パスは階層的だ:

  1. 高品質マスターを保持する。オリジナルをPNG、TIFF、または品質95以上のJPEGでアーカイブする。品質75のWeb書き出しから再編集してはいけない。
  2. 現代フォーマットを動的に配信する。ブラウザのAcceptヘッダーに基づいてAVIF、WebP、JPEG XLを交渉するCDNや画像サービスを使う。マスターは1つだけ保存し、エッジでオンデマンド変換させる。
  3. JPEGを一括再エンコードしない。各世代がデータを破壊する。より小さいファイルが必要なら、別のJPEGではなくマスターから再エンコードする。

JPEGは突然死ぬことはない。GIFが消えたのと同じように、徐々に薄れていく:どこでもサポートされ、どのビューアでも開くが、同じ仕事をより少ないバイトとより少ないアーティファクトでこなすフォーマットに段々と勝てなくなる。違いは、今回は置き換えるフォーマットが実際に勝ちつつあるということだ。

その他のおすすめ記事