【Pythonでbrotli圧縮・解凍】Brotliのインストール

【Pythonでbrotli圧縮・解凍】Brotliのインストール プログラミング

「brotli形式でデータを圧縮したい」
「Pythonでbrotli形式の圧縮・解凍を行いたい」

このような場合には、Brotliがオススメです。
この記事では、Brotliについて解説しています。

本記事の内容

  • Brotliとは?
  • Brotliのシステム要件
  • Brotliのインストール
  • Brotliの動作確認

それでは、上記に沿って解説していきます。

Brotliとは?

ここで言うBrotliとは、Pythonでbrotli形式の圧縮・解凍を可能にするライブラリです。
brotliは、Googleが開発した圧縮アルゴリズムになります。

この記事では、次の意味で使い分けています。

brotli圧縮アルゴリズム
BrotliPythonライブラリ

brotliは、HTTP圧縮を主な目的としています。
おそらく、みなさんもその恩恵を受けているはずです。

みなさんが利用しているブラウザは、brotli形式のデータをやり取りしています。
現在のブラウザは、以下のようにリクエストヘッダーを送ります。

ここに「br」がありますね。
ブラウザとしては、brotli形式でもデータのやり取りができると宣言しています。

それに対して、ページがbrotli形式に対応していれば次のようなレスポンスヘッダーとなります。

ただ、まだまだgzip形式の返答が多いように感じます。
文章的なテキストでは、brotliはgzipよりも圧縮率が高いです。

今後は、brotliの利用がさらに増えるかもしれません。
そんなbrotli形式の圧縮をPythonで可能にするのが、Brotliということです。

以上、Brotliについて説明しました。
次は、Brotliのシステム要件を説明します。

Brotliのシステム要件

現時点(2022年8月)でのBrotliの最新バージョンは、1.0.9となります。
この最新バージョンは、2020年8月27日にリリースされています。

更新は止まっているようです。
逆に言えば、もう機能的に完成したとも言えます。

サポートOSに関しては、以下を含むクロスプラットフォーム対応です。

  • Windows
  • macOS
  • Linux

サポート対象となるPythonのバージョンは、以下となっています。

  • Python 2.7
  • Python 3.3
  • Python 3.4
  • Python 3.5

これは開発が止まっているから、仕方がないでしょう。
可能なら、以下のPython公式開発サイクルには合わせて欲しいですね。

バージョンリリース日サポート期限
3.62016年12月23日2021年12月23日
3.72018年6月27日2023年6月27日
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月
3.102021年10月4日2026年10月

サポート対象にないから不安になりますが、Python 3.10でも問題なく動きます。
ここでは、Python公式開発サイクルに従ってPython 3.7以降を推奨しておきます。

以上、Brotliのシステム要件を説明しました。
次は、Brotliのインストールを説明します。

Brotliのインストール

検証は、次のバージョンのPythonで行います。

$ python -V
Python 3.10.2

まずは、現状のインストール済みパッケージを確認しておきます。

$ pip list
Package    Version
---------- -------
pip        22.2.2
setuptools 63.4.1
wheel      0.36.2

次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。

python -m pip install --upgrade pip setuptools

では、Brotliのインストールです。
Brotliのインストールは、以下のコマンドとなります。

pip install Brotli

Brotliのインストールは、一瞬で終わります。
終了したら、どんなパッケージがインストールされたのかを確認します。

$ pip list
Package    Version
---------- -------
Brotli     1.0.9
pip        22.2.2
setuptools 63.4.1
wheel      0.36.2

Brotliが依存するパッケージは、ありません。
そのため、Brotliは既存環境に容易に導入可能です。

以上、Brotliのインストールを説明しました。
次は、Brotliの動作確認を説明します。

Brotliの動作確認

Brotliの動作確認を行います。
以下の動作に分けて確認します。

  • 圧縮
  • 解凍

圧縮対象となる元データは、テキストファイルとします。
内容は、そこそこ長い文章であれば何でもいいです。

「org.txt」は、wikipediaのbrotliページの内容をコピーしたモノです。
ファイルサイズは、8.9Kバイトあります。

圧縮

用意した「org.txt」をbrotli形式に圧縮します。
テキストファイルを圧縮するコードは、以下。

test_compress.py

import brotli

file_path = 'org.txt'
br_file_path = 'compressed.br'

with open(file_path, 'rb') as f:
    data = f.read()

compressed_data = brotli.compress(data)

with open(br_file_path, mode='wb') as f:
    f.write(compressed_data)

上記を実行すると、「compressed.br」というファイルが作成されます。
「compressed.br」のファイルサイズは、3.6Kバイトです。

8.9Kが3.6Kにまで圧縮されています。
圧縮率で言うと、0.4となります。

解凍

brotli形式で圧縮されたファイルを解凍してみましょう。
圧縮ファイルは、「compressed.br」を利用します。

test_decompress.py

import brotli

file_path = 'decompressed.txt'
br_file_path = 'compressed.br'

with open(br_file_path, 'rb') as f:
    data = f.read()

decompressed_data = brotli.decompress(data)

with open(file_path, mode='wb') as f:
    f.write(decompressed_data)

上記コードを実行すると、「decompressed.txt」が作成されます。
これは、brotli形式で圧縮されたファイルを解凍したモノとなります。

「decompressed.txt」のファイルサイズは、8.9Kバイトです。
「org.txt」と同じファイルサイズになります。

最後に、「org.txt」と「decompressed.txt」の内容を比較しておきます。

$ diff org.txt decompressed.txt 
$

全く同じ内容です。
ここまで確認できれば、安心してBrotliを利用することができます。

以上、Brotliの動作確認を説明しました。

タイトルとURLをコピーしました