メインコンテンツまでスキップ

1.1. Objectives (目的)

1.1. Objectives (目的)

CBOR の目的は, 重要性の大まかな降順で次のとおりです:

  1. この表現は, インターネット標準で使用される最も一般的なデータフォーマットのほとんどを明確にエンコードできなければなりません。

    • バイナリエンコーディングを使用して, 合理的な基本データ型と構造のセットを表現しなければなりません。ここでの"合理的"は, 主にバイナリバイト文字列の追加という大きな追加を伴う JSON の機能に大きく影響されます。サポートされる構造は配列とツリーに限定されます; ループや格子状グラフはサポートされません。

    • すべてのデータフォーマットが一意にエンコードされる必要はありません; つまり, 数値"7"が複数の異なる方法でエンコードされることは許容されます。

  2. エンコーダまたはデコーダのコードは, 非常に限られたメモリ, プロセッサ能力, 命令セットを持つシステムをサポートするために, コンパクトである必要があります。

    • エンコーダとデコーダは, 非常に少量のコードで実装可能である必要があります (例えば, [CNN-TERMS] で定義されている class 1 制約ノードなど)。

    • フォーマットは, 現代の機械によるデータ表現を使用すべきです (例えば, バイナリから十進数への変換を必要としない)。

  3. データは, スキーマ記述なしでデコードできなければなりません。

    • JSON と同様に, エンコードされたデータは自己記述的であるべきなので, 汎用デコーダを書くことができます。
  4. シリアライゼーションは合理的にコンパクトでなければなりませんが, データのコンパクトさはエンコーダとデコーダのコードのコンパクトさに対して二次的です。

    • ここでの"合理的"は, サイズの上限として JSON によって制約され, 実装の複雑さが下限を維持します。一般的な圧縮スキームまたは広範なビット操作のいずれかの使用は, 複雑さの目標に違反します。
  5. フォーマットは, 制約ノードと大容量アプリケーションの両方に適用可能でなければなりません。

    • これは, エンコードとデコードの両方において CPU 使用量が合理的に節約的でなければならないことを意味します。これは, 制約ノードと非常に大量のデータを持つアプリケーションでの潜在的な使用の両方に関連します。
  6. フォーマットは, JSON との間の変換のために, すべての JSON データ型をサポートしなければなりません。

    • 表現されるデータが JSON の機能内にある限り, 合理的なレベルの変換をサポートしなければなりません。すべてのタイプのデータについて JSON への単方向マッピングを定義することが可能でなければなりません。
  7. フォーマットは拡張可能でなければならず, 拡張データは以前のデコーダによってデコード可能でなければなりません。

    • フォーマットは数十年の使用のために設計されています。

    • フォーマットは, 拡張を理解しないデコーダでもメッセージをデコードできるように, フォールバックを可能にする拡張性の形式をサポートしなければなりません。

    • フォーマットは, 将来的に後続の IETF 標準によって拡張できなければなりません。