XMLをモバイルデバイスなどでも高速処理可能にした新フォーマット「EXI」をW3Cが勧告
XMLをバイナリ化して効率的に圧縮することで転送速度や処理に必要なメモリ容量を小さくし、モバイルデバイスなどでも扱いやすくした「Efficient XML Interchange」(EXI)を、W3Cが3月10日に勧告しました(記事末にリンクしたEXIワーキンググループチェア 上谷卓己氏のビデオによると「エクシィ」と読むようです。)。
XMLは、表現したい値にタグ付けをして意味を示すというマークアップ言語の性格上、XML文書が肥大化しがちで、XML文書から値を取り出すためのパース処理も重くなるという課題を抱えていました。
例えばXMLで「20歳」という年齢を表現しようとすると<age>20</age>となり、20という2文字の値に対して11文字ものタグが付くことになります。そのためXMLによるデータ交換は効率が悪く、性能が出にくいものでした。その結果、JSONのようにシンプルなフォーマットに人気を奪われています(参考:JSONに押されるXMLの存在)。
EXIはこうしたXMLの課題を解決すべく、XML文書を効率化したバイナリフォーマットです。XMLの情報をバイナリによってコンパクトな表現に置き換え、さらに圧縮をかけることで、元のXML文書と比較して非常に小さく(XML文書によって異なるがおおむね1/10から1/100以上)なるため、高速な転送とパース処理に必要なメモリの軽減などを実現します。
XMLを用いてサービスの高速な提供を実現するほか、モバイルデバイスのような低い性能のデバイスでのXMLの取り扱いを容易にするなどの利点があります。
100倍以上の性能向上でモバイルデバイスへ
EXIは基本的に、終了タグのように頻繁にあらわれる情報を短いビットに、コメントのようにまれにしかあらわれない情報は長めのビットに割り当てることで、全体として効率よくコンパクトなバイナリ表現を実現します。また、そうした単純なルールだけでなく、XMLスキーマの情報があればそれも利用して要素の出現パターンなどを解析し、さらにコンパクトな表現にしています。
そのうえでDEFLATEアルゴリズムによる圧縮を行いますが、効率よく圧縮できるようバイナリ表現に対して前処理を行うことで、XML文書を単純にZIP圧縮するよりもずっと高い圧縮率を実現しています。圧縮にかかるCPU負荷はGZIPの1/2から1/3だそうです。
EXI仕様のエディタであるJohn Schneiderはプレスリリースの中でEXIのメリットを次のように説明しています。
“They’ve achieved over 100-fold performance improvements and expanded their data networks to high speed aircraft, automobiles, mobile devices and sensor networks.
これらは100倍以上の性能向上を実現し、そして高速なデータ通信を飛行機、自動車、モバイルデバイス、センサーネットなどへ拡大していく。
EXIをサポートするには、XMLパーサではなくEXIプロセッサの実装が必要となります。今後EXIプロセッサがXMLプロセッサのようにさまざまなソフトウェアに標準で搭載されるようになるかどうかがEXI普及のカギとなりそうです。
以下のURLで、EXIワーキンググループチェア 上谷卓己氏(米国富士通研究所)によるEXIの詳しい解説を見ることができます。http://netfish.halfmoon.jp/pub/EXI/2009-05-12.html