Brotli
作者 | Jyrki Alakuijala、Zoltán Szabadka |
---|---|
開発元 | Jyrki Alakuijala、Eugene Kliuchnikov、Robert Obryk、Zoltán Szabadka、Lode Vandevenne |
初版 | 2017年9月21日[1] |
最新版 |
1.1.0
/ 2023年8月31日[2] |
リポジトリ | |
プログラミング 言語 | C言語 |
対応OS | クロスプラットフォーム |
種別 | データ圧縮 |
ライセンス | MITライセンス |
公式サイト |
github |
Brotli[読み疑問点]は、Jyrki AlakuijalaとZoltán Szabadkaにより開発されたオープンソースのデータ圧縮ライブラリである[3][4]。
概要
[編集]BrotliはLZ77やLZ78とハフマン符号化、および2次文脈モデリング処理の近代的な亜種がベースである。
Chrome、Opera、Firefox、Microsoft Edgeなど、Internet Explorerを除いた主要なブラウザはこのライブラリによる圧縮の恩恵を受けたWebブラウジングが可能である[5][6]。同じくGoogleにより開発されたZopfliと同じく、スイスのパンであるbrötliに由来している[7]。
詳細
[編集]Brotliの最初の発表は2015年、webフォントのオフライン圧縮を目的にしてのことであった[8]。同年9月、Googleのソフトウェア技術者により汎用データ圧縮、特にHTTP圧縮を目的とする改良がなされた版が発表される。 これはエンコーダの一部書き直しにより、圧縮率の向上、エンコーダ/デコーダ両方の高速化、ストリーミングAPIの改善、圧縮品質レベルの調整項目などが追加されたものであった。 加えてこの新しい版ではクロスプラットフォーム性の向上や使用メモリの削減もなされていた。
多くの汎用圧縮アルゴリズムと異なり、Brotliは事前に定義された120KBの辞書を使用している。 辞書は13000以上の共通の単語や熟語、テキストやHTMLドキュメントから構成された巨大なコーパスから生成される部分文字列から成っており[9][10]、小さいデータファイルに対する圧縮率を高めることに寄与している。
テキストファイルを圧縮する局面において、Brotliは一般的にDeflateに対し20%程の圧縮率の優越を、圧縮/伸長速度におおかた変化なく行うことができる。ストリーミング圧縮におけるBrotliのコンテンツエンコーディングタイプ[注 1]は"br"である。
サポート状況
[編集]ブラウザ
[編集]- Google Chrome 49とそれ以降のバージョンでサポートされている[11]。
- Microsoft Edge はバージョン15から対応した[12]。
- Mozilla Firefox 44とそれ以降のバージョンでサポートされている[13][14]。
- Opera 36とそれ以降のバージョンでサポートされている[11]。
- Safariにおいては、Safari 11から対応した。
Webサーバー
[編集]- Apache HTTPサーバにおいては2.4.26で対応した。Brotliに対応するモジュールmod_brotliが追加されている[15]。
- Microsoft IISにおいては公式サポートも開発への取り組みもなされていないが、対応させるコミュニティモジュールが存在する[16]。
- nginxにおいては公式サポートも開発への取り組みもなされておらず、Googleの提供する ngx_brotliモジュールにより対応する[17]。
- Amazon CloudFrontにおいては2020年9月より、Brotliを使ってキャッシュ可能なレスポンスをエッジで自動的に圧縮できるようになった[18]。
脚注
[編集]注釈
[編集]出典
[編集]- ^ “Brotli v1.0.0”. GitHub (2017年9月21日). 2019年9月21日閲覧。
- ^ “Releases”. GitHub. 2023年12月27日閲覧。
- ^ “Brotli Compressed Data Format”. IETF Internet Drafts (2014年5月16日). 2016年11月1日閲覧。
- ^ “Brotli Source Code - GitHub”. github.com. 2017年1月17日閲覧。
- ^ Slater-Robbins, Max (20 Jan 2016). “Chrome and Firefox are about to get a lot faster thanks to Google's new data compression algorithm”. techspot.com. 20 Jan 2016閲覧。
- ^ “Can I use... Support tables for HTML5, CSS3, etc”. 9 Oct 2020閲覧。
- ^ Google Open Source Blog: Introducing Brotli: a new compression algorithm for the internet
- ^ “Smaller Fonts with WOFF 2.0 and unicode-range” (18 Feb 2015). 20 Jan 2016閲覧。
- ^ Richard Chirgwin (23 September 2015). “Google's new squeeze: Brotli compression open-sourced”. The Register. 2017年1月17日閲覧。
- ^ “Comparison of Brotli, Deflate, Zopfli, LZMA, LZHAM and Bzip2 Compression Algorithms”. Google (2015年9月22日). 25 October 2015閲覧。
- ^ a b Baheux, Kenji (15 January 2016), “Accept-encoding: br on HTTPS connection”, Chrome Platform Status, chromestatus.com.
- ^ Trace, Rob (December 20, 2016), “Introducing Brotli compression in Microsoft Edge”, Microft Edge Developer, blogs.windows.com
- ^ “Can I use... Support tables for HTML5, CSS3, etc”. caniuse.com. 2016年1月7日閲覧。
- ^ “Firefox 44 release notes”. mozilla.org. 2016年1月26日閲覧。
- ^ “CHANGES_2.4”. 2018年5月20日閲覧。 “Changes with Apache 2.4.26 *) mod_brotli: Add a new module for dynamic Brotli (RFC 7932) compression. [Evgeny Kotkov]”
- ^ “IIS Brotli extension page”. Microsoft IIS Community. 2016年10月6日閲覧。
- ^ “ngx_brotli project page”. GitHub. 2016年10月6日閲覧。
- ^ “Amazon CloudFront announces support for Brotli compression”. aws.amazon.com. 2021年7月8日閲覧。