ファイルを小さくできるのは規則性があるから

文章、画像、音声などのデジタルデータは、最終的には二進法のビット列として保存されます。しかし、その並びを毎回そのまま記録する必要があるとは限りません。たとえば「AAAAAA」という並びは、Aを六つ書く代わりに「Aが六つ続く」という規則で表せます。長い並びを、同じ内容を表す短い記述へ置き換えるのが圧縮の基本的な発想です。

圧縮前の大きさに対して、圧縮後がどれほど小さくなったかを表す考え方が圧縮率です。ただし、どの程度縮むかは方式だけでなく、データの内容にも左右されます。同じ値や似た模様が多いデータには規則性が見つかりやすく、すでに圧縮されているデータや規則性の少ないデータは、可逆圧縮をかけてもあまり小さくならないことがあります。圧縮は、どんなファイルでも一定の大きさにできる魔法ではありません。

可逆圧縮は元のビット列を一つ残らず復元する

可逆圧縮では、圧縮したデータを展開すると、圧縮前とまったく同じビット列に戻ります。文章、表計算のデータ、プログラム、実行ファイルなどは、一部が別の値に変わるだけで意味や動作が変化するため、完全な復元が必要です。ZIPは複数のファイルをまとめて可逆圧縮するときによく使われ、PNGは画像を可逆圧縮して保存する形式です。

代表的な考え方の一つが、同じ値の連続を「値と回数」の組で表すランレングス法です。また、何度も現れる文字列やデータ列を辞書の項目として扱い、短い番号などで参照する方式もあります。出現しやすい記号に短い符号、出現しにくい記号に長い符号を割り当てる方法もあります。どの方法も、表現の仕方を変えているだけで、復元に必要な情報を捨てていない点が共通しています。文字コードで表された文章を圧縮する場合も、展開後には元と同じバイト列が得られます。

非可逆圧縮は見え方・聞こえ方を保ちながら情報を減らす

写真、音声、映像では、すべての値を完全に残すより、人が感じる品質を大きく損なわない範囲で情報を減らす方が、小さなファイルにしやすい場合があります。非可逆圧縮は、復元後のデータが元のビット列とは一致しないことを前提に、知覚上の重要度が低い成分や細かな差をまとめたり省いたりします。一度失われた情報は、展開しても戻りません。

JPEG画像では、画像を周波数成分に変換し、細かな変化を表す成分などを量子化します。量子化とは、値を一定の段階に丸める処理です。丸めを強くすればファイルを小さくしやすい一方、境界が不自然に見えたり、細部がぼやけたりすることがあります。音声の非可逆圧縮では、ほかの音に隠れて感じ取りにくい成分などを利用してデータ量を減らします。これは、音や画像をデジタル化する標本化・量子化・符号化ともつながる考え方です。

写真・図・文書では失ってよい情報が違う

圧縮方式は、ファイルの種類だけで機械的に決めるのではなく、そのデータを何に使うかで選びます。自然な色の変化が多い写真は、多少の変化を許容してJPEGなどで小さくすると、保存や通信の負担を抑えられます。一方、文字を含む画面画像、輪郭のはっきりした図、透明部分を持つ画像には、PNGが適することがあります。ラスタ形式とベクタ形式の違いも、必要な容量や適した保存形式に関係します。

編集を続ける元データ、正確な照合が必要な記録、あとで別の形式へ変換する素材には、可逆形式や非圧縮形式を残しておく方が安全です。閲覧・配布用の複製だけを非可逆圧縮すれば、元の品質を保ちながら用途に合う大きさを選べます。通信ではファイルが小さいほど転送時間や通信量を抑えやすいものの、画質や音質との釣り合いを確認する必要があります。

JPEGの「上書き保存」で劣化が重なる理由

非可逆圧縮されたJPEGを開き、編集して再びJPEGとして保存すると、復元された画素に対して改めて非可逆圧縮が行われます。そのたびに必ず目立つ変化が現れるとは限りませんが、再圧縮を繰り返せば誤差が重なる可能性があります。これは、ファイルをコピーしただけで劣化するという意味ではありません。JPEGファイルのビット列をそのまま複製する通常のコピーなら、複製元と同じデータが作られます。

もう一つ紛らわしい例がGIFです。GIF内部の圧縮そのものは可逆ですが、表現できる色数に制限があります。色の多い画像をGIFへ変換する際には、圧縮より前の色数を減らす処理で見た目が変わることがあります。「可逆圧縮なら、形式変換を含むすべての操作で元の見た目が保たれる」とは限りません。圧縮方式と、その形式が表現できるデータの範囲は分けて考える必要があります。

拡張子だけでなく復元の必要性から選ぶ

方式を選ぶときの第一の問いは、「元のビット列を完全に取り戻す必要があるか」です。必要なら可逆圧縮を選び、多少の変化を許容できるなら、目的の品質を満たす範囲で非可逆圧縮も候補になります。次に、保存容量、通信量、展開や再生にかかる処理、利用する機器やソフトウェアがその形式に対応しているかを確かめます。

品質設定が選べる形式では、名前が同じでも出力結果は同じとは限りません。圧縮を強くすれば常に最適なのではなく、文字が読めるか、細部が必要か、音の変化が目的を損なわないかを実際の出力で確認することが重要です。可逆と非可逆の違いは優劣ではなく、「何を完全に残し、何なら減らせるか」という目的の違いです。