CBOR

Concise Binary Object Representation（CBOR）は、JSONを大まかにベースとしたバイナリデータのシリアライズフォーマットである。Carsten BormannとPaul Hoffmanが設計した。CBORは、JSONのようにを含むデータオブジェクトの転送を可能にするが、より簡潔な方法で表現される。これにより、人間可読性を犠牲にする代わりに、処理と転送の速度が向上している。IETFので定義されている。

他の用途の中でも、CoAP Internet of Thingsプロトコルスイートの推奨データシリアライズレイヤーや、メッセージの基礎となるデータフォーマットである。また、FIDO2プロジェクトの範囲内では、Client-to-Authenticator Protocol（CTAP）でも使用されている。

CBORは、古橋貞之により開発・促進されたMessagePackに触発されたもので、特にテキスト文字列とバイト文字列を区別できるように拡張されている。

 CBORエンコーディングの仕様 
CBORでエンコードされたデータはデータアイテムのストリームとして表される。各データアイテムには、3ビットのタイプ（type）と5ビットのショートカウント（short count）からなるヘッダーバイトが含まれる。その後に、（ショートカウントが24-27の範囲の場合）オプションの拡張カウント（extended count）と、オプションのデータペイロード（data payload）が後続する。

タイプ0、1、7の場合、ペイロードは存在せず、カウント自体が値となる。タイプ2（バイト文字列、byte string）とタイプ3（テキスト文字列、text string）の場合、カウントはペイロードの長さとなる。タイプ4（配列、array）とタイプ5（マップ、map）の場合、カウントはペイロード内のアイテム数（ペアの数）である。タイプ6（タグ、tag）の場合、ペイロードは単一のアイテムであり、カウントは格納されたアイテムを記述する数値タグ番号（numeric tag number）となる。
CBORデータデータアイテム1データアイテム2データアイテム3...バイト数1 バイト（CBORデータアイテムヘッダー）可変数可変数1 バイト（CBORデータアイテムヘッダー）可変数可変数etc...構造主要タイプショートカウント拡張カウント（オプション）データペイロード（オプション）主要タイプショートカウント拡張カウント（オプション）データペイロード（オプション）etc...ビット数3 ビット5 ビット8 ビット × 可変数8 ビット × 可変数3 ビット5 ビット8 ビット × 可変数8 ビット × 可変数etc..

 注釈 

 出典 

 関連項目 



 外部リンク 
 CBORバイナリデータとテキスト表現を相互変換するオンラインツール
 CBOR Zone: Online tool to convert a CBOR item or a CBOR sequence in the format of HEX, Base64, Base64URL or CBOR Diagnostic Notation into another format.

Category:データシリアライゼーションフォーマット