CBORとは
Webサービスでよく使われるデータ交換フォーマットとして有名なものはJSONだと思います。
ただ、サイズが冗長なこともあり、バイナリとして表現しようと様々なものが生まれてきました。(例えば、MongoDBで使われるBSONなど)
=> そんな中、今後注目されそうなものがRFC8949でRFC化されたCBORです。
特徴
- JSONデータモデル「数値、文字列、配列、マップ(JSONオブジェクト)、およびfalse、true、nullなどの値」に基づいている。
- エンコードされたデータは自己記述的である。
- デコードのためのスキーマ記述は不要である。
- JSONを使用したい一部のアプリケーションでは、暗号化キー、グラフィックデータ、センサー値などのバイナリデータを転送する必要があります。
JSONでは、これらのデータをエンコードする必要があり(通常はbase64形式)、複雑さとかさばりが増します。
=> CBORでは、このバイナリデータをそのまま受け入れることができます。
一番の特徴は、CBOR自体がバイナリでエンコードされていることから、かさばりが節約されて、処理が高速化されるということです。
つまり、CBORはIoT向きのデータ交換フォーマットということになります。
手軽にエンコードしてみたい
- CBOR playgroundにて、エンコードしたいオブジェクトとバイナリの16進表記の変換ができます。
データフォーマット
データフォーマットについて細かいエンコードの方法を記載していくのは大変なので、今回は割愛します。
下記に詳細が書いてあるのでご参考までに。
Concise Binary Object Representation (CBOR)
試してみた
- CBORは、特定のアプリケーション用にゼロから実装するのはシンプルです。
- 今回は、Node.jsでの実装をやってみます。
1.ライブラリのinstall
npm install cbor
参考: https://github.com/hildjj/node-cbor
2.実装
main.js
var CBOR = require('cbor');
var encodedBuffer = CBOR.encode({hello: 'world'});
var decodedObject = CBOR.decode(encodedBuffer);
console.log(decodedObject)
3.実行
❯ node main.js
{ hello: 'world' }
まとめ
思っていた以上に手軽に実行できました!
別記事でデータフォーマットについてもう少し深堀りしてみたいと思います。