CBOR
この記事は英語版の対応するページを翻訳することにより充実させることができます。(2025年3月) 翻訳前に重要な指示を読むには右にある[表示]をクリックしてください。
|
| ファイル拡張子 |
.cbor |
|---|---|
| インターネットメディアタイプ |
application/cbor |
| フォーマットの種類 | データ交換 |
| 拡張元 | MessagePack |
| 標準 | RFC 8949 |
| オープンフォーマット? | はい |
| ウェブサイト | cbor.io |
Concise Binary Object Representation(CBOR)は、JSONを大まかにベースとしたバイナリデータのシリアライズフォーマットである[注釈 1]。Carsten BormannとPaul Hoffmanが設計した。CBORは、JSONのように名前と値のペアを含むデータオブジェクトの転送を可能にするが、より簡潔な方法で表現される。これにより、人間可読性を犠牲にする代わりに、処理と転送の速度が向上している。IETFのRFC 8949で定義されている[2]。
他の用途の中でも、CoAP Internet of Thingsプロトコルスイート[3][出典無効]の推奨データシリアライズレイヤーや、COSEメッセージの基礎となるデータフォーマットである。また、FIDO2プロジェクトの範囲内では、Client-to-Authenticator Protocol(CTAP)でも使用されている[4]。
CBORは、古橋貞之により開発・促進されたMessagePackに触発されたもので、特にテキスト文字列とバイト文字列を区別できるように拡張されている[5][6]。
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 Design and Overview”. IETF Proceedings (2013年7月28日). 2025年1月28日時点のオリジナルよりアーカイブ。2024年6月1日閲覧。
- ↑ Bormann. “CBOR — Concise Binary Object Representation | Overview”. cbor.io. 2025年1月28日時点のオリジナルよりアーカイブ。2016年8月24日閲覧。
- ↑ “CoAP — Constrained Application Protocol | Overview”. 2017年1月3日時点のオリジナルよりアーカイブ。2016年8月28日閲覧。
- ↑ “FIDO2 Project”. FIDO Alliance. 2018年5月11日閲覧。
- ↑ “Discussions on the upcoming MessagePack spec that adds the string type to the protocol”. GitHub. 2022年1月4日閲覧。
- ↑ Bormann (2020年12月). “RFC 8949: Concise Binary Object Representation (CBOR)”. IETF. 2025年1月28日時点のオリジナルよりアーカイブ。2021年12月26日閲覧。
関連項目
[編集]外部リンク
[編集]- 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.
