Zopfli
Zopfliは、Deflate・gzip・zlib形式でのデータ圧縮を行うソフトウェアである[2]。他のDeflate・zlibの実装よりも高い圧縮率となるが、圧縮時により多くの時間が必要となる[3]。2013年2月にGoogleよってライブラリとしてApache 2.0の下でフリーソフトウェアとしてリリースされた[4]。"Zöpfli"という名前は甘くない種類のヘーフェツォプフであるツオップに、スイスドイツ語の指小辞である"li"を付けたものである。
初版 | 2013年2月 |
---|---|
最新版 |
1.0.3
/ 2019年11月27日[1] |
リポジトリ | |
プログラミング 言語 | C言語 |
対応OS | クロスプラットフォーム |
種別 | データ圧縮 |
ライセンス | Apache 2.0 |
公式サイト |
github |
特性と用例
編集Zopfliは生のDeflateデータストリームか、gzipかzlib形式でカプセルされたDeflateデータを出力することができる。デフォルトでは15回処理が繰り返されるが、これを変更することで処理時間と圧縮率のどちらを優先するかを選ぶことができる。
デフォルトの設定ではZopfliの出力はzlibの最大圧縮のものより一般的に3 - 8%小さくなるが、圧縮処理には80倍の時間が必要となる[3][4]。伸長速度はzlibの出力と殆ど同じである。
Zopfliの圧縮速度は非常に遅いのでオンザフライ圧縮にはあまり適しておらず、一般的に静的なコンテンツを1回だけ圧縮するのに使用されている[5][6]。これは一般的にDeflateベースのHTTP圧縮で配信されるウェブコンテンツか、PNGやWOFFなどのDeflateベースのファイルフォーマットのウェブコンテンツに当てはまる。別の使用例はAPKやJARなどのZIPベースのソフトウェアパッケージを使用したソフトウェアのアップデートやダウンロードをする場合である。これは特にモバイル通信で当てはまる。
技術
編集Zopfliの高い圧縮率はより徹底して圧縮処理を行うことによって達成されている。この方法はエントロピーモデルの反復と最短経路アルゴリズムを繰り返し使用し、全ての可能なDeflate表現のグラフからビットコストの低いパスを見つけるものである[7]。
実装
編集Googleによるリファレンス実装はC言語で書かれており、ライブラリとしてリリースされた。これはApache 2.0の下でフリーソフトウェアとして配布されている[2]。
ラッパーはPHP用に作成された。
C#によるZopfliの実装は"CompressSharper"ライブラリの"ZopfliDeflater.cs"で見られる[8]。
歴史
編集ZopfliはJyrki Alakuijalaによるアルゴリズムに基づいている。Zopfliのリファレンス実装はGoogleの従業員であるJyrki AlakuijalaとLode Vandevenneによって書かれた。2013年2月に初めて公開され、4月25日にバージョン1.0.0がリリースされた[9]。PNG圧縮のためのZopfliの幾つかの改良がGitHubに登場した後、ZopfliPNGは5月にリファレンス実装にコミットされた[10]。
PNGの最適化
編集PNGはDeflateを使用するので、Zopfliを使用して圧縮することができる。Zopfliの作者によるZopfliPNGというPNG最適化ツールがある。ZopfliアルゴリズムはAdvanceCOMPのadvpngような他のPNG最適化ツールにも統合されている[11]。
脚注
編集- ^ “Releases”. GitHub. 2020年9月21日閲覧。
- ^ a b “google/zopfli”. GitHub. 2019年4月12日閲覧。
- ^ a b “A Look At Zopfli, Google's Open Source Compression Algorithm”. Lifehacker Australia (2013年3月2日). 2019年4月12日閲覧。
- ^ a b “Compress data more densely with Zopfli”. Google Developers Blog (2013年2月28日). 2019年4月12日閲覧。
- ^ Dean Hume (2015年6月1日). “Improved Compression Ratios Using Zopfli”. 2019年4月12日閲覧。
- ^ “Google open sources very slow compression algorithm”. The Register (2013年3月1日). 2019年4月12日閲覧。
- ^ “Zopfli: Google's new data compression algorithm”. Digit.in (2013年3月1日). 2019年4月12日閲覧。
- ^ “CompressSharper”. Microsoft. 2019年4月12日閲覧。
- ^ “Release zopfli-1.0.0”. GitHub (2013年4月25日). 2019年4月12日閲覧。
- ^ “ZopfliPNG”. GitHub (2013年5月7日). 2019年4月12日閲覧。
- ^ “Advance Projects”. Advance Projects. 2019年4月12日閲覧。