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

1. はじめに

1. はじめに

簡潔二進オブジェクト表現 (CBOR) [RFC7049] は、事前に合意されたスキーマを要求することなく、構造化データの交換を可能にする。[RFC7049] は、基本的なデータ型の集合と、IANA レジストリを通じてサポートするデータ型の集合を拡張できるタグ付け機構を定義する。

近年、数値データの単純な型付き配列形式は、Web グラフィックスコミュニティ [TypedArray] においても、JavaScript 仕様 ([ECMA-ES10] の Section 22.2 (https://www.ecma-international.org/ecma-262/10.0/index.html#sec-typedarray-objects) を参照) においても、さらに対応する実装 [ArrayBuffer] においても、関心を集めている。

これらの型付き配列は大量のデータを運ぶ可能性があるため、配列内の各数値を長々と変換する必要なしに CBOR で相互交換することに関心がある。これは、配列の各要素ごとに型を符号化することによる空間オーバーヘッドも節約できる。

本書は、これらの型付き配列をカバーする相互に関連した複数の CBOR タグを定義する。さらに、多次元配列および同種配列のための追加タグも定義する。本書は、定義したタグの IANA 登録における参照文書となることを意図している。

これらのタグを用いた CBOR を生成するアプリケーションは、バリアント (例えば、エンディアン、埋め込み型 (符号付き vs. 符号無し)、および要素あたりのビット数) を選択すること、または本仕様で定義したタグをより基本的な CBOR の代わりに使用するかどうか、について大きな自由度を持つことに注意せよ。単一の CBOR 数値の表現バリアントとは対照的に、「推奨」として識別できる表現は存在しない。これらのタグを利用する CBOR ベースのプロトコルで決定的エンコーディングが望まれる場合、そのプロトコルは個々のケースごとにどのエンコーディングバリアントを使用するかを定義しなければならない。

1.1 用語

本書におけるキーワード "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", および "OPTIONAL" は、BCP 14 [RFC2119] [RFC8174] で記述されているように、すべて大文字で現れる場合にのみ解釈される。

用語「バイト (byte)」は、現在慣習的な意味である「オクテット (octet)」の同義語として使用される。ビット演算が説明される場合、本書ではプログラミング言語 C [C] からの馴染みのある表記法 (C++14 の 0bnnn 二進数リテラル [CPlusPlus] を含む) を使用する。ただし、演算子 "**" は例外であり、これはべき乗を表す。

用語「配列 (array)」は、特に指定がない限り、本書では一般的な意味で使用される。用語「古典的 CBOR 配列 (classical CBOR array)」は、CBOR メジャータイプ 4 で表現される配列を表す。「同種配列 (homogeneous array)」は、すべての要素が同じ型である配列である (この用語は、それが表現型かアプリケーションデータモデル型かについては中立である)。

用語「ビッグエンディアン (big endian)」および「リトルエンディアン (little endian)」は、それぞれ整数の最上位バイト先頭 (MSB first) 表現および最下位バイト先頭 (LSB first) 表現を示すために使用される。