圧縮率
データ圧縮において、元のデータサイズに対する圧縮後のサイズの比率。テキストデータは冗長性が高いため、一般に 60〜80% の圧縮率を達成できる。
圧縮率 (compression ratio) は、データ圧縮の効率を示す指標です。元のデータサイズを D、圧縮後のサイズを C とすると、圧縮率は (1 - C/D) × 100% で計算されます。100KB のテキストファイルが 25KB に圧縮されれば、圧縮率は 75% です。圧縮率が高いほど、より少ないストレージやネットワーク帯域でデータを扱えます。
テキストデータは画像や動画と比べて圧縮率が高くなる傾向があります。自然言語のテキストには文字の出現頻度の偏り (英語では「e」が最頻出)、単語の繰り返し、定型的なフレーズなど、多くの冗長性が含まれているためです。英語のテキストを gzip で圧縮すると 60〜70% の圧縮率が得られ、日本語テキスト (UTF-8) では 50〜65% 程度です。日本語の圧縮率がやや低いのは、漢字のバリエーションが多く、文字の出現頻度の偏りが英語ほど極端でないためです。
ウェブでは、HTTP レスポンスの gzip/Brotli 圧縮がテキストデータの転送量を大幅に削減します。HTML、CSS、JavaScript はすべてテキストデータであり、圧縮の恩恵が大きいファイル形式です。Brotli は gzip より 15〜25% 高い圧縮率を達成でき、主要ブラウザがすべて対応しています。10KB の HTML ファイルが Brotli で 2.5KB に圧縮されれば、ページの読み込み時間が体感できるレベルで短縮されます。
テキスト圧縮のアルゴリズムは大きく 2 種類に分かれます。ハフマン符号化は文字の出現頻度に基づいて可変長のビット列を割り当てる方式で、頻出文字ほど短いビット列で表現します。LZ77/LZ78 系のアルゴリズムは、テキスト内の繰り返しパターンを検出し、「前に出現した位置と長さ」で参照する方式です。gzip は両者を組み合わせた DEFLATE アルゴリズムを使用しています。
文字数と圧縮率の関係は興味深い性質を持ちます。同じ文字数のテキストでも、内容によって圧縮率は大きく異なります。「ああああああああああ」(同じ文字の繰り返し) は極めて高い圧縮率になりますが、ランダムな文字列はほとんど圧縮できません。これは情報理論のエントロピー (情報量) の概念と直結しており、冗長性の高いテキストほど圧縮率が高くなります。
実務上、圧縮率はストレージコストとネットワーク帯域の最適化に直結します。大量のログファイルやチャット履歴を保存する場合、テキスト圧縮によってストレージコストを 60〜80% 削減できます。API レスポンスの圧縮は、モバイル回線でのレスポンス時間を短縮し、ユーザー体験を向上させます。文字数が多いテキストほど圧縮の効果が大きいため、長文コンテンツの配信では圧縮の有無がパフォーマンスに顕著な差を生みます。