DevToys Web Pro iconDevToys Web Proブログ
評価:
ブラウザ拡張機能を試す:

CBOR / MessagePack コーデック

形式:
方向:
出力:

JSON 入力

  • Hex出力

  • 技術的な詳細

    CBOR & MessagePackコンバーターの仕組み

    このツールでできること

    このツールは、JSONデータをCBOR(Concise Binary Object Representation)またはMessagePackのバイナリ形式にエンコードし、バイナリペイロードを人が読めるJSONにデコードします。デコードされた構造と並べて生の16進バイト列を表示するため、制約のある環境で使われるコンパクトなバイナリエンコーディングを簡単に確認できます。どちらのエンコード方向でも、ネストしたオブジェクト、配列、標準的なJSON型をサポートします。

    開発者によくある利用シーン

    IoT開発者は、デシリアライズコードを書かずに、CoAPメッセージやCOSE署名トークンのCBORペイロードを確認するためにこのツールを使用します。バックエンドエンジニアは、16進ダンプを貼り付けてデコードされたJSONを表示することで、MessagePackでエンコードされたWebSocketフレーム、Redisのプロトコルバッファ、またはRPCペイロードをデバッグします。また、JSON、CBOR、MessagePack間でペイロードサイズを比較し、帯域が制約されるシステムに最も効率的なワイヤ形式を選ぶ用途にも役立ちます。

    データ形式、型、またはバリエーション

    CBOR(RFC 8949)は、小さなコードサイズと小さなメッセージサイズのために設計された自己記述型のバイナリ形式で、LwM2MやFIDO2/WebAuthnなどのIoT標準で広く採用されています。MessagePackは、スキーマ不要のまま可能な限りコンパクトであることを目指す類似のバイナリシリアライゼーションで、Redis、Fluentd、多くのRPCフレームワークで一般的に使用されています。どちらの形式もJSONよりコンパクトですが、効率のために人間の可読性を犠牲にしています。

    よくある落とし穴とエッジケース

    CBORは、バイト文字列、タグ、不定長コンテナなど、JSONがネイティブに表現できないデータ型をサポートします。これらをJSON経由でラウンドトリップすると型情報が失われます。MessagePackは生バイトとUTF-8文字列を区別しますが、JSONでは単一の文字列型にまとめられます。整数精度も異なる場合があります。両形式は任意長整数をサポートしますが、JavaScriptにデコードするとNumber.MAX_SAFE_INTEGERを超える精度が失われる可能性があります。

    コードではなくこのツールを使うべき場面

    ネットワークトラフィックから取得したバイナリペイロードのアドホックな確認、IoTデバイスメッセージのデバッグ、またはエンコードサイズの迅速な比較には、このブラウザツールを使用してください。本番環境でアプリケーションコード内のシリアライズを行う場合は、cbor2(Python)、cbor-x(Node.js)、または各言語向けのmsgpackなどの専用ライブラリを使用してください。これらは、ストリーミング、スキーマ検証、適切な型マッピングを扱えますが、ブラウザツールでは提供できません。