MessagePack
MessagePackは効率的なバイナリシリアライゼーション形式で、JSONに似ているがよりコンパクトであり、多言語サポートを持ち、RPCやキャッシュに使われる。
目的
高性能なRPCとキャッシュのために、JSONより小さく速いシリアライゼーションを提供する。
メカニズム
1バイトの型マーカーでnil、bool、整数、浮動小数点、文字列、バイト配列、配列、マップを区別する。小さな正負の整数は1バイトのfixintを、短い文字列はfixstrを使う。自己記述的ではない(スキーマか規約が必要)が、JSONよりコンパクトである。
ユースケース
- Redisのシリアライズ値
- Thrift/MsgPack RPCでの利用
- ゲームサーバー通信
- 組み込みデータ交換
例
- 入力
{"a":1}Output81 a1 61 01A map with one pair
よくあるエラー
- The lack of a schema causes cross-language type mismatches
- Use an IDL or explicit type conventions
関連用語
CBOR
CBOR(Concise Binary Object Representation)は JSON のバイナリ版であり、RFC 8949 で標準化され、よりコンパクトでより多くのデータ型をサポートする。 用語集
JSON
JSON(JavaScript Object Notation)は、JavaScript のオブジェクトリテラルに基づく軽量なデータ交換形式である。キー・バリューペアと配列を使う。 用語集
Protocol Buffers
Protocol Buffersは、Googleが設計した言語非依存のバイナリシリアライズ形式である。.proto スキーマ定義を必要とし、JSON/XMLよりコンパクトで型安全である。 用語集
関連ツール
MessagePack デコーダー
MessagePack デコード — 純クライアントサイドツール。本物の MessagePack バイナリ(hex/base64 自動判定)を整形 JSON にデコード。公式仕様全対応:fixint、str/bin/array/map(fix + 8/16/32)、ext(fixext1-16、ext8/16/32)、float32/64、uint/int 8-64。プライバシーファースト、サーバー往復なし。 ツール
MessagePack エンコーダー
MessagePack エンコード — 純クライアントサイドツール。JSON を本物の MessagePack バイナリ(ワイヤ互換、msgpack-python のデフォルト動作に準拠)に変換:最短の整数形式、str/bin/array/map ファミリー全対応、$ext 規約オブジェクトによる拡張型。マップキーは挿入順を維持。出力は hex(デフォルト)または base64。プライバシーファースト、サーバー往復なし。 ツール