1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

画像フォーマットの正体とWebPの「予測マジック」を理解する

1
Posted at

はじめに

Webサイトのパフォーマンス改善(LCP対策など)で必ず直面するのが「画像の軽量化」です。
「写真はJPEG、ロゴはSVG、最近はWebPがいいらしい」といった定石はあっても、「なぜWebPはこれほど軽いのか?」「内部でどんな計算(予測)をしているのか?」まで説明できるでしょうか。

この記事では、基本の3大フォーマット(JPEG, PNG, SVG)の正体を整理した上で、Googleが生んだWebPの「予測符号化」の凄さを、実際に検証した結果を交えて解説します。


1. 基本の3大フォーマット:名前の由来と役割

まずは、私たちが日々扱っている「基本の3人」を改めて整理しましょう。

JPEG(ジェイペグ):写真の専門家

  • 正式名称: Joint Photographic Experts Group(写真の専門家グループ)
  • 特徴: 人間の目が「細かい色の変化には鈍感」であることを利用し、目立たないデータを間引いて保存する「非可逆圧縮」の代表格です。
  • 💡 豆知識: .jpeg.jpg は中身は全く同じものです。昔のOSの拡張子3文字制限の名残です。

PNG(ピング):Webの職人

  • 正式名称: Portable Network Graphics(持ち運び可能なネットワーク画像)
  • 特徴: データを一切捨てない「可逆圧縮」。背景透過が可能で、何度保存しても劣化しないため、ロゴやスクショ、図解に最適です。

SVG(エスブイジー):数学的な異端児

  • 正式名称: Scalable Vector Graphics(拡大可能なベクター画像)
  • 特徴: ドットの集まりではなく、「ここに円を描け」というテキストベースの命令(コード)です。無限に拡大してもガビガビにならず、React等でコンポーネント化してCSSで操作できるのが最強の強みです。

2. WebP(ウェッピー)の凄さ:「予測」でデータを削る

WebPがJPEGやPNGより圧倒的に軽い理由は、動画技術から転生した「予測符号化(Predictive Coding)」にあります。

なぜ「推測」すると軽くなるのか?

WebPは画像を小さなブロックでスキャンし、「隣のドットが青なら、次も青だろう」と、すでに処理した周囲のピクセルから次の色を予測します。

そして、ここがポイントですが、WebPは「予測した色」を保存するわけではありません。
保存するのは、「予測と、実際の色の『ズレ(差分)』だけ」です。

  • 予測が的中した場合:差分は「0」になります。「0」というデータは極限まで短く圧縮できます。
  • 予測が外れた場合: ズレた分の「小さな数字」だけを記録します。

大きな数字(色の生データ)を保存するより、0に近い小さな数字(差分)を保存する方が、圧倒的にビット数を節約できる。これがWebPが爆速な理由です。

image.png


3. 実証:WebPの実力をSquooshで検証してみた

Googleが提供する比較ツール「Squoosh」を使って、風景写真(JPEG)をWebPに変換してみました。

webpの比較画像.gif

最初はQualityを0にして、94%圧縮。これは目で見てもかなり粗い。
Qualityを50にして、50%圧縮。これは遠目には差分がわからない。十分利用できる。拡大した時に粗さが理解できる程度

検証結果

  • オリジナル(JPEG): 44.9 kB
  • 変換後(WebP): 22.0 kB(51%削減!

驚くべきは、ファイルサイズが半分以下になったにもかかわらず、肉眼では劣化がほぼ判別できない点です。Quality(画質)を50程度まで下げても、WebPの予測ロジックが優秀なため、空のグラデーションなども非常に滑らかに保たれています。

謎の項目「Effort」の正体

設定項目にある「Effort(努力量)」は、「出力する側がどれだけ必死に予測パターンを総当たりするか」という数値です。

  • 値を大きくすると、書き出しに時間はかかりますが、より最適な予測パターンを見つけ出し、コンマ数KB単位でファイルを絞り込んでくれます。
  • ユーザー側(ブラウザ)の表示負荷は変わらないため、配信用の画像なら最大値(6)で書き出すのがエンジニア的に正解です。

【まとめ】使い分けチートシート

形式 圧縮方式 透過 用途
JPEG 非可逆 × ユーザー投稿写真など(レガシー対応)
PNG 可逆 ロゴ、図解、劣化させたくないUI素材
SVG コード アイコン、ロゴ(無限拡大・CSS操作)
WebP 両方可 Web配信のデフォルト(迷ったらこれ)
AVIF 次世代 さらに軽量化を極めたい時(LCP改善の切り札)

おわりに

画像の拡張子は、ただのアルファベットではなく「いかに賢くサボって(予測して)データを削るか」という技術の結晶です。

仕組みを理解して使い分けることで、ユーザーのデータ通信量を守り、最高のサイトパフォーマンスを提供していきましょう!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?