March 20, 2009
XMLが普通に使うフォーマットの一つとして流行りだして、もう何年も経ちますが、昔MSXMLでXpathを使ってプログラムを書いていた頃より、そういう必要性がなくなってきたように思えます。
おそらく個人的な話ですが、RSS出力などはSmartyなどのテキストテンプレートエンジンで済ませてしまったり、逆にapi経由で読み込んできたデータとしてのXMLはSimple XMLで扱いが簡単なオブジェクトに変換してしまったり、いろんな便利さを享受する反面、DOMとかSAXとか、昔、XMLらしさと思っていた部分に対して関心が及ばなくなっているのを感じています。
JSONやYAMLが、XMLに対するカウンターのような存在になっていましたが、それでもXML自身がSGMLというどうやら複雑すぎる仕様へのカウンターとして、「シンプルかつ信頼性の高いデータやりとり手段であるXML」というのが出てきたと認識しているのですが、人々は、もっとシンプルに、シンプルに、という方向に向かうようです。
JSONなどのライブラリを作る人はわかっててやってることなので良いと思うのですが、便利な環境に慣れてしまったライブラリのユーザーは、XMLの操作方法に関心を持つ機会が減り、余計にXMLって難しいよね、という流れになっていくことが予想されます。
これこそが淘汰の流れということなのでしょうか。
このサイトではiPod用の動画変換スクリプトというのを配布しています。
「F's Garage:iPod動画作成メモ5:iPod用動画変換スクリプトダウンロード」
フォルダの中のMPEG2をH.264の動画にエンコードして、RSSを同時生成してiTunesから読んでもらえれば昨日録画したTVが朝起きたらiPodに入れられるので、電車の中で動画が見られますね、というものです。
Windowsのタスクスケジューラを使って回すバッチスクリプトなのですが、できる限り多くの人に使ってもらえるように、普通のWindowsで使えるようにVBScriptで書いたものなのですが、ここではMSXMLというMS製のXMLライブラリを利用しています。
MSXMLは、XPや2000なWindowsやWindows Mobileでは普通にインストールされているライブラリで、2000年ぐらいにはもうXPathが使えるようになっているわけです。
僕は、このMSXMLがXMLの入り口だったせいか結構好きなライブラリで、これ自身がHTTPの通信機能を持つなどMSらしい(?)、よくわからない機能拡張もあるはあるのですが、なんだかんだと完成度の高いライブラリだと思っています。
VBScript単体でテンプレートエンジン的な処理をするのは、MSXMLが一番簡単だったんじゃないかと思います。イマドキの言語は、それよりもっと簡単なテンプレートエンジンが存在しているので、XMLではないんですよね。
ちゃんと調べたわけではないので、おそらくですが、XMLの実装に関してはMSが最も進んでいた会社なのではないか?と想像していて、さらに.NETのXMLライブラリでは、読み込んだXMLに書かれた値に対してクエリー記述で検索を行いノードリストを絞り込めるなど、ものすごいことになりそうだったのですが、残念ながら、時代がLLの方に傾いて、同じく紙てJSONやYAMLと言った、シンプルでエレガントな実装が支持されるようになり、その辺の高機能なXMLの話はインターネットで見かけることはない、という流れになっているように思えます。
WSDLなどというデータ仕様の記述言語の作成を必要とするSOAP(Web Services)では、WSDLそのものを記述するのが難しすぎました。
本来であれば開発ツールの開発力の高いMSが、そういうややこしいものをうまくラッピングしてあげることで、「透過的に使える」ようにできる筋書きだったんでしょうが、LLへのシフトも含めて、結局、普段、僕等がJSONで読み込んできたデータを扱って何かを作っているとおり、別にWSDLなどなくてもデータを読み込めるし、外部サービスを繋ぐにあたっても、api側でvalidationを行うことで繋ぎ込みの齟齬が発生することもない、というのが現状の認識だと思っています。
WSDLは、いずれWebサービス間で自動的に繋がるような世の中になれば使えるのかなぁなんてのは思っていましたが、残念ながら、現状は、そういうインテリジェントな世の中は実現しておらず、専門のサービス会社がブランド力を持ってユーザーのアテンションを握りapiを提供し、そこにアフィリエイトも含めたビジネス関係を前提に繋がる他社がアライアンスを結ぶと共に、人力で、お互いのつなぎ込みを行うということで、世界が広がっているというのが現状でしょう。
しかし、各種言語やシンプルなフォーマットのおかげで、人が繋ぎ込みを行う方がよっぽど経済合理性にかなっていたり、もしくはRSSなどの固定フォーマット、自由文のデータで十分だね、というのがイマココということなります。
そう考えるとWSDLだけではWebサービス間連携の機械的な仕様を記述するだけでは普及することはなくて、もしかしたら、ビジネス条件を加えた形で記述されると面白いのかもしれません。
例えば、いろんな会社が自社のサービスと繋がるapiを用意し、WSDLにはバックマージン、成果報酬の記述があり、ユーザーのアテンションを持っているサービスが、バックマージン等を考慮して、何を推奨するかをインテリジェントに決めていくことで自動的にビジネスが進んでいくような世界。
あとは「一々ネットに繋ぎに行く」という行為が、ローカルのDBにデータをキャッシュしなくても十分に速いという世界がもし可能なのであれば、また話が変わってくると思います。
いずれにせよ、何も利益関係がなければ、例え厳密に何かを達成する理想があった完璧に近いものよりも、不完全でも物事はシンプル、簡単という方向に行くし、それをどうにかしたかったら、その信頼性の担保をビジネスにどう生かすか?というあたりで肉付けしていく必要があるのかもしれないなぁ、と考えていたりします。
(全然関係ない話だけど、NGNは、まさにそういうものなんじゃないですかね。)
わかりにくい話ですいません。
まだ読んでいる途中の本なのですが、この本にインスパイアされました。
オーム社
売り上げランキング: 161092
Small is beautiful.
UNIXの哲学
効率的創造のための指南書
実用書の前に読むべき本
なのに何故MSXML?というのはあまり問題ではない。。。
一番使いやすいRSSリーダーってどれなんでしょう?