Repolode
Cysharp

Cysharp/NativeCompressions

LZ4、Zstandard、実験的なOpenZLのC#ネイティブバインディングと高水準ストリーミングAPIを、.NETとUnity向けに提供します。

スター
320
フォーク
11
未解決の Issue
0
最終コミット
一昨日

これは何?

NativeCompressionsは、LZ4とZstandardのネイティブライブラリを.NETとUnity向けにラップし、シンプルなバイト配列APIに加えて、ストリーミング用のエンコーダー、デコーダー、Streamラッパー、PipeReader/PipeWriterベースの非同期メソッドを提供します。純粋なC#移植ではなく公式のネイティブ実装を使うことで、上流の性能改善やセキュリティ更新に追従できます。

LZ4 APIはフレーム形式を使い、圧縮レベル、ブロックサイズ、チェックサム、外部辞書などのオプションをサポートします。Zstandardも同様のAPIを備え、辞書の学習にも対応しています。Windows、Linux、macOS、Android、iOS、Mac Catalyst向けのビルド済みネイティブライブラリが用意されており、Blazor向けにはWebAssemblyでの利用方法もドキュメント化されています。OpenZLのバインディングも実験的に含まれていますが、現時点ではNuGetパッケージも高水準APIもありません。

パッケージはアルゴリズムやプラットフォームのランタイムごとに分かれているため、必要なものだけをインストールできます。また、Unity向けセットアップガイドではNuGetForUnityの設定方法を説明しています。

主な機能

  • 01バイト配列およびspanベースのAPIを備えた、LZ4とZstandardのネイティブバインディング。
  • 02BrotliEncoderに似た、OperationStatusを返すストリーミング用エンコーダーとデコーダー。
  • 03Stream、PipeReader、PipeWriterを使った非同期圧縮。
  • 04辞書のサポート。Zstandardでは辞書の学習にも対応。
  • 05主要なデスクトップ、モバイル、Appleプラットフォーム向けのビルド済みネイティブライブラリ。
  • 06raw C API経由で公開される実験的なOpenZLバインディング。

ユースケース

  • .NETサービスでネットワークペイロードやキャッシュデータを圧縮する。
  • 圧縮アセットを読み込むUnityゲームに、高速なLZ4解凍を追加する。
  • 速度と圧縮率のトレードオフに応じて、LZ4とZstandardを使い分ける。
  • ドキュメントに記載されたネイティブビルドを使い、Blazor WebAssemblyアプリでデータを圧縮する。

クイックスタート

  1. 1

    NuGet から NativeCompressions パッケージをインストールします

    dotnet add package NativeCompressions
  2. 2

    コード内で LZ4.Compress と LZ4.Decompress、または Zstandard.Compress と Zstandard.Decompress を呼び出します

使う前に知っておきたいこと

  • OpenZL は実験段階で、ネイティブバインディングのみ提供されており、NuGet パッケージはありません。
  • macOS のネイティブライブラリを使用するには、macOS 15.0 以降が必要です。
  • iOS および Mac Catalyst アプリには、.NET 10 以降が必要です。
  • 32 ビットプロセスはサポートされていません。

収録されている特集

トピック

#compression#lz4#zstandard#dotnet#csharp#unity#native-bindings#streaming

よくある質問

NativeCompressions とは?
LZ4、Zstandard、実験的なOpenZLのC#ネイティブバインディングと高水準ストリーミングAPIを、.NETとUnity向けに提供します。 NativeCompressionsは、LZ4とZstandardのネイティブライブラリを.NETとUnity向けにラップし、シンプルなバイト配列APIに加えて、ストリーミング用のエンコーダー、デコーダー、Streamラッパー、PipeReader/PipeWriterベースの非同期メソッドを提供します。純粋なC#移植ではなく公式のネイティブ実装を使うことで、上流の性能改善やセキュリティ更新に追従できます。
NativeCompressions は無料で使えますか?ライセンスは?
NativeCompressions は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
NativeCompressions は今もメンテナンスされていますか?
活発にメンテナンス中。NativeCompressions の最終コミットは 2026年11月5日 です。
NativeCompressions は何に使えますか?
.NETサービスでネットワークペイロードやキャッシュデータを圧縮する。 圧縮アセットを読み込むUnityゲームに、高速なLZ4解凍を追加する。 速度と圧縮率のトレードオフに応じて、LZ4とZstandardを使い分ける。 ドキュメントに記載されたネイティブビルドを使い、Blazor WebAssemblyアプリでデータを圧縮する。
NativeCompressions のインストール方法は?
NuGet から NativeCompressions パッケージをインストールします: dotnet add package NativeCompressions コード内で LZ4.Compress と LZ4.Decompress、または Zstandard.Compress と Zstandard.Decompress を呼び出します
NativeCompressions はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/Cysharp/NativeCompressions

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト

C製の超高速なロスレス圧縮アルゴリズム。非常に高速なデコーダーを備え、速度と圧縮率のバランスを調整できます。

1.3万+376 今週1647COther活発にメンテナンス更新 22 時間前