Efficient XML Interchange

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

Efficient XML Interchange (EXI) Format は World Wide Web Consortium (W3C) の EXIワーキンググループによって提案され、2011年にW3C勧告となったドキュメント・フォーマットである。XMLドキュメントを非テキスト形式(バイナリ)で効率的に表現する一連の仕様が定められている。

他の多くのドキュメント・フォーマットと同様に、EXI は、自身のフォーマットを文法によって定義する。EXI のドキュメント・フォーマットを規定するための文法を “EXI文法”と呼ぶ。

EXI プロセッサ(処理ソフトウェアまたはハードウェア)は、EXI 文法に従って EXIドキュメントをエンコード・デコードする。EXIプロセッサのインタフェースは、実装により様々ではあるが、XMLプロセッサが備えているものと類似の API を提供していることが多い。また、EXI は XML と完全に互換性があるため、XML を EXI に、EXI を XML へと変換する API を備えていることも珍しくない。

XMLスキーマを与えることによって、その XMLスキーマが想定するドキュメント形式のエンコード・デコードに適した EXI文法が自動生成され、利用可能となる。XMLスキーマから EXI文法を生成する方法は、EXI の仕様書に記述されている。XMLスキーマを与えない場合でも、ドキュメントを処理しながら動的に構造を学習し、学習結果を EXI文法に反映させることで高効率の符号化が可能となっている。

XMLスキーマから生成された EXI文法は、スキーマに完全に合致するドキュメントだけでなく、スキーマ定義から任意に逸脱したドキュメントを扱うことができる。スキーマ定義に合致する部分は、非常に効率の高い符号化が行われる。

また、EXI文法の生成時に厳格指定 (strict) を明示的に行うことにより、スキーマで定義された構造しか扱うことができない EXI文法(厳格EXI文法)を生成できる。厳格EXI文法では、スキーマから逸脱する構造を考慮する必要がないため、厳格指定なしで生成された EXI文法と比較して、符号化効率が更に向上する。

EXI の符号化では、トークン化圧縮技術が統合されている。圧縮を利用する場合、トークン列は、似た性質を持つ情報が集まる “チャネル” という単位に振り分けられる。各チャネル毎に、集められたトークンを並べて DEFLATE アルゴリズムを使って圧縮される。EXI では、このチャネル分けと圧縮の両ステップを合わせて「EXI圧縮」と呼んでいる。デフォルトでは EXI圧縮は適用されないが、エンコーダのオプションで EXI圧縮を有効にすることができる。

メモリ量の制約やストリーミングの必要性を考慮し、EXI圧縮にはブロックサイズというオプションがある。EXI圧縮は、ブロック毎に実施されるため、このオプションの値を適度に調整することにより、ストリーミングが、エンコーダ側/デコーダ側の両方で可能となる。

XML を gzip を使って圧縮した場合と比較すると、一般的に EXI圧縮では、数倍以上の圧縮効率および数倍以上の処理効率(CPU時間の短縮)が得られることが分かっている。さらに、小さな XML に対しては、gzip は圧縮効果が皆無であるが、EXI では ASN.1 PER を凌ぐ程度にコンパクト化できることが確認されている。圧縮効率や処理性能に関する評価については、Efficient XML Interchange Evaluation (Working Group Note) で議論されている。

EXIのフォーマットは、W3C の EXI ワーキンググループが策定したものである。ワーキンググループによる様々な評価の結果、検討対象して残った複数の既存技術をもとにフォーマットのデザインが行われた。ただし、多くの機能が AgileDelta社のフォーマットに由来する。

外部リンク[編集]