Skip to content
Latchkey

MessagePack vs JSON: どのデータ形式?

MessagePackはJSONライクなデータのコンパクトなバイナリシリアライゼーションであり、JSONは普遍的で人間が読めるテキスト形式で、あらゆる場所でサポートされています。

MessagePackはJSONと同じデータモデルを、より小さくparseの速いバイナリ形式にエンコードし、帯域と速度が重要な場面で役立ちます。JSONは人間が読め、デバッグしやすく、あらゆる場所でサポートされますが、payloadが大きくparseが遅いという代償があります。MessagePackはサイズと速度で優れ、JSONは可読性、デバッグのしやすさ、普遍的なツールで優れています。

MessagePackJSON
エンコーディングバイナリテキスト
サイズ小さい大きい
可読性なし人間が読める
速度速い遅い
最適な用途帯域/速度デバッグのしやすさ、普及度

ユースケースとトレードオフ

MessagePackは、コンパクトさとparse速度が重要で、人間がワイヤをほとんど読まない高スループットまたは帯域に敏感な経路に適しています。JSONは、可読性、デバッグのしやすさ、普遍的なサポートがサイズを上回るAPI、config、ログに適しています。

運用とCIへの適合性

JSONは特別なツールを必要とせず、MessagePackはライブラリを必要としますが、JSONと同様にschema-freeのままです。シリアライゼーションのround-tripテストがCIで実行され、より高速なマネージドrunnerが言語間の相互運用テストを短縮します。

結論

コンパクトで高速なバイナリpayloadが欲しいなら: MessagePack。人間が読めて普遍的にサポートされるデータが欲しいなら: JSON。帯域と速度はMessagePackに、可読性と普及度はJSONに有利です。

関連ガイド