Apidog

オールインワン協働API開発プラットフォーム

API設計

APIドキュメント

APIデバッグ

APIモック

API自動テスト

ガイド:BSONとは、JSONとの違いを解説

BSONは、MongoDBで利用されるデータフォーマットになり、MongoDBデータベースのユーザーにとって、マスタしなければいけないものになります。本文では、BSONの基本情報を紹介した上、汎用されているJSONとの比較をも一緒に皆さんに紹介していきたいと思います。

中村 拓也

中村 拓也

Updated on 11月 12, 2024

BSONは、MongoDBで利用されるデータフォーマットになり、MongoDBデータベースのユーザーにとって、マスタしなければいけないものになります。本文では、BSONの基本情報を紹介した上、汎用されているJSONとの比較をも一緒に皆さんに紹介していきたいと思います。

また、Apidogという強力的なAPI管理ツールを利用して、APIとMongoDBの連携を行うことができ、APIテスト中にMongoDBデータベースでCRUD操作を行うこともできるので、非常に便利です。

button

BSONとは?

BSON (Binary JSON) は、JSON形式のデータをバイナリ形式でエンコードしたデータ形式として、主にMongoDBで使用されている主なデータ格納形式です。BSONはJSON文書の拡張版と考えることができます。データ型として整数、浮動小数点数、文字列、配列、オブジェクト、日付型などをサポートしています。

BSONの主な特徴は以下の通りです。

  • JSONとほぼ同じ形式で、キーと値のペアからなるドキュメント型のデータ構造を表現できる
  • バイナリデータを直接埋め込むことができる
  • JSONよりも効率的にデータを格納できる
  • MongDBなどのドキュメント指向のデータベースで主に利用されている

MongoDBなどのドキュメント指向データベースでは、BSON形式でデータを格納しています。JSONよりも効率的にデータを格納でき、インデックス作成も容易です。が、BSONのデータがバイナリ形式になって、人間にとっては読みにくいという側面もあると指摘されています。それでは、次は、BSONデータのメリットとデメリットを包括的に紹介していきたいと思います。

BSONのメリットとデメリット

前述のように、BSONフォーマットを使用するのは、たくさんのメリットがあります:

  • JSONに比べて余計なデータがないのでファイルサイズが小さい
  • バイナリデータを直接含めることができる
  • データ型が豊富で柔軟性が高い
  • インデックス付けが容易
  • 高速にシリアル化/デシリアル化できる
  • MongoDBなどのドキュメント型データベースとの親和性が高い

その一方で、読みにくい、互換性が低いなどのデメリットもあります:

  • テキストエディタでは読みにくいバイナリフォーマット
  • JSONよりもわずかに処理速度が遅い可能性がある
  • 互換性が低く、BSONをサポートしていないツールでは利用できない
  • スキーマがないため、データ構造を事前に設計する必要がある
  • エコシステムがJSONほど豊富ではない

そこで、用途に応じて、BSONフォーマットのメリットとデメリットを考慮して、BSONかJSONかを選択する必要があります。

BSONのデータ構造

BSONのデータ構造は以下のような特徴があります。

  • BSONはJSONに似たキー(フィールド名)と値のペアからなるドキュメント形式です。
  • 値のデータ型として、JSONの文字列、数値、真偽値、配列、オブジェクトに加えて、日付、バイナリデータ、正規表現などをサポートしています。
  • 各ドキュメントの先頭には文字列の型、文書長、その他のメタデータが格納されています。
  • データはキーの辞書順に並べられており、キーはUTF-8の文字列です。
  • 値にはそれぞれのデータ型を示すタイプバイトが先頭に付加されています。
  • 配列や埋め込みドキュメントも取ることができるネストした構造が可能です。
  • BSONの最大ドキュメントサイズは16MBです。
  • BSONはJSONよりもコンパクトで、バイナリデータをそのまま含めることができます。
  • しかし、人間が直接読み書きすることは困難で、アプリケーションを経由するのが普通です。

このように、BSONはJSONをベースに、データ格納・転送の効率化を図ったバイナリ形式のドキュメント指向データフォーマットです。MongoDBなどで活用されています。

BSONのサンプル:JSONとの比較を示す

それでは、実際のBSONデータはどのようなものですか?次は、実際のBSONデータのサンプルを皆さんに紹介してから、それをJSONデータに変換して、両者の違いを皆さんに解説していきたいと思います。

BSONデータのサンプルは次:

{
  _id: ObjectId("639b3cdf69836718acc3a5e5"),  
  name: 'John Doe',
  age: 35,  
  address: {
    street: '123 Main St',
    city: 'Anytown',
    state: 'CA'
  },
  hobbies: ['reading', 'hiking', 'swimming'],
  phone: {
    home: '555-123-4567',
    work: '555-987-6543' 
  },
  active: true
}

_idフィールドにObjectIdオブジェクトを設定することで、このドキュメントを一意に識別できるようになりました。

また、BSONデータは、次のような特徴があります:

  • BSONはJSONに似ていますが、より豊富なデータ型をサポートしています(日付、バイナリデータなど)。
  • フィールド名と値のペアで構成される。
  • 値にはプリミティブ型(文字列、数値、ブール値など)を使える。
  • 入れ子のドキュメント(オブジェクト)や配列を値として含めることができる。
  • BSONはバイナリでエンコードされるため、JSONよりも効率的に格納/取得できる。
  • MongoDBなどのドキュメント指向データベースではBSONが主に使用される。

JSONとBSONの違い

上記のサンプルから、JSONとBSONは、様々な側面で違いがあることがわかりました。次は、フォーマット、データ型、データ表現、用途、スキーマ、処理速度及び互換性などの方面から、JSONとBSONの違いを解説していこうと思います。

フォーマット:

  • BSONはバイナリ形式、JSONはテキスト形式

データ型:

  • BSONは日付、ObjectId、バイナリなどJSONにない型をサポート
  • JSONはstring, number, boolean, nullのみ

データ表現:

  • BSONは型情報をバイナリで格納するのでJSONよりコンパクト
  • ただしJSONの方が人間可読性が高い

用途:

  • BSONはMongoDBなどのドキュメントDB向け
  • JSONは汎用のデータ交換形式

スキーマ:

  • BSONはスキーマレス、JSONはスキーマ定義可能

処理速度:

  • BSONの方がやや高速にエンコード/デコードできる

互換性:

  • BSONはMongoDBエコシステム限定
  • JSONは多くの言語やツールで対応済み

両者の主な違いをまとめてみると、BSONはバイナリ効率性とスキーマレスを重視したドキュメントDB向けの形式で、JSONは汎用性と互換性を重視した汎用のデータ形式だと言えます。そこで、それぞれの用途に応じて使い分ける必要があります。

ApidogでBSONをJSONにマッピング

MongoDBなどのドキュメントDBから取得したBSONデータを他のシステムで利用したり、MongoDBのデータを可視化や解析したりするために、それをJSONデータに変換する必要があります。次は、Apidogというツールを利用して、BSONデータをJSONデータにマッピングする方法を皆さんに紹介します。

Apidogは、非常に強力のAPI管理ツールとして、それを使って、直接にデータベースを操作することもできます。最近のアップデートにより、Apidogのデータベース操作は、MongoDBに対応できるようになります。そこで、Apidogは、直接にMangoDBのBSONデータを操作することができるようになりました。

button

ApidogはどのようにBSONを操作するか

Apidogのデータベース操作機能を使って、MongoDBデータベースに直接に接続することができるため、Apidogを通じて、MongoDBのデータベースのCRUD操作を行うことができます。Apidogは、BSONで特有のデータ型のデータの内容に従って、適切なJSONのデータ型に1対1で自動マッピングできます。

Apidogを使って人間にとって読みやすいJSONデータを使って、BSONデータを操作できます。そこで、APIテストの中で、対応するデータを直接にMongoDBから取得したり、データベース上のデータを変更したりすることができるようになったので、APIテストをこれまでにないほどスムーズにすることができます。

BSONの_idフィールドのマッピング

特に注意を払う必要があるのは、BSONデータの特有の _idフィールドです。MongoDBの制約により、すべてのBSONデータにはプライマリーキーとする _idフィールドが含まれる必要があります。この _idフィールドのデフォルトのデータ型は、stringの代わりにObjectIdになります。

Apidogは、 ObjectIdタイプの_id フィールドを通常のstring型で処理できます。Apidogは、_id フィールドの値をObjectIdのフォーマットに当てはまるかどうかを自動的に検出できます。その値がObjectId型に当てはまる場合、それを直接にBSONの_id フィールドにObjectId型でマッピングします。

BsonのObjectIDを処理

例えば、次のようなBSONデータがあります:

{
    _id: ObjectId('65486728456e79993a150f1c'),
    name: "Apidog"
}

Apidogでその_idフィールドにマッピングするには、「クエリ条件」で 次のようなJSONデータを入力することで実現できます。

{
    "_id": "65486728456e79993a150f1c"
}
button

まとめ

本文では、MongoDBで用いられるBSONデータ形式と汎用的なJSON形式の違いについて概観しました。BSONはバイナリ効率性が高い反面、人間可読性ではJSONに劣ります。

Apidogを活用して、MongoDBのBSONデータのCRUD操作を行うことができるので、BSONの効率性とJSONの汎用性を両立でき、MongoDB利用シーンに大きなメリットをもたらします。APIとドキュメントDB連携において、Apidogが重要な役割を果たすと期待されます。

Markdown変換革命:MarkItDown MCPで始めるIT業界の新常識観点

Markdown変換革命:MarkItDown MCPで始めるIT業界の新常識

MarkItDown MCPは多様なファイル形式を効率的にMarkdownへ変換できるAPI駆動のツールです。IT業界の作業効率化と自動化に最適。

中村 拓也

4月 21, 2025

Skywork-OR1-32B: Deepseek R1に迫るオープンソース最上位モデル観点

Skywork-OR1-32B: Deepseek R1に迫るオープンソース最上位モデル

2025年4月13日、SkyworkAIはSkywork-OR1(Open Reasoner 1)シリーズをリリースしました。このシリーズには3つのモデルが含まれます:Skywork-OR1-Math-7B、Skywork-OR1-7B-Preview、そしてSkywork-OR1-32B-Previewです。 * これらのモデルは、数学的推論能力とコード推論能力に特化した大規模なルールベースの強化学習を用いてトレーニングされています。 * モデルはDeepSeekの蒸留アーキテクチャを基盤として構築されています:7BバリアントはDeepSeek-R1-Distill-Qwen-7Bをベースとしており、32BモデルはDeepSeek-R1-Distill-Qwen-32Bをベースとしています。 💡美しいAPIドキュメントを生成する素晴らしいAPIテストツールが欲しいですか? 開発チームが最大の生産性で一緒に作業するための統合型オールインワンプラットフォームが欲しいですか? Apidogはすべての要求を満たし、より手頃な価格でPostmanを置き換えます!ボタン Sky

中村 拓也

4月 13, 2025

2025年の30のベストPostman代替ツール | 無料でオープンソースのAPIテストツール観点

2025年の30のベストPostman代替ツール | 無料でオープンソースのAPIテストツール

Postmanは長い間、API開発のための定番ツールとして広く利用されており、API設計、テスト、およびドキュメント作成を提供しています。これにより、ソフトウェア業界でほぼ10年間普遍的な存在となっています。 しかし、2021年にPostmanが大幅な料金プランの変更を実施したことで、その優位性が揺らぎました。無制限ユーザーライセンスを廃止し、ユーザーごとの月額料金に移行したことが多くの開発者に影響を与え、無料でオープンソースの、コスト効率の良いPostmanの代替ツールを探す動きが加速しました。 幸運なことに、APIツールの景観は大いに広がり、機能が豊富で無料またはオープンソースのAPIテストツールが溢れています。この記事では、これらの機能、利点、欠点について包括的に説明します。 なぜユーザーはPostmanから離れているのか? Postmanは数年間、API開発およびテストのための定番ツールでした。しかし、多くのユーザーにとって、その無料プランの制約が致命的な問題となります — 特にプロジェクトが拡大し、チームが成長するにつれて。以下はユーザーが代替手段を探す理由です:

Oliver Kingsley

4月 11, 2025