Brotli

Brotli (ブロトリ) は、Jyrki Alakuijalaとにより開発されたオープンソースのデータ圧縮ライブラリである。

 概要 
BrotliはLZ77やLZ78とハフマン符号化、および2次処理の近代的な亜種がベースである。

Chrome、Opera、Firefox、Microsoft Edgeなど、Internet Explorerを除いた主要なブラウザはこのライブラリによる圧縮の恩恵を受けたWebブラウジングが可能である。同じくGoogleにより開発されたZopfliと同じく、スイスのパンであるに由来しているGoogle Open Source Blog: Introducing Brotli: a new compression algorithm for the internet。

 詳細 
Brotliの最初の発表は2015年、webフォントのオフライン圧縮を目的にしてのことであった。同年9月、Googleのソフトウェア技術者により汎用データ圧縮、特にを目的とする改良がなされた版が発表される。 これはエンコーダの一部書き直しにより、圧縮率の向上、エンコーダ/デコーダ両方の高速化、ストリーミングAPIの改善、圧縮品質レベルの調整項目などが追加されたものであった。 加えてこの新しい版ではクロスプラットフォーム性の向上や使用メモリの削減もなされていた。

多くの汎用圧縮アルゴリズムと異なり、Brotliは事前に定義された120KBの辞書を使用している。 辞書は13000以上の共通の単語や熟語、テキストやHTMLドキュメントから構成された巨大なコーパスから生成される部分文字列から成っており、小さいデータファイルに対する圧縮率を高めることに寄与している。

テキストファイルを圧縮する局面において、Brotliは一般的にDeflateに対し20%程の圧縮率の優越を、圧縮/伸長速度におおかた変化なく行うことができる。ストリーミング圧縮におけるBrotliのコンテンツエンコーディングタイプは"br"である。

 サポート状況 

 ブラウザ 
 Google Chrome 49とそれ以降のバージョンでサポートされている.。
 Microsoft Edge はバージョン15から対応した。
 Mozilla Firefox 44とそれ以降のバージョンでサポートされている。
 Opera 36とそれ以降のバージョンでサポートされている。
 Safariにおいては、Safari 11から対応した。

 Webサーバー 
 Apache HTTPサーバにおいては2.4.26で対応した。Brotliに対応するモジュールmod_brotliが追加されている。
 Microsoft IISにおいては公式サポートも開発への取り組みもなされていないが、対応させるコミュニティモジュールが存在する。
 nginxにおいては公式サポートも開発への取り組みもなされておらず、Googleの提供する ngx_brotliモジュールにより対応する。
 Amazon CloudFrontにおいては2020年9月より、Brotliを使ってキャッシュ可能なレスポンスをエッジで自動的に圧縮できるようになった。

 脚注 

 注釈 

 出典 

 関連項目 
 QUIC
 Zstandard

 外部リンク 
 Google OpenSourceにおける発表

 : 仕様
 Google ChromeがBrotliに対応する旨の記事。

Category:ソフトウェア開発ツール
Category:ライブラリ (プログラミング)
Category:API
Category:アルゴリズム
Category:データ圧縮
Category:オープンソースソフトウェア
7932