FlowingDev

ピクセルを絞り込んで爆速ウェブを実現!華麗なる画像ダイエット術

WebP、PNG、JPEGといった画像フォーマットの仕組みと、ウェブサイトのパフォーマンスやユーザー体験のために画像変換・圧縮がなぜ重要なのかを学びましょう。

ツールを試す: 画像コンバーター

ひとことで言うと

画像変換とは、画像をピクセルが荒いガビガビの状態にすることなく、ウェブでの表示をより小さく、より速くするために、あるファイル形式から別の形式へと変換する、いわば「デジタルの錬金術」です。

これで解決すること

ウェブの黎明期、ダイアルアップモデムが怒れるロボットみたいに「ピーガー」と鳴いていた頃は、1バイトたりとも無駄にはできませんでした。写真1枚をダウンロードするのに数分かかることもあったのです。このプレッシャーが、それぞれが得意分野を持つ、ウェブ画像フォーマットの第一世代を生み出しました。JPEGは写真の王様となり、GIFは簡単なアニメーションやグラフィックを扱い、そして後から登場したPNGは、ロゴやアイコン向けに優れた品質と透明性を提供しました。

そして現代。インターネットは馬鹿みたいに速くなりましたが、私たちも4KディスプレイやスマホのRetinaスクリーン、そして視覚的にリッチなコンテンツへの飽くなき欲望を手に入れました。問題は消え去ったわけではなく、その規模を変えただけです。最新のスマホで撮った最適化されていない写真は、1枚で10〜15MBにもなります。そんな画像が十数枚も使われているウェブサイトなんて、特にデータ上限のあるモバイルネットワークを使っているユーザーにとっては、表示された頃にはもう手遅れです。

Googleはこのことを知っています。だからこそ、ページの表示速度、特にメインコンテンツがどれだけ速く表示されるか(Largest Contentful Paint、略してLCP)が、検索順位の主要な要因になっているのです。読み込みの遅い画像は、良いLCPスコアにとって最大の敵です。

これこそが、画像変換と圧縮が取り組む永遠の綱引きなのです。どうすれば、ユーザーを待たせることなく、彼らのデータプランを食いつぶすことなく、検索エンジンにペナルティを受けることなく、高解像度のスクリーンに鮮明で美しい画像を届けられるのか?その答えは、用途に合わせて適切なフォーマット、適切なサイズ、そして適切な圧縮レベルを選択することにあります。

舞台裏の仕組み

画像変換を理解するには、まず画像が「何」であるかを理解する必要があります。それは、色付きの点(ピクセル)が並んだ巨大なグリッドです。そのグリッド情報をいかに効率的に保存するかに、魔法が隠されています。

ピクセル、色、そして生データ

最も基本的なレベルでは、デジタル画像はただの数字の集まりです。各ピクセルは通常、赤 (Red)、緑 (Green)、青 (Blue) の3つの値 (RGB) で表現されます。それぞれの値は0から255までの範囲(これはきれいに1バイトに収まります)です。

標準的なフルHD画像(幅1920ピクセル × 高さ1080ピクセル)を例にとってみましょう。

  • 総ピクセル数: 1920 * 1080 = 2,073,600
  • 1ピクセルあたりのデータ量: 3バイト (Rに1、Gに1、Bに1)
  • 合計生データサイズ: 2,073,600 * 3 = 6,220,800バイト、つまり約6.2 MB。

もし透明度のために4番目のチャンネル(RGBAの "A" はアルファ)を追加すれば、さらに2MB増えます。このように画像を保存する方法はビットマップ (BMP) と呼ばれますが、ウェブ上で生のビットマップが使われないのは、まさにこのためです。私たちには圧縮が必要です。

非可逆圧縮 vs 可逆圧縮

これは画像フォーマットにおいて最も重要なコンセプトです。

可逆圧縮 (ロスレス) は、完璧で元に戻せる記録保管係のようなものです。ピクセルデータの中からパターンや冗長な部分を見つけ出し、それを短い記法で記録します。例えば、「白、白、白、白、白」と保存する代わりに、「白 × 5」と記録します。画像が開かれるとき、元のデータがビット単位で完璧に再構築されます。品質の劣化は一切ありません。PNGやGIFは可逆圧縮を使用しています。

非可逆圧縮 (ロッシー) は、実用主義のアーティストです。人間の目では気づきにくいと判断したデータを永久に捨ててしまいます。写真に見られるような色や明るさの微妙な変化を扱うのが特に得意です。可逆圧縮よりもはるかに小さいファイルサイズを実現できますが、その代償として忠実度が失われます。非可逆圧縮で画像を保存するたびに、さらに多くのデータが永久に失われます。これを「世代劣化 (generation loss)」と呼びます。JPEGや非可逆モードのWebPがこの方法を使用しています。

特徴 可逆圧縮 (PNG, GIF) 非可逆圧縮 (JPEG, WebP)
目的 完璧な再構築 最小のファイルサイズ
データ データは一切捨てられない 重要でないデータは破棄される
最適な用途 ロゴ、テキスト、アイコン、線画 写真、複雑なグラデーション
再保存 安全、品質劣化なし 保存するたびに品質が劣化する
例えるなら ZIPアーカイブ 小説の要約

各フォーマットのクイックツアー

  • JPEG (Joint Photographic Experts Group): 90年代から続く写真界の働き者。離散コサイン変換 (DCT) という賢い非可逆技術を使い、ピクセルを8x8のブロックにグループ化し、人間の目には見えにくいディテールを滑らかにします。透明度やアニメーションはサポートしていません。
  • PNG (Portable Network Graphics): GIFに代わる、特許フリーで優れたフォーマットとして作られました。その可逆圧縮(「Deflate」と呼ばれる)は、ロゴやユーザーインターフェースの要素など、フラットな色の領域を持つ画像に最適です。そのキラー機能は8ビットのアルファチャンネルで、滑らかな半透明表現を可能にします。
  • GIF (Graphics Interchange Format): ウェブ画像の元祖。アニメーションで有名ですが、技術的な制約があります。1フレームあたり256色のパレットしか使えず、透明度はバイナリ(2値)です。つまり、ピクセルは100%透明か100%不透明かのどちらかしかなく、エッジがギザギザになりがちです。
  • WebP: Googleが開発した「すべてを統べる唯一のフォーマット」を目指す現代的なフォーマット。非可逆モードと可逆モードの両方で動作可能です。その非可逆圧縮はVP8ビデオコーデックに基づいており、JPEGよりも効率的で、同じ見た目の品質でより小さいファイルを生成することが多いです。また、アルファ透明度とアニメーションもサポートしており、PNGとGIFの両方を置き換える可能性を秘めています。

サイズ変更の算数

画像の寸法を変更するとき、単に引き伸ばしているわけではありません。ソフトウェアは全く新しいピクセルのグリッドを作成する必要があります。このプロセスはリサンプリングまたはインターポレーション(補間)と呼ばれます。

  • ダウンサイジング (小さくする): アルゴリズムは元の画像のピクセルグループを見て、それらを代表する1つの新しいピクセルを計算して、より小さな画像に配置します。これは単純な平均値かもしれませんし、もっと複雑な加重計算かもしれません。
  • アップサイジング (大きくする): こちらの方がはるかに困難です。なぜなら、アルゴリズムは隙間を埋めるために新しいピクセルを「発明」しなければならないからです。隣接するピクセルを見て、その間に何があるべきかを推測します。小さな画像を拡大すると、ぼやけたりブロック状になったりするのはこのためです。

ここでの重要な教訓は、常に最大かつ最高品質のオリジナル画像からサイズ変更を行うことです。

実録!世界の現場から

### Eコマースサイトの大惨事

ある新しいオンラインブティックが、ゴージャスな商品写真に大金を投じました。サイトの公開を急いでいた開発者は、写真家から受け取った巨大な8MBのPNGファイルをそのままアップロードしました。サイトは…オフィスの光ファイバー接続では、見事に表示されました。しかし、実際のモバイルユーザーにとっては、商品ページの読み込みに15秒もかかりました。直帰率は天井知らずで、初期の売上はゼロ。写真コンテンツに対して、超高品質な可逆圧縮ファイルを提供していたのです。典型的なミスマッチでした。

教訓: 写真にはJPEGやWebPのような非可逆フォーマットを使いましょう。知覚できる品質の低下はほとんどなく、ファイルサイズを大幅に(多くの場合80〜90%)削減でき、ページの読み込み時間とビジネスを救います。

### なんか…残念な感じのロゴ

マーケティングチームが、会社のロゴを小さなJPEGファイルとしてウェブ開発者に送りました。開発者はそれをウェブサイトの薄いグレーのヘッダーに配置しました。結果は悲惨なものでした。JPEGは透明度をサポートしていないため、ロゴは醜い白いボックスで囲まれ、文字のエッジは圧縮によるアーティファクトでぼやけていました。慌てたマーケティング担当者は、エディタでそのJPEGを開き、魔法の杖ツールで白い部分を選択して再保存することで「修正」しようとしましたが、見た目はさらに悪化するだけでした。

教訓: ロゴ、アイコン、その他シャープな線や透明な背景が必要なものには、PNGのような可逆圧縮フォーマットか、SVGのようなベクターフォーマットを使いましょう。JPEGはくっきりしたエッジを台無しにし、不要なおまけ(背景色)まで付けてくれます。

### ヒーローアニメーションの失敗談

あるデザインエージェンシーが、クライアントのホームページに派手なフルスクリーンのアニメーションシーケンスを載せたいと考えました。彼らは誇らしげに12MBのアニメーションGIFを納品しました。それは美しく再生されましたが、ウェブサイトのパフォーマンスを完全に窒息させ、Core Web Vitalsの監査で、見事なくらいに不合格となりました。フレーム数が多く、色数も多いため、GIFが理不尽なほど肥大化してしまったのです。

教訓: GIFは、複雑で現代的なアニメーションには不向きです。アニメーションWebPなら、はるかに小さくなったでしょう。ヒーローアニメーションには、適切に圧縮された<video>要素にautoplay muted loopを指定する方が、ファイルサイズを数分の一に抑えつつ、はるかに優れた品質を提供できる場合が多いです。

よくある間違いと落とし穴

  • 用途に合わないフォーマットを使う。 これは最大の罪です。ロゴにJPEGを使ったり、休暇の写真に巨大なPNGを使ったりしないでください。コンテンツの特性にフォーマットの長所を合わせましょう。
  • 実際にファイルをリサイズする代わりに、HTML/CSSでサイズ指定する。 <img src="giant-image.jpg" width="200">と書いても、ファイルは小さくなりません。ブラウザはgiant-image.jpg全体をダウンロードしてから縮小します。帯域幅を無駄にし、理由もなくページを遅くしているだけです。
  • JPEGを何度も再保存する。 JPEGを保存するたびに、新たな非可逆圧縮のラウンドが実行されます。この「世代劣化」は、画像を急速にブロック状の汚いものに変えてしまいます。常に元のソースファイルから作業しましょう。
  • 「品質」スライダーを無視する。 JPEGやWebPを書き出すとき、デフォルトの「100」の品質設定をそのまま受け入れないでください。多くの場合、品質を75〜85に下げても見た目にほとんど違いはなく、ファイルサイズは大幅に削減できます。実験してみましょう!
  • 次世代フォーマットのフォールバックを忘れる。 WebPのサポートは現在非常に優れていますが(ブラウザの97%以上)、重要な画像については、非常に古いシステムを使っている少数のユーザーのために、JPEGやPNGのフォールバックを提供したい場合もあるでしょう。HTMLの<picture>要素は、このために作られています。
<picture>
  <source srcset="image.webp" type="image/webp">
  <source srcset="image.jpg" type="image/jpeg">
  <img src="image.jpg" alt="Description of my image">
</picture>

なぜこれが重要なのか

もしあなたがウェブ開発者、デザイナー、あるいはコンテンツクリエーターであれば、画像最適化はオプションの「あったらいいね」ではありません。それは基本的な責任です。

  • パフォーマンスこそがユーザー体験: 速いサイトは良いサイトです。遅い画像は、ウェブページの肥大化とユーザーの不満の主な原因です。
  • SEOは重要: Googleはページの表示速度とCore Web Vitalsをランキングシグナルとして明確に使用しています。最適化された画像は、検索での可視性を直接向上させることができます。
  • モバイルファースト: ウェブトラフィックの大半はモバイルです。ユーザーのデータプランや不安定な接続環境を尊重し、適度なサイズのファイルを提供しましょう。
  • 最も手軽で効果的な改善策の一つ: 画像の最適化は、ウェブサイトに対して行える最も簡単でインパクトのあるパフォーマンス改善の一つであることが多いです。

ウェブサイトに画像を追加するときはいつでも、一呼吸おいて自問自答すべきです。これは適切なフォーマットか?ピクセル寸法は適切か?効果的に圧縮されているか?画像変換の基礎を知っていれば、これらの問いに自信を持って答えることができます。

さらに深く知る

理論はOK。さあ手を動かそう — 100%ブラウザ内で。

ツールを試す: 画像コンバーター