CoderTools

MessagePack コーデック

MessagePack バイナリシリアライゼーション形式のエンコードとデコード

🔒 100% ローカル処理入力されたデータはすべてブラウザ内で処理されます。サーバーに送信されることはありません。

API レスポンス、ログファイル、ネットワークキャプチャから取得した MessagePack データを貼り付け

クリックしてサンプルデータを挿入

デコード結果

MessagePack データを入力してデコードをクリックすると結果が表示されます

MessagePack データ型リファレンス

型名 フォーマットバイト範囲 説明
正の固定整数0x00-0x7F0から127の整数(1バイト)
負の固定整数0xE0-0xFF-32から-1の整数(1バイト)
固定マップ0x80-0x8F0-15個のキーバリューペアを持つマップ
固定配列0x90-0x9F0-15個の要素を持つ配列
固定文字列0xA0-0xBF長さ0-31バイトの文字列
Nil0xC0null/nil 値を表す
ブーリアン0xC2-0xC3True (0xc3) または False (0xc2)
バイナリ0xC4-0xC6生のバイナリデータ(bin8/bin16/bin32)
拡張型0xC7-0xC9, 0xD4-0xD8型コード付きのアプリケーション定義型
浮動小数点0xCA-0xCB32ビットまたは64ビット浮動小数点数
符号なし整数0xCC-0xCF8/16/32/64ビット符号なし整数
符号付き整数0xD0-0xD38/16/32/64ビット符号付き整数
文字列0xD9-0xDBUTF-8文字列(str8/str16/str32)
配列0xDC-0xDD16ビットまたは32ビット長の配列
マップ0xDE-0xDF16ビットまたは32ビット長のマップ

MessagePack プロトコルドキュメント

MessagePack とは

MessagePack は効率的なバイナリシリアライゼーション形式です。2008年に古橋貞之氏によって作成され、JSONライクなデータ構造をコンパクトなバイナリ表現にパックします。通常JSONより50%小さく、解析も高速です。Redis、Fluentd、およびパフォーマンスが重要な多くのリアルタイム通信システムで広く採用されています。

バイナリエンコーディング構造

MessagePack は型-長さ-値(TLV)エンコーディングスキームを使用します。最初のバイト(フォーマットバイト)がデータ型を決定し、小さな整数や短い文字列の場合は値自体を含むこともあります。大きな値は長さとペイロードに追加バイトを使用します。この設計により、小さな値を極めて効率的にエンコードしながら、大規模なデータ構造もサポートできます。

フォーマットバイト 意味
0x00-0x7F正の固定整数(0-127、値はバイト内)
0x80-0x8F固定マップ(0-15ペア、カウントは下位4ビット)
0x90-0x9F固定配列(0-15要素、カウントは下位4ビット)
0xA0-0xBF固定文字列(0-31バイト、長さは下位5ビット)
0xC0-0xDFNil、ブーリアン、bin、ext、float、int型
0xE0-0xFF負の固定整数(-32から-1)

MessagePack と JSON の比較

両方の形式は同じデータモデルを表しますが、異なるシナリオ向けに最適化されています。MessagePack はコンパクトなサイズと解析速度を優先し、高スループットシステムに最適です。JSON は人間の可読性とすべてのプラットフォーム間の汎用互換性を優先します。

MessagePack の利点
  • JSON より 30-50% 小さい
  • ネイティブバイナリデータサポート
  • シリアライゼーションと解析が高速
  • 型安全で整数型を区別
JSON の利点
  • 人間が読み書き可能
  • ブラウザと言語で普遍的にサポート
  • デバッグとロギングが容易

一般的な用途

  • Redis データシリアライゼーションとキャッシング
  • リアルタイム通信プロトコル(ゲーム、チャット)
  • Fluentd ログ集約と転送
  • RPC フレームワーク(MessagePack-RPC)
  • 帯域幅制限のあるモバイル・組み込みアプリ

拡張型

MessagePack はアプリケーション定義の拡張型をサポートします。各拡張には型コード(-128から127の整数)とバイナリペイロードがあります。一般的な標準拡張にはタイムスタンプ(型-1)があり、正確な時間表現のために秒とナノ秒を格納します。

型コード 一般的な用途
-1タイムスタンプ(公式)
0-127アプリケーション定義型

クイックメニュー

最近のツールはありません