LZ4圧縮を標準搭載した、.NET、.NET Core、Unity、Xamarin対応の超高速C#向けMessagePackシリアライザー。
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
NuGet から NativeCompressions パッケージをインストールします
dotnet add package NativeCompressions - 2
コード内で LZ4.Compress と LZ4.Decompress、または Zstandard.Compress と Zstandard.Decompress を呼び出します
使う前に知っておきたいこと
- OpenZL は実験段階で、ネイティブバインディングのみ提供されており、NuGet パッケージはありません。
- macOS のネイティブライブラリを使用するには、macOS 15.0 以降が必要です。
- iOS および Mac Catalyst アプリには、.NET 10 以降が必要です。
- 32 ビットプロセスはサポートされていません。
収録されている特集
トピック
よくある質問
- 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製の超高速なロスレス圧縮アルゴリズム。非常に高速なデコーダーを備え、速度と圧縮率のバランスを調整できます。
ソースコードなしで.NETやUnityのアセンブリをデバッグ・編集できる、dnSpyの非公式継続プロジェクト。
ソース生成によるシリアライズに対応した、.NETとUnity向けの高性能・低アロケーションなC#製YAML 1.2ライブラリ。
Unity、XNA、FNA、MonoGame製ゲームに独自コードを読み込める、プラグイン・Mod開発フレームワーク。
UnityやUnreal EngineのゲームをTypeScript/JavaScriptで開発できるスクリプトソリューション。UnityではLuaとPythonのバックエンドも利用できます。