昨日書こうと思ってたんだけど考えがまとまらなかった私はなぜXMLを愛していないか(Matzにっき)から。まとまらないうちに吉松さんに先を行かれてしまいましたが。
XMLの最大の利点って、デバッグのしやすさじゃないかなあ。リトルエンディアンな浮動小数点を16進数で追っかけなさいなんて言われた日にゃ、僕は回線切って首吊るくらいしか出来ません1。で、テキスト形式でいい、っていうんだったら、別にデフォルトで(しかも陰の薄いデフォルトとして)XMLを選ばない理由は、そんなに無い気もする2。もちろん、非XMLであることで成功したフォーマットはたくさんある。XPath, CSS, RELAX NG Compactなんかは、XMLにさっさと見切りを付けた良い例だ3。
僕は案外、特定の環境だけでしか使えないデータにも、XMLを使うことに抵抗はない。ただし、それはツールサポートがあるから楽ちんだし、程度の意味であって、そんなスキーマを互換データとして使うような人たちには、あまり関わりたくないし、逆にツールが不便であればそんなものにデータ/オブジェクト構造を拘束すべきではない(つまり、System.Xml.Schema.XmlSchema sucks)。突き詰めて考えれば、テキストであるという時点で、ツールが豊富にあるXMLであった場合と比べて、Javaや.NETとの相性はそれほど変わらないように思える。
S式については、僕はLisp系言語はDSSSLしか知らない(wので、コメントすることはできない。
あとは解釈の自由度という観点でも、半構造性は有意義だと思うのだけど、散々語られていることなので(というかここまで書いたことのほとんどは足跡だらけ)、ここで改めて付言することも無いだろう。
そんなわけで、XMLはinteroperabilityのためだけにあるべき、と断定されてしまうと、僕としてはけっこう困惑してしまうわけです。僕はXMLを使えばこんなことやあんなことが出来ます、なんていう虚偽広告まがいの宣伝文句から距離を置いているので(あるいは置けているので)、そう思っているだけかもしれませんが。.NETを使えばWebサービスもリッチクライアントも出来るかもしれないし、ISO標準でプラットフォーム互換かもしれないけど、その両方を組み合わせると真っ赤なウソになるのと同様、XML界隈では未だにこの手のノイズが絶えないのかもしれない。だからピリピリしてしまうのかも。
って、プログラミング言語との相性っていうのは、そういう話じゃないのかな。まあ気にせずというか気にしていることは隠しておいて続けよう。
Matzにっきでは、primitive typeを表現できなかったものか、という話で終わっているけど、強く型付けされたXMLなんてものは、non-deterministicな構造については実質的には4あり得ないわけで、deterministicな構造に限定してしまったら、一部のデータ構造…ええと、どんなんだっけ。Eric van der Vlistを読み直せばいくつか出てくる…は決して表現できなくなってしまう。だから、deterministicな構造のみを対象とする強い型情報すなわちXML Schemaを、XML本体とは分離した標準化方針は、正当なものであったと僕は考えている。
(ここでXML Schemaに対して罵詈雑言が5行ほど入っていたのだけどオフトピなので削除。)
そんなわけで、僕は「これはどうしようもなかったんじゃないかなぁ」という、やる気のない結論で、あまり深く考えずに終わりにしたいところです。ていうか、これがまさしく「利己的で無責任」ってことかなあ。
あれ、僕が一番XMLを愛していない?w