Format Atlas

FORMAT COMPARISON

BSON vs MessagePack

BSONとMessagePackはどちらもバイナリのドキュメント風データを表せますが、BSONはMongoDB由来の型付き文書表現、MessagePackは汎用のオブジェクト直列化形式です。

最終確認: 2026-09-26

BSONとMessagePack、どちらを選ぶ?

MongoDBのドキュメントやObjectId、日付などBSON固有の型を扱うならBSONを使います。MongoDB外のアプリ間でコンパクトなオブジェクト交換をしたい場合はMessagePackを検討し、拡張型と受信側の型対応を合意してください。

BSON向き

MongoDB文書データのシリアライズ・BSON対応アプリ間での文書データ交換

  • 日付やバイナリなどJSONにない型を扱う
  • BSONを直接読み書きするドライバーやツールを使う

MessagePack向き

JSONに似たデータのバイナリシリアライズ・対応するアプリ間での構造化データ交換

  • JSONの配列・マップ・基本型をバイナリで扱う
  • 拡張型やタイムスタンプを対応ライブラリ間で交換する

基本情報を比較

BSONとMessagePackの主な違いを確認できます。

項目BSONMessagePack
拡張子.bson.msgpack、.mpk
MIME Typeapplication/bsonapplication/octet-stream
主な用途MongoDB文書データのシリアライズ・BSON対応アプリ間での文書データ交換JSONに似たデータのバイナリシリアライズ・対応するアプリ間での構造化データ交換
圧縮nonenone
開く方法MongoDBのmongorestoreやBSON対応ツール・ライブラリで読み込みます。中身を確認する場合はBSONをExtended JSONなどへ変換して表示します。バイナリファイルをテキストエディタで編集しないでください。MessagePack対応ライブラリやデコーダーで読み込みます。内容確認には診断表示やJSON相当の表示へ変換しますが、バイナリ値や拡張型がどう表示されるかも確認してください。
書き出し・変換JSONへ変換する際、日付・ObjectId・バイナリなどは標準JSONに対応する型がないため、Extended JSONの表記やアプリ固有の表現に置き換わる場合があります。往復変換が必要なら型情報が保たれる方法を選び、実データで確認します。JSONへ変換すると、バイナリ値や拡張型は標準JSONに直接対応しないため、配列・文字列・独自タグなどの表現に置き換わることがあります。往復変換では型と数値の範囲、タイムスタンプ、マップキー、拡張型を実データで照合します。

用途別の選び方

作りたいものや使う場面から選べます。

日付やバイナリなどJSONにない型を扱う

MongoDB文書データのシリアライズ・BSON対応アプリ間での文書データ交換

BSON向き

BSONを直接読み書きするドライバーやツールを使う

MongoDB文書データのシリアライズ・BSON対応アプリ間での文書データ交換

BSON向き

JSONの配列・マップ・基本型をバイナリで扱う

JSONに似たデータのバイナリシリアライズ・対応するアプリ間での構造化データ交換

MessagePack向き

拡張型やタイムスタンプを対応ライブラリ間で交換する

JSONに似たデータのバイナリシリアライズ・対応するアプリ間での構造化データ交換

MessagePack向き

確認ポイント 1

BSONは長さ付きの文書・配列と、日付、ObjectId、Decimal128などの明示的な型を定義します。MessagePackはマップ・配列・数値・文字列・バイナリ等の汎用型とアプリ定義extension型を持ちます。

使い分け

確認ポイント 2

BSONはMongoDBの文書モデルやツールとの連携に適します。MessagePackは特定データベースを前提としない汎用シリアライズに使われます。

使い分け

選ぶ理由を詳しく

  • BSONとMessagePackはバイト形式も型の表現も異なり、そのまま読み替えられません。日付、整数幅、10進数、ObjectId、extension値を明示して変換し、往復テストしてください。

詳しく見る

参考資料・仕様