BrotliをGZIPに変換
BrotliファイルをGZIP形式に変換することで、わずかな圧縮効率の低下と引き換えに、幅広いソフトウェアとの互換性を確保できます。
フォーマットの比較と技術仕様
| 仕様 | BROTLI | GZIP |
|---|---|---|
| MIMEタイプ | application/ | application/ |
| タイプ | コンテキストモデルによるストリーム圧縮 | DEFLATEストリームコンテナ |
| 圧縮 | Brotli LZ77 + 2次コンテキストモデリング | DEFLATE(RFC 1951) |
| 標準仕様 | IETF RFC 7932 | IETF RFC 1952 |
| マジックバイトヘッダー | Brotli byte stream headers (WBITS / sliding dictionary) | 1F 8B (gzip ID1/ID2) |
フォーマットの概要と用途
古いソフトウェアやシステムの中には、GZIPには対応していてもBrotliをサポートしていないものがあります。受信側のツールでGZIPが必要な場合は、BrotliストリームをGZIPに変換すると役立ちます。展開と再圧縮によって圧縮後のバイト列は変わりますが、展開後のデータは保持されるはずです。互換性は変換先のアプリによって異なります。
技術仕様とコーデックの詳細
Brotliストリームは application/x-brotli を使用し、2次コンテキストモデリングと静的プレフィックスコードを組み合わせた高度なLZ77アルゴリズムに依存しています。対照的に、GZIPファイルは application/gzip を使用し、RFC 1951で定義されているLZ77とハフマン符号を組み合わせたDEFLATEアルゴリズムで圧縮されたデータをラップします。マジックバイト署名は、ソフトウェアがこれらのストリームを識別する方法を決定します。GZIPファイルは常に2バイトのヘッダーシーケンス 0x1F 0x8B で始まります。Brotliストリームにはこれと同じような固定のグローバルマジックナンバーヘッダーはありませんが、最初の数ビットでウィンドウサイズとストリーム長を定義する可変長ビットストリームヘッダーに依存しています。
OSとブラウザの互換性
GZIPは、Windows、macOS、Linux、iOS、Androidを含むほとんどの最新オペレーティングシステムで幅広くサポートされています。tar、gunzip、7-Zipなどの組み込みシステムユーティリティは、GZIPをネイティブで処理します。Brotliは現代のWebブラウザや最新のLinuxカーネルで十分にサポートされていますが、レガシーなコマンドラインツールや古いプログラミング言語のランタイムには、生のBrotliストリーム用のネイティブデコードライブラリが不足していることが多く、GZIPは幅広く利用できるファイル転送においてより安全な選択肢となります。
役立つ情報
一部の組み込みマイクロコントローラーには最小限のGZIPパースルーチンしか含まれていない場合があるため、一括変換を行う前に、展開先がRFC 1951をサポートしていることを必ず確認してください。
よくある質問
品質を損なわずにBrotliストリームをGZIPストリームに変換するにはどうすればよいですか?
両方の形式でロスレス圧縮アルゴリズムが使用されます。これは、ファイルの内容がデータ損失や品質低下を一切伴わずに、正確に元のバイトシーケンスに展開されることを意味します。
BrotliストリームとGZIPストリームの違いは何ですか?
多くのデスクトップおよびサーバーソフトウェアがGZIPに対応していますが、端末で利用できるかはアプリによって異なります。