« 技術力とは何か | トップページ | Googleと蜜柑 »

2006年11月 1日 (水)

XML再考

最近(でもないですが)出てきている、XMLに関する「素朴な疑問」について。
すっかり忘れていましたが、以下の記事をみて思い出しました。

今更聞けないXML? - Microsoft Regional Director のブログ [ITmedia オルタナティブ・ブログ]

XMLも一時のブームが去り、この技術の利点・欠点について、冷静に考えてみようという動きがありますね。

まずは、かのPragmatic Programmer達の以下のインタビューより。

Dave Thomas: XML sucks.

Bill Venners: Why?

Dave Thomas: XML sucks because it's being used wrongly. It is being used by people who view it as being an encapsulation of semantics and data, and it's not. XML is purely a way of structuring files, and as such, really doesn't add much to the overall picture. XML came from a document preparation tradition. First there was GML, a document preparation system, then SGML, a document preparation system, then HTML, a document preparation system, and now XML. All were designed as ways humans could structure documents. Now we've gotten to the point where XML has become so obscure and so complex to write, that it can no longer be written by people. If you talk to people in Sun about their libraries that generate XML, they say humans cannot read this. It's not designed for human consumption. Yet we're carrying around all the baggage that's in there, because it's designed for humans to read. So XML is a remarkably inefficient encoding system. It's a remarkably difficult to use encoding system, considering what it does. And yet it's become the lingua franca for talking between applications, and that strikes me as crazy.

Misuses of XML

「XMLは、もともと構造化文書のための規格であって、(アプリケーションの)データファイルとして使用するのは適切ではない」というご意見です。Javaの世界で、「設定ファイル地獄」と言えば、まさにXMLで記述された大量の(複雑で読解困難な)設定ファイルのこと。このことは、以前から、指摘のあるところです。

私もこの指摘は的を得ていると思います。XMLの空白・改行の(不可解な)扱い、そしてCDATAの存在は、これを文書フォーマットとして考えて、初めて納得のいくところでしょう。つまり、「空白での字下げ」だとか、「改行でパラグラフを区切る」のような、「書式」に属するようなものは、スタイルシートで別途定義するので、XML内には含めるな、という趣旨ですよね。

XMLそのものは、構造化データを格納するのには、あまり適してないと言ってよいと思います。ただし、この「誤用」が広く行なわれた結果、これがデファクトとなってしまった面があり、数多くのツールやフレームワークが「XMLデータファイル」に対応していますので、今ではこの使い方をすることにも、メリットはあるのかな、と思います。既成事実は強し、ですね。

構造化データを、より簡便な形でテキストファイル化する、というアイデアもありまして。

XMLの論考: YAMLはXMLに改良を加える

まあ、悩ましいところですが、私の考えとしては、「それで十分ならそれを使う」ですかね。

フラットなデータなら、CSVで十分でしょうし、構造化されたデータであれば、YAML(あるいはJSON)でまずは十分かと。XMLを使うのは、主にはHTTPなどでインターネットでデータをやり取りするような場合ですかね。

構造化データを、人間が読むことはなく、プログラムからしか読まないことがわかっているのであれば、オブジェクトをバイナリでシリアライズしたものでも、当然良しだと思います。

|

« 技術力とは何か | トップページ | Googleと蜜柑 »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« 技術力とは何か | トップページ | Googleと蜜柑 »