「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-戻る
--[[WebAPI]]
--[[その他、開発の色々]]

* 目次 [#f9b64062]
#contents

*概要 [#f489cac1]
CBORとは、
-CBORとは、

-オブジェクトをバイナリ・シリアライズする仕様
-[[JSON]]データモデルが基礎となる([[JSON]]互換)
--オブジェクトをバイナリ・シリアライズする仕様
--[[JSON]]データモデルが基礎となる([[JSON]]互換)

>で、シーボルと読む。

-一言でいうと、[[JSON]]のバイナリ版

**特徴 [#d3e464aa]
-IoT, etc.向け
-[[COSE]]メッセージのベース
-[[FIDO2]]の[[CTAP>FIDO2#g0465d1e]]でも使用される。

で、シーボルと読む。

**経緯 [#f08d910b]
-MessagePackの後継ということらしく、MessagePackを置き換える可能性がある。

-[[少なくともcbor-rubyはMessagePackソースで開始されました。 >https://scrapbox.io/nwtgck/CBOR%E3%81%AFMessagePack%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%91%E3%82%A4%E3%82%A2%E3%81%95%E3%82%8C%E3%81%9F%E3%81%A8%E6%9B%B8%E3%81%8B%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E5%A0%B4%E6%89%80]]

--[[CBOR – Concise Binary Object Representation | Hacker News>https://news.ycombinator.com/item?id=20603378]]

-標準がCBORをいろいろなところで使い始めているので、~
CBOR vs MessagePackはCBORの勝利ということで落ち着きそう(という話がある)。

--https://twitter.com/__gfx__/status/1214023599633289217

*詳細 [#i12d62d3]

**Format [#q6bb5072]

***型 [#v4669658]
[[Major Type>#j2944dc7]]が1byteで定義

***値 [#kcec16e6]
その後、0-n bytesで実際の値が定義

**型(Major Type) [#j2944dc7]
-[[JSON]]と比べて型が多い。
-[[JSON]]は、数値型(int,float含む)、文字列型、真偽値、配列、オブジェクト、Null
-CBORは、Major Typeと呼ばれ、0から7まで定義されている。

***Major type 0 [#wc4d7439]
-符号なし整数(unsigned integer)
-uint8、uint16、uint32、uint64に分化されるbig-endian

***Major type 1 [#p7fcf3bf]
-マイナス数値(negative integer)
-uint8、uint16、uint32、uint64に分化されるbig-endian

***Major type 2 [#j8306937]
-バイト文字列(byte string)
-長さは無制限(文字列バイトの指定 or break文字指定)

***Major type 3 [#m63daeaf]
-テキスト文字列(text string)
-UTF-8文字列、長さは無制限(文字列バイトの指定 or break文字指定)

***Major type 4 [#x4c7b292]
-配列(array)
-長さは無制限(項目数の指定 or break指定)

***Major type 5 [#h9f2282c]
-マップ(map, JSONだとobject)
-キー・値のペアを列挙、長さは無制限(ペア数の指定 or break指定)

***Major type 6 [#z402f041]
-拡張用のオプション領域、次のものを現状定義
-日時型、多倍長整数、固定小数点、base64、正規表現、MIME message

***Major type 7 [#jf823c85]
-浮動小数点(floating-point numbers)、
-float16、float32、float64、真偽値(Boolean)、Null、Undefinedも定義


**CDDL [#u619feca]
-CDDL : Concise data definition language

-CBORのスキーマ定義の標準
--CBOR表記規則(CBORを表現する表記法)
--[[JSON]]データ構造の記述にも使用できる。

***目的 [#d8ba3d83]
-(G1)CBORデータ構造の全体的な構造の明瞭な記述を提供する。
-(G2)自由度をCBORデータ形式で表現する柔軟性。
-(G3)必要に応じてフォーマットの選択を制限する可能性がある[形式]。
-(G4)共通のCBORデータ型および構造を表現できること。
-(G5)人と機械が読み書き可能であること。
-(G6)データフォーマット準拠の自動チェック。
-(G7)さらなる処理のためにCBORデータから特定の要素を抽出する。

***記載ルール [#n221eb83]

*参考 [#e9206b0f]
-CBOR - Wikipedia~
https://en.wikipedia.org/wiki/CBOR

-CBOR — Concise Binary Object Representation | Overview~
http://cbor.io/

--Overview	

--Specification	

--Implementations	
---[[PeterO.Cbor>#bb10c850]]
---[[Dahomey.Cbor>#re7b65a5]]

--Tools
---CBOR playground~
http://cbor.me/

-CDDLの紹介|株式会社レピダム~
https://lepidum.co.jp/blog/2020-03-09/cddl/

-[[[CWT入門その1] CBORによるオブジェクトのバイナリ表現 - Qiita>CWT#n011a08f]]

**RFC [#cb615961]
-RFC 7049 - Concise Binary Object Representation (CBOR)~
https://tools.ietf.org/html/rfc7049

-ietf-cbor-cddl - Concise data definition language (CDDL):~
a notational convention to express CBOR and JSON data structures~
https://tools.ietf.org/html/draft-ietf-cbor-cddl

**内部リンク [#b30a84ff]
***[[JSON]] [#lf5dd4ad]
***[[CWT]] [#e7b47f5f]
***[[COSE]] [#nea67b7c]

**ライブラリ [#s0e1d500]
***[[PeterO.Cbor]] [#bb10c850]
***[[Dahomey.Cbor]] [#re7b65a5]

----
Tags: [[:IT国際標準]], [[:プログラミング]], [[:通信技術]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS