[macOS] Brotli形式で圧縮・解凍する

Brotli」はGoogleが開発したファイルの圧縮形式で、主にWebサーバとの間の通信量を削減する目的で利用されています。gzipの後継的な位置づけで圧縮率もgzipより高くすでに主要なWebブラウザで対応済みのため今後徐々に置き換わっていくことが予想されます。

で、通常はWebサーバなどにモジュールを追加などして利用するわけですが、今回はmacOSのTerminal上で利用してみます。結論としては以下の通り。

圧縮 (file.txt.brが生成されます)

$ brotli file.txt

解凍 (file.txtが生成されます)

$ brotli -d file.txt.br

インストール

HomeBrewで一発です。

$ brew install brotli

今回は1.0.9が入りました。

$ brotli --version             
brotli 1.0.9

利用方法

コマンドの使い方自体が非常にシンプルなのでbrotli --helpの内容を参照するだけ十分使いこなせます。

圧縮する

圧縮したいファイルをオプションとして渡すだけです。拡張子.brが付いたファイルが自動的に作成されます。

$ brotli file.txt

出力ファイル名を指定したい場合は-oまたは--outputオプションを利用します。拡張子.brは自動的に付加されないので人間が指定します。

$ brotli file.txt -o output.txt.br

パイプを利用し標準入力から渡した内容を圧縮することももちろん可能です。

$ cat file.txt | brotli -o file.txt.br

解凍する

解凍する場合は-dまたは--decompressオプションを利用します。

$ brotli -d file.txt.br

圧縮時と同様に-oで解凍後のファイル名を指定したり、標準入力から渡したBrotli形式のファイルを解凍することも可能です。

$ brotli -d file.txt.br -o output.txt
$ cat file.txt.br | brotli -d

本当にgzipより高性能なの?

試しにYahoo!Japanのトップページを圧縮してみます。比較用にgzip形式のファイルも用意します。

$ wget -O yahoo.html https://www.yahoo.co.jp/

$ brotli yahoo.html
$ gzip -k yahoo.html

$ ls -la | grep yahoo
-rw-r--r--   1 katsube  staff      41018  3  1 22:56 yahoo.html
-rw-r--r--   1 katsube  staff       8484  3  1 22:56 yahoo.html.br
-rw-r--r--   1 katsube  staff      10187  3  1 22:56 yahoo.html.gz

オリジナルのファイルと比較してgzip化で約24%, Brotli化で約20%まで小さくできますね。gzipより約17%ほど性能が良いようです。HTMLは概ねgzipより20%程度性能が良いとのことなのでそれに近い値が出ましたね。

参考ページ