お使いのブラウザは最新版ではありません。最新のブラウザでご覧ください。

CNET Japan ブログ

XML熱

2008/07/11 20:05
  • このエントリーをはてなブックマークに追加

先週ははじめての投稿でしたが、非常にたくさんの人にアクセスしていただいたようで、大変感謝しています。多くの人に読んでいただけるのは励みになるのでがんばろうと思います。前回お話しした、GTO(Global Technology Outlook)のプレゼンは火曜日に行われ、うまくいったと思います。スタッフの諸君が前日の夜に深夜まで準備してくれましたし、研究所にサマーインターンシップで来ているプリンストン大学の学生も含めて、チームの人の前でプレゼンの練習をしたのもよかったと思います。やはり、プレゼンテーションの前には、声を出してリハーサルしてみるのが大事ですね。

今週はたまたま読んだCommunications of ACM誌 7月号の記事について書いてみましょう。タイトルは「XML Fever」というもので、XMLに関する熱狂とそれに対するよくある勘違いを書いたものです。ご存知の方はご存知だと思いますが、私は実は1997年からしばらくXMLやWebサービスの標準化や技術の開発をやっていたことがあって、XMLについては関心が深いのです。

この記事を書いた方はカリフォルニア州立大学バークレイ校の先生のようですが、XMLを大学で教えている時に気がついた、学生がつまずく間違いを病気になぞらえて面白おかしく書いています。XMLは情報交換用のデータフォーマットとしては間違いなくその地位を確立していますし、情報処理のグローバル化に大きく役立っていることは議論の余地がないでしょう。でも、その分期待も大きく、時には大きすぎる期待から失望も生んでいるのかもしれません。

筆者たちが最初に挙げているのは「パージングの痛み」です。XML文書は文字列だから自分で文字列処理をして、XML文書を作ったり読み込んだりすることができる、と思い勝ちです。確かに、簡単なXML文書をprint文で作るのは問題なくできそうですが、XML文書を読み込む方は決して簡単ではありません。いろいろな文字符号化をサポートしたり、文字実体をパーズしたりしなければなりません。ですので、ちゃんとしたXMLパーザー(XMLプロセッサというのが正しいですね)を使いましょう。

「木構造トラウマ」はデータ構造に関するつまずきです。XMLのデータモデルは木構造ですが、実は厳密に見ると、DOMやら、InfoSetやら、PSVI (Post Schema Validation Infoset, スキーマによる妥当性検証の後に得られるデータモデル)など、少しずつ違うものがいくつかあります。目的による違いや、あるいは単に歴史的な事情によるものなどいろいろあるのでしょうが、混乱の元になるのは避けられないでしょう。XMLが理想的な世界ならば、一つのデータモデルで済んだのかもしれませんが、なかなかそういう理想的な世界は来ないものです。

少しXMLのことがわかってくると、XMLでいろいろなことをやりたくなってきます。データベースや文書やいろいろなデータを表現しようとしてみたり、スキーマを使ってデータ型や制約を入れたり、です。もちろん、そういうことはできるのですが、XMLとその関連仕様は非常にバラエティに富んでいて、いろいろなことが柔軟にできてしまいます。つまり、本来、誰かの作ったスキーマを再利用すれば良いような場面でも、つい自分で新しいボキャブラリを作ってしまいがちで、それがまた混乱の元になるわけです。筆者たちは、「XMLの最悪なのは、その最大の利点と同じ、すなわち、いろいろなことが簡単にできてしまうことだ」と言っています。確かにそうなのでしょうね。技術者には、他人の作ったものを良しとしない、全部自分で作りたい、という心がどこかにあるのではないでしょうか。

XMLの最大の問題はしかし、XML文書を「あたかも読める」と思わせるところにあるのかもしれません。012345Hiroshi MaruyamaというXML文書があったら、「あ、これは丸山さんという従業員を表しているのだな」と思いがちでしょうが、実はXMLは構文を規定しているだけで、意味については何も言っていません。ですから、実はこれは本のタイトルを表しているのかもしれませんし、地名かもしれません。そのままでは意味と結びついていないのにも関わらず、あたかも意味を表していると解釈するのは、大きな間違いです。もし、多くの人がそのような印象を持たれるのだとすれば、1998年当時にXMLの普及に手を貸した私としては、大いに反省しなければならないかもしれませんね。

※このエントリは CNET Japan ブロガーにより投稿されたものです。朝日インタラクティブ および CNET Japan 編集部の見解・意向を示すものではありません。
運営事務局に問題を報告

最新ブログエントリー