January 14, 2005

型なし言語XML

[ XML ]

このようにプログラミング言語の世界では、長い長い時間をかけて苦労して「型なし」を追放してきたのに、ここでいきなりXMLが「型なし」を復活させてくれているのだ。なんてこった。 XMLはスキーマなしでは、どの属性が数値なのか、どのデータが文字列なのか区別することはできない。できるのは「ノード」と「テキスト(文字列)」の区別だけだ。

もちろん、XML SchemaやらRELAXやらを導入すれば型の表現はできる。しかし、「スキーマなしで操作できる」のがXMLの良さではなかったのか。 DOMでデータを取り出してきても、その(型の)解釈は個々のプログラムに任せられてしまう。要するに、アプリケーションのロジックの中に分散して埋没してしまうということだ。

まつもとさんによる。

型がないことが問題になるケースというのは、基本的に XML をテキスト表現のために利用することが多い blog ではそれほど問題にはならないのであまり気にしてない(例えば RSS とか、ping における XML-RPC とか) のですが、もっとアプリケーションの下のレイヤで必要とされるような XML 文書ではときどき問題になるケースもあります。

Perl のような型なし言語では、逆にこの XML に型がないという利点がうまく活きるケースが結構多く、例えば XML::Simple (XMLをパースして Perl のリストとハッシュ連鎖によるデータ構造に作り変えてくれる便利モジュール) が実装できるのは、そういう部分の相性が多いからなのかなとも思います。もともと XML はスキーマなしでは型が表現されませんし、Perl には型が表現されていなくてもそれをどうにかする能力が備わっているので楽なんですよね。型あり言語だと、XML から取得した値を変数に入れようにもそれが何の型であるかを判定してほげほげとかいうことになって、動的なパーサーの実装は結構めんどそうです。

なので、どの言語から利用するかによってもそれが利点と思えるときもあるし、欠点もと思えるときもあるかなあと。

さらに、片方の言語は型を重視するし片方は重視しないという場合の XML の扱いで問題がおきるときもある。Perl と Java で SOAP で Web サービス通信、とかの場合であっちにあってこっちにない型をスキーマでどう定義するのとか、どう解釈するのとか言う話。前回の Shibuya.pm で竹迫さんが喋ってたことですね。

Posted by naoya at January 14, 2005 12:02 PM | トラックバック (0)  b_entry.gif
トラックバック [0件]
TrackBack URL: http://mt.bloghackers.net/mt/suck-tbspams.cgi/1426
コメント [1件]

Naoyaさん曰くの、データ型を基本的には持たないPerlと相性が良いというのももっともと思いながら、データ型にとってもうるさい事で知られるDelphiも使いながら、個人的にまったく問題になっていないのは何故だろうと。

一.標準規格として定義されているXMLでは、データ型が想定出来るため、スキーマは必要ない。
二.自分で作成したXMLなら処理する際どのデータ型か分かっているため、スキーマは必要ない。
三.ラフな型を知る必要があれば、DTDでチェックできるため。
四.正確な型をしる必要があれば、XML Schemaでチェックできるため。

故に、「『スキーマなしで操作できる』のがXMLの良さ」であり、スキーマできっちり型ありのXMLでもOKという選択の自由がある所が好きです。

ちなみに、まつもとさん曰くの、人間が入力したXMLファイルの誤りを検出する方法の一つは、「インデントのずれ」というのは誤解されていらっしゃると思いますが...。

データ型の定義がXML自体から切り離されているという事は、逆にXMLの「簡潔さは力」を具現していると思います。あと基本的にタグで括るだけというシンプルさ。覚える事が少ないというのはとっつきやすいです。

と、まつもとさんは、自分はまったく逆の捕らえ方をしているので、ビックリしました。

もっとも、元の議論はXMLの利点が活きない所で無理してXML使ってどうすんの、という至極まっとうなお話なので、同意します。
つまり、世の中には色々な方がいて、「XMLは仕様が決まっていないから使えない」とか、「XMLデータベースが無いからXMLはダメだ」とか、真顔で仰る方が居るのです。
(XMLの仕様はもう何年も前に...XMLはデータベースではなくて...)はぁ、みたいな....
ですから、「やはり技術が不適切に利用されているように思える局面を見ると口出ししてしまうのだ。」という気持も良ーく分かります。

・・話題がずれてるような気もしますが...
つまり、「データ表現の手段としてのXMLには」という断わりがしてあるわけで、XMLは単なる「データ表現の手段」として作られたものでは無いので、指摘されているXMLの欠点というものは、的外れに当たるのではないかと。
XMLは、異なるアプリケーション(ソフト・システム)、異なるプログラミング言語、異なるプラットホーム(OS)間での連携(Interop)に適しているわけですから、そうではない用途に適していないからといってXMLの欠点とするのは、いささか「どうかと思う」、とか言ってみます。

[1] Posted by: BlogWrite担当 at January 16, 2005 11:56 AM [返信]
コメントする









名前、アドレスを登録しますか?