<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>zstdPython Tech</title>
	<atom:link href="https://tech.nkhn37.net/category/python/python-libraries/zstd/feed" rel="self" type="application/rss+xml" />
	<link>https://tech.nkhn37.net</link>
	<description>Python学習サイト</description>
	<lastBuildDate>Tue, 10 Mar 2026 21:08:37 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://tech.nkhn37.net/wp-content/uploads/2021/01/cropped-lion-normal-clear-1-32x32.png</url>
	<title>zstdPython Tech</title>
	<link>https://tech.nkhn37.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【Python】zstd によりデータを圧縮／解凍する基本</title>
		<link>https://tech.nkhn37.net/python-zstd-basic/</link>
					<comments>https://tech.nkhn37.net/python-zstd-basic/#respond</comments>
		
		<dc:creator><![CDATA[naoki-hn]]></dc:creator>
		<pubDate>Sat, 31 Jan 2026 20:00:00 +0000</pubDate>
				<category><![CDATA[zstd]]></category>
		<category><![CDATA[compress]]></category>
		<category><![CDATA[compression]]></category>
		<category><![CDATA[compression.zstd]]></category>
		<category><![CDATA[decompress]]></category>
		<category><![CDATA[level]]></category>
		<category><![CDATA[Python 3.14]]></category>
		<category><![CDATA[Zstandard]]></category>
		<category><![CDATA[zstd.open]]></category>
		<category><![CDATA[ストリーミング処理]]></category>
		<guid isPermaLink="false">https://tech.nkhn37.net/?p=13791</guid>

					<description><![CDATA[Python で zstd により Zstandard アルゴリズムを使ったデータ圧縮／解凍をする方法の基本について解説します。 Zstandard (zstd) の概要 Zstandard は、Meta（旧 Faceb [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Python で <span class="jinr-d--text-color d--marker1 d--bold"><code>zstd</code> により Zstandard アルゴリズムを使ったデータ圧縮／解凍をする方法</span>の基本について解説します。</p>



<h2 class="wp-block-heading jinr-heading d--bold">Zstandard (<code>zstd</code>) の概要</h2>



<p><span class="jinr-d--text-color d--marker1 d--bold">Zstandard</span> は、Meta（旧 Facebook）が開発した圧縮アルゴリズムです。Zstandard は、「高速」で「高圧縮率」のバランスの取れた圧縮形式として普及が進んでいます。</p>



<p><span class="jinr-d--text-color d--marker1 d--bold"><code>zstd</code></span> は、Zstandard の略称でライブラリ名としてよく使われており、Python では、Python 3.14 から標準ライブラリとして <code>zstd</code> モジュールが提供されています。</p>



<p>この記事では、<code>zstd</code> により Zstandard アルゴリズムを使ったデータを圧縮する方法の基本について紹介します。</p>



<section class="wp-block-jinr-blocks-iconbox b--jinr-block b--jinr-iconbox"><div class="d--heading-iconbox1 ">
			<div class="a--heading-iconbox-title">
			<div class="a--iconbox-title-icon"><i class="jif jin-ifont-caution" aria-hidden="true"></i></div>
			<div class="a--iconbox-title-text">注意点</div>
			</div>
			<div class="a--jinr-iconbox">
<p>標準としての <code>zstd</code> 使用するには、Python 3.14 以降を使用する必要があるので注意してください。</p>
</div>
		</div></section>



<h3 class="wp-block-heading jinr-heading d--bold">Zstandard の標準ライブラリ化 <code>zstd</code></h3>



<p>これまでは、Python における圧縮ライブラリは、<code>gzip</code>、<code>zlib</code>、<code>bz2</code>、<code>lzma</code> といったライブラリが標準ライブラリとして使用できました。これらは標準であることの安心感や長年の互換性・安定性という面で優れる一方で、性能面では Zstandard の方が高速、高圧縮率という状況でした。</p>



<p>Python の 3.13 以前でも Zstandard が使えなかったというわけではなく、外部ライブラリとして「<code>pip install zstandard</code>」とすることで使用できました。外部ライブラリとして成熟はしていたものの、Python の標準ライブラリではなかったため、依存関係や運用面の観点から標準的には採用しずらい状況がありました。</p>



<p><a href="https://peps.python.org/pep-0784/" target="_blank" rel="noreferrer noopener">PEP 784</a> に基づき、Python 3.14 に <code>zstd</code> ライブラリとして取り込まれたことで、これらの懸念は大きく緩和され、標準的に使用しやすくなりました。</p>



<h2 class="wp-block-heading jinr-heading d--bold"><code>zstd</code> の基本的な使い方</h2>



<h3 class="wp-block-heading jinr-heading d--bold"><code>zstd</code> による基本的なデータ圧縮／解凍方法</h3>



<p><code>zstd</code> では、<code>bytes</code> データの圧縮を <span class="jinr-d--text-color d--marker1 d--bold"><code>compress()</code></span> 関数、解凍を <span class="jinr-d--text-color d--marker1 d--bold"><code>decompress()</code></span> 関数を使って実行することができます。以下の簡単な例で見てみましょう。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from compression import zstd

# 圧縮／解凍対象のデータ
data = "Zstandard 圧縮テストデータ".encode("utf-8")

# zstd を使ってデータを圧縮
compressed = zstd.compress(data)

# zstd を使ってデータを解凍
restored = zstd.decompress(compressed)
print(f"解凍後のデータ: {restored.decode('utf-8')}")</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
解凍後のデータ: Zstandard 圧縮テストデータ</pre>



<p><code>zstd</code> は、<code>compression</code> モジュール配下にあるので「<code>from compression import zstd</code>」のようにインポートして使います。</p>



<p>例では、文字列を圧縮／解凍してます。<code>compress()</code> に対象データを渡すと圧縮データが生成され、圧縮したデータを <code>decompress()</code> に渡して解凍することで元のデータを復元できます。</p>



<p>なお、<code>compress()</code> / <code>decompress()</code> は、<code>bytes</code> 型を扱う API であるため、例のように文字列（<code>str</code>）を圧縮する場合には、事前に <code>encode()</code> で <code>bytes</code> に変換し、解凍後には <code>decode()</code> で文字列に戻します。</p>



<section class="wp-block-jinr-blocks-iconbox b--jinr-block b--jinr-iconbox"><div class="d--simple-iconbox5 ">
			<i class="jif jin-ifont-v2speaker" aria-hidden="true"></i>
			<div class="a--jinr-iconbox">
<p>Python 3.14 からは、圧縮形モジュールは以下のように <code>compression</code> 配下からインポートするのが推奨になりました。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from compression import gzip
from compression import zlib
from compression import bz2
from compression import lzma</pre>



<p>ただし、従来通りの「<code>import gzip</code>」のような呼び出し方が非推奨となったわけではありませんので、これまで通り使用可能です。</p>
</div>
		</div></section>



<h3 class="wp-block-heading jinr-heading d--bold">圧縮レベルの設定 <code>level</code></h3>



<p><code>zstd</code> では、圧縮のレベルを 1 ~ 22 の値を指定することができます。値が大きいほど高圧縮になりますが、処理時間が多くかかります。圧縮レベルを指定するには <span class="jinr-d--text-color d--marker1 d--bold"><code>level</code></span> 引数を指定します。何も指定しないときのデフォルトは <code>level=3</code> となります。</p>



<p>以下では、4つのパターンで圧縮率を比較してみます。</p>



<ul class="wp-block-list jinr-list">
<li><code>level=1</code> (高速・低圧縮)</li>



<li><code>level=3</code> (デフォルト)</li>



<li><code>level=10</code> (中程度の圧縮)</li>



<li><code>level=22</code> (最大設定で高圧縮)</li>
</ul>



<p>対象データは単純なデータの繰り返しでは差が見えないため、ログ風のデータを繰り返しで生成して確認しています。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from compression import zstd
from datetime import datetime, timedelta

# ログ風の大きなテストデータを生成
lines = []
start = datetime.now()
num = 100_000

for i in range(num):
    ts = start + timedelta(seconds=i % 60)
    lines.append(
        f"{ts.strftime('%Y-%m-%dT%H:%M:%S')} INFO user_id={i%10000} action=click page=/items/{i%500}\n"
    )
data = "".join(lines).encode("utf-8")


def report_compression_results(level, compressed, original_size):
    """圧縮結果を表示する関数"""

    compressed_size = len(compressed)
    compression_percent = (compressed_size / original_size) * 100

    print(
        f"Level {level:>2}:"
        f" 圧縮後サイズ: {compressed_size:>10,} バイト,"
        f" 圧縮後サイズ比: {compression_percent:>6.2f} %"
    )


original_size = len(data)
print(f"元のサイズ: {original_size:,} バイト")

# level=1 (高速圧縮)
compressed_level1 = zstd.compress(data, level=1)
report_compression_results(1, compressed_level1, original_size)

# zstd を使ってデータを圧縮 (level指定による変化を確認)
# デフォルトは level=3
compressed = zstd.compress(data)
report_compression_results(3, compressed, original_size)

# level=10 (中程度の圧縮)
compressed_level10 = zstd.compress(data, level=10)
report_compression_results(10, compressed_level10, original_size)

# level=22 (最大の設定、最高圧縮、非常に遅い)
compressed_level22 = zstd.compress(data, level=22)
report_compression_results(22, compressed_level22, original_size)</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
元のサイズ: 6,666,900 バイト
Level  1: 圧縮後サイズ:    192,821 バイト, 圧縮後サイズ比:   2.89 %
Level  3: 圧縮後サイズ:    139,030 バイト, 圧縮後サイズ比:   2.09 %
Level 10: 圧縮後サイズ:     37,436 バイト, 圧縮後サイズ比:   0.56 %
Level 22: 圧縮後サイズ:     25,827 バイト, 圧縮後サイズ比:   0.39 %</pre>



<p>結果を見るとレベルを上げるほど、高い圧縮率で圧縮できていることが分かります。</p>



<p>圧縮レベルは高いほど圧縮率は向上しますが、その分CPU負荷が増加します。多くのケースではデフォルト（<code>level=3</code>）が速度と圧縮率のバランスがよく、まずは <code>level</code> 指定せずに利用するのがおすすめです。</p>



<p>一方で、ストレージ削減や転送量削減を重視する場合は、<code>level=6~10</code> 程度を検討するのが良いでしょう。それ以上の <code>level</code> は、CPU 負荷増加に対して圧縮率の改善幅は小さい結果となる可能性が高いです。</p>



<section class="wp-block-jinr-blocks-iconbox b--jinr-block b--jinr-iconbox"><div class="d--simple-iconbox5 ">
			<i class="jif jin-ifont-v2speaker" aria-hidden="true"></i>
			<div class="a--jinr-iconbox">
<p>今回は、ログ風データで規則性があり、圧縮しやすいデータのため、圧縮率が非常に高くなっていますが、画像、動画などの規則性が少ないデータでは、圧縮前後であまり差が出ないことがあります。</p>
</div>
		</div></section>



<h2 class="wp-block-heading jinr-heading d--bold"><code>zstd</code> によるストリーミング圧縮／解凍方法</h2>



<p><code>compress()</code> / <code>decompress()</code> は、<code>bytes</code> を一括で圧縮／解凍するために非常に便利ですが、巨大なファイルを対象にする場合は、すべてのデータをメモリに読み込む必要があり、メモリ消費量が大きくなってしまいます。</p>



<p>そこで、大容量のファイルでは、一定サイズのチャンク（塊）毎にデータ読み込みながら、圧縮／解凍する「<span class="jinr-d--text-color d--marker1 d--bold">ストリーミング処理</span>」を利用します。</p>



<p>以降の例では、以下スクリプトで指定したサイズの大きなログ風のファイルを生成してストリーミング圧縮／解凍します。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from datetime import datetime, timedelta


def create_sample_log_file(filepath: str, size_mb: int = 10) -> None:
    """指定サイズ(MB) 以下に収まるログ風のサンプルファイルを作成する関数

    Args:
        filepath (str): 作成するファイルのパス
        size_mb (int, optional): 目標サイズ(MB). デフォルトは10MB.
    """
    target_size = size_mb * 1024 * 1024  # MB をバイトに変換
    start = datetime.now()

    written = 0
    i = 0

    with open(filepath, "wb") as f:
        while written &lt; target_size:
            ts = start + timedelta(seconds=i % 60)
            line = (
                f"{ts:%Y-%m-%dT%H:%M:%S} INFO user_id={i%10000} "
                f"action=click page=/items/{i%500}\n"
            ).encode("utf-8")

            # 書き込み後にサイズ超過しそうなら終了
            if written + len(line) > target_size:
                break

            f.write(line)
            written += len(line)
            i += 1

    print(f"Created: {filepath}")
    print(f"Target : {size_mb} MB ({target_size:,} bytes)")
    print(f"Actual : {written / 1024 / 1024:.2f} MB ({written:,} bytes)")
    print(f"Lines  : {i:,}")


if __name__ == "__main__":
    path = "sample.log"
    create_sample_log_file(path, size_mb=100)</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果例】
Created: sample.log
Target : 100 MB (104,857,600 bytes)
Actual : 100.00 MB (104,857,567 bytes)
Lines  : 1,572,821</pre>



<p>上記スクリプトは、<code>create_sample_log_file</code> 関数にファイルパスとサイズ（MB）を指定するとログ風のファイルを作成します。以降例では、<code>sample.log</code>という 100 MB のファイルを例に紹介します。</p>



<p>このように事前に大きなファイルを用意しておくことで、ストリーミング圧縮によるメモリ使用量の違いを確認しやすくなります。もちろん、お手元に大きなファイルがあればそちらを使って試していただいて構いません。</p>



<h3 class="wp-block-heading jinr-heading d--bold">ストリーミング圧縮</h3>



<p><code>zstd</code> を使用して大きなファイルをストリーミング圧縮するには、以下のようにします。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from compression import zstd


def compress_file(
    src_path: str, dst_path: str, level: int | None = None
) -> None:
    """ファイルをストリーム圧縮する関数

    Args:
        src_path (str): 圧縮対象のファイルパス
        dst_path (str): 圧縮先ファイルパス
        level (int | None, optional): 圧縮レベル. デフォルトは None (zstd のデフォルトレベル 3 ).
    """
    # 1 MB のチャンクで処理
    chunk_size = 1024 * 1024

    # 対象ファイルを開いてストリーム圧縮
    with open(src_path, "rb") as f_in:
        # zstd で圧縮先ファイルを開く
        with zstd.open(dst_path, "wb", level=level) as f_out:
            # chunk_size ごとに読み込みながら圧縮して書き込み
            # ファイル末尾の b"" で停止するイテレータを使用
            for chunk in iter(lambda: f_in.read(chunk_size), b""):
                f_out.write(chunk)


if __name__ == "__main__":
    source_path = "sample.log"
    dest_path = "sample.log.zst"
    compress_file(source_path, dest_path)</pre>



<p>例では、圧縮対象のパス（<code>src_path</code>）と圧縮先のパス（<code>dst_path</code>）、および圧縮レベル（<code>level</code>）を引数に受け取り、ストリーム圧縮する関数 <code>compress_file()</code> を作成しています。なお、<code>level</code> は、指定がない（<code>None</code>）の場合は、<code>zstd</code> のデフォルトの <code>level=3</code> になります。</p>



<p>今回は、1 MB のチャンク（塊）でソースファイルのデータを読み込んでいきます。</p>



<p><code>zstd.open</code> は、圧縮ファイル（<code>.zst</code>）をファイルオブジェクトとして扱えるようにするものです。例では、読み込みファイルを <code>open</code> のバイナリ読み込み（<code>"rb"</code>）で、圧縮先ファイルを <code>zstd.open</code> のバイナリ書き込み（<code>"wb"</code>）で開いています。なお、圧縮レベル（<code>level</code>）は、<code>zstd.open</code> の引数に指定します。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># ファイル末尾の b"" で停止するイテレータを使用"
for chunk in iter(lambda: f_in.read(chunk_size), b""):
    f_out.write(chunk)</pre>



<p>具体的に圧縮書き込みをしている上記部分はイテレーターを活用している部分で少しだけ複雑なので丁寧に説明します。</p>



<p><span class="jinr-d--text-color d--marker1 d--bold"><code>iter(callable, sentinel)</code></span> は、Python 組み込み関数 <code>iter()</code> の特殊な使い方です。第 1 引数の <code>callable</code> に指定した関数を繰り返し呼び出し、その戻り値が <code>sentinel</code> と一致したタイミングで繰り返しを停止します。</p>



<p><code>file.read()</code> は、ファイル終端の EOF に到達すると <code>b""</code> を返却するため「EOF まで <code>chunk_size</code> ごとに <code>chunk</code> に読み込む」ための <code>for</code> 文になっています。</p>



<p>なお、ここで指定している <code>chunk_size</code> は「読み込みの単位」であり、Zstandard の圧縮形式としてのブロックサイズとは関係ありません。<code>write()</code> をチャンク単位で呼び出していますが、これはデータを圧縮ストリームに順次渡すことを意味しており、<code>write()</code> を 1 回呼び出すたびに必ずしも圧縮先ファイルへ即座に書き込まれるわけではありません。圧縮処理では、内部でバッファリングが行われ、圧縮されたデータは適切な単位、タイミングでまとめて圧縮先ファイルに書き込まれます。</p>



<h3 class="wp-block-heading jinr-heading d--bold">ストリーミング解凍</h3>



<p><code>zstd</code> を使って圧縮したファイルのストリーミング解凍で元のファイルに復元する場合は、ストリーミング圧縮と同様に以下のようにします。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from compression import zstd


def decompress_file(src_path: str, dst_path: str) -> None:
    """zstd圧縮ファイルをストリーム解凍する関数

    Args:
        src_path (str): 対象ファイル（.zst）のパス
        dst_path (str): 解凍先のファイルパス
    """
    # 1 MB のチャンクで処理
    chunk_size = 1024 * 1024  # 1MB

    # zstd で圧縮元ファイルを開いてストリーム解凍
    with zstd.open(src_path, "rb") as f_in:
        # 解凍先ファイルを開く
        with open(dst_path, "wb") as f_out:
            for chunk in iter(lambda: f_in.read(chunk_size), b""):
                f_out.write(chunk)


if __name__ == "__main__":
    source_path = "sample.log.zst"
    dest_path = "sample_restored.log"
    decompress_file(source_path, dest_path)</pre>



<p>上記は、圧縮時と比べると入力（<code>f_in</code>）を <code>zstd.open()</code> で開いており、出力（<code>f_out</code>）を <code>open()</code> で開いている点で異なりますが構造は同様です。</p>



<p>圧縮前のファイルと圧縮／解凍後のファイルが一致しているかどうかは、以下のようなスクリプトで前後のファイルのハッシュ値を一致を確認するのが簡単です。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import hashlib


def sha256(path: str) -> str:
    """ハッシュ値計算用

    Args:
        path (str): 対象ファイルのパス

    Returns:
        str: SHA256 ハッシュ値（16 進文字列）
    """
    h = hashlib.sha256()
    with open(path, "rb") as f:
        for chunk in iter(lambda: f.read(1024 * 1024), b""):
            h.update(chunk)
    return h.hexdigest()


if __name__ == "__main__":
    original_hash = sha256("sample.log")
    restored_hash = sha256("sample_restored.log")
    print(f"Original SHA256: {original_hash}")
    print(f"Restored SHA256: {restored_hash}")
    print("一致" if original_hash == restored_hash else "不一致")</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】※ハッシュ値は対象ファイルにより変化します。
Original SHA256: 3fbff20cef2ac6b9a19f3399bb9ac58c603e597db79bb78332702bd48367b3ba
Restored SHA256: 3fbff20cef2ac6b9a19f3399bb9ac58c603e597db79bb78332702bd48367b3ba
一致</pre>



<p>結果を見ると、処理前後でハッシュ値が一致していることが分かります。なお、ハッシュ値は対象ファイルにより変化しますので注意してください。</p>



<p>このようにすることで、サイズの大きなファイルについてもメモリを節約しつつ圧縮／解凍することが可能になります。</p>



<h2 class="wp-block-heading jinr-heading d--bold">まとめ</h2>



<p>Python で <span class="jinr-d--text-color d--marker1 d--bold"><code>zstd</code> により Zstandard アルゴリズムを使ったデータ圧縮／解凍をする方法</span>の基本について解説しました。</p>



<p>Zstandard は、Python 3.13 以前では、外部ライブラリとして pip でインストールをして使う必要がありましたが、Python 3.14 で標準ライブラリに追加され、<code>compression.zstd</code> を使ってデータを圧縮／解凍ができるようになりました。</p>



<p>この記事では、一括で <code>bytes</code> データを圧縮／解凍する <code>compress()</code> / <code>decompress()</code> の使い方や <code>level</code> 指定による圧縮率の違いについて説明しました。また、大容量ファイルを扱う場合の、ストリーミング圧縮／解凍の方法についても紹介しています。</p>



<p><code>zstd</code> は高速かつ高圧縮な形式として普及が進んでおり、ログ圧縮やデータのアーカイブ用途でも非常に使いやすい選択肢です。ぜひ、<code>zstd</code> を有効活用してみてください。</p>



<section class="wp-block-jinr-blocks-simplebox b--jinr-block-container"><div class="b--jinr-block b--jinr-box d--heading-box8  "><div class="a--simple-box-title d--bold">ソースコード</div><div class="c--simple-box-inner">
<p>上記で紹介しているソースコードについては&nbsp;<a href="https://github.com/nkhn37/python-tech-sample-source/tree/main/python-libraries/zstd" target="_blank" rel="noreferrer noopener">GitHub</a>&nbsp;にて公開しています。参考にしていただければと思います。</p>
</div></div></section>


<section class="b--jinr-block b--jinr-blogcard d--blogcard-hover-up d--blogcard-style1 d--blogcard-mysite t--round "><div class="a--blogcard-label ef">あわせて読みたい</div><a class="o--blogcard-link t--round" href="https://tech.nkhn37.net/python-tech-summary-page/"><div class="c--blogcard-image"><img decoding="async" class="a--blogcard-img-src" width="128" height="72" src="https://tech.nkhn37.net/wp-content/uploads/2024/08/Python-Tech-Pythonプログラミングガイド_new1-640x360.jpg" alt="【Python Tech】プログラミングガイド" /></div><div class="a--blogcard-title d--bold">【Python Tech】プログラミングガイド</div></a></section>


<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://tech.nkhn37.net/python-zstd-basic/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Disk: Enhanced  を使用したページ キャッシュ

Served from: tech.nkhn37.net @ 2026-04-04 13:45:54 by W3 Total Cache
-->