[1] バイナリー XML は、XML のバイナリー表現のことを指します。 テキストベースのマーク付け言語としての XML をそのまま用いるのではなく、 転送や構文解析の効率の良いバイナリー表現が好ましいと考えられる分野もあり、 様々なバイナリー表現が検討・提案されてきました。最終的には W3C が EXI を標準化するに至り (そこに至るまで一体何年かかったのか)、 汎用的な XML のバイナリー表現の決定版と考えられていました。
[5] しかし、 XML をバイナリーで表現すること自体は一般的にはならず、 分野ごとに限定的に用いられたのみでした。バイナリー表現を取り入れていた分野では EXI に移行するメリットがあったのかどうかは怪しく、 EXI がどれだけ広く用いられたのかはよくわかりません。
[6] いずれにせよ、 XML 自体が廃れてしまったので、バイナリー表現形式も現在ではほとんど使われていません。
[7] バイナリー形式のデータの交換には、 XML を使わない Thrift、Protocol Buffers、MessagePack、CBOR などが用いられています。 これらのデータ形式の方がよりプログラミング言語のデータ構造に近かったり、 プログラミング言語のライブラリーが整備されていたりして、 使いやすそうです。
[4] EXI の仕様策定に先立って W3C の XBC WG においてバイナリーXMLの要件と性質が整理されています。 XBC の項を参照してください。
[2] バイナリーXMLを実現する仕様はたくさんあります。これらの中には XML 本体だけでなく、 XML名前空間や XML Schema の一部の機能も含まれていることがあります。逆に DTD など XML 本体の機能で含まれていないものもあります。
[3] Binary XML - Wikipedia, the free encyclopedia ( 版) https://en.wikipedia.org/wiki/Binary_XML
[11] バイナリーXMLがなぜ失敗したのかって、思い当たる理由がいっぱいありすぎて逆に説明が難しいですよね。
[12] まあ当時から一部だけで盛り上がってて大多数の人は名前すら知らないみたいな感じだったしねえ。
[13] もともと XML はテキストで扱いやすいからと流行ってたところがあって、 それをバイナリーにしたいと思ってた人がそんなにいなかったというのが1つ。
[14] 流行ってるからという理由でなんでも XML にぶっこもうとしてた人達がいて、 でもそうすると全部テキストだと効率悪いことに気づいて、 じゃあバイナリー化しよう、とかいうわけのわからない理由でバイナリーXMLが推進されてたのよね、 だから馬鹿馬鹿しいと思ってた人は食いつかなかった。
[15] XML は単体だとテキストデータの塊でしかないので、 バイナリーにしても構文解析の方法論が変わってくるくらいで、 正直あんまりメリットないんですよね。 だからバイナリーXMLの提案や実現はどれも XML 単体ではなくて XML Schemaデータ型などとセット売りになってる。 そうすると数値型とか諸々のデータ型一式が入ってきて、 効率的にバイナリーデータ転送できるようになるから。 ところがそうすると簡単に使えるからと思って XML を採用した人達は振り落とされてしまう。
[16] まあ流行ってるから何でも XML にぶっこもうとしてた人達は XML Schema 万歳、 強い型付き万歳、 複雑プロトコルスタック万歳でやってたわけだから、 そのプレゼンテーション層がバイナリー化されるくらい何でもないと思ってたのだろうけど
[17] まさかその複雑なプロトコルスタックのたくさんの技術がぜんぶ丸ごとなくなるとはさすがに思ってなかっただろうね。 あの XML の膨大な技術群とか、 全部で何個あるのか数え切れない WS-* とか、 作ってた人 & 使ってた人はいまどこで何してるんだろう。
[18] XML という前提がないと、バイナリーデータの効率的な転送手法っていくらでも転がってるし、 デジュール標準の世界にも ASN.1 とか昔からあるわけだし、 わざわざ XML という枷をはめたバイナリーXML系のアーキテクチャーを選択する理由が何もないんですよね。 XML Schemaデータ型がなくても ASN.1 データ型があれば十分だし。 ただ単にバイナリーデータをやり取りしたいだけのほとんどのプログラムにとっては、 好きなデータをそのまま転送すればそれで済むことだし。