24
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CBORってなんだろう?

Last updated at Posted at 2021-02-23

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' }

まとめ

思っていた以上に手軽に実行できました!
別記事でデータフォーマットについてもう少し深堀りしてみたいと思います。

24
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?