「XMLが“やっかいもの”になっている」──最近,そう感じることが何度かあった。インターネットの普及を促進した立役者の一つであるXMLが,今やある領域では問題児になっているのだ。

 すでにご存じの通り,データ構造を自由に定義できるXML(eXtensible Markup Language)の登場は,インターネットの利用形態に大きな変革をもたらした。人間が閲覧するだけでなく,プログラム間でのデータ処理が可能になったからだ。現在では,SOAP,SaaS,Ajaxなどを使ったWebアプリケーションは言うに及ばず,デスクトップで利用するOfficeアプリケーションなどもデータ形式としてXMLを利用している。

 しかし,プログラムを作る開発者にとっては,あまりにも多いXMLの活用がやっかいごとになっているという。2007年9月に開催された開発者向けイベント「X-over Development Conference 2007」のセミナーで,DTSの木村真幸氏はXML定義に振り回される開発者の状況を,ずばり“XML地獄”と表現していた(関連記事)。

 例えば,JavaによるWebアプリケーション開発では,デファクト・スタンダードのDIコンテナであるSpringを活用するケースが多い。Springでは,Bean定義ファイルというXMLファイルを使って,オブジェクト同士の関連を一元管理する。

 DIコンテナはオブジェクトの疎結合を実現する仕組みとして様々なメリットをもたらすが,その半面,Bean定義ファイルの記述/メンテナンスは非常に面倒だ。オブジェクトごとに,同じような定義を延々と記述しなければならない。仕様に変更が発生した場合は,関連するオブジェクトを漏れなく修正する必要がある。

 ある程度規模の大きなアプリケーション開発になると,開発者は下手をすると,肝心のロジックをコーディングしている時間より,何百行もあるXMLファイルの記述に追われている時間のほうが長くなる。それは開発者のモチベーションを下げることになり,全体の開発効率が下がる──この悪循環を木村氏はXML地獄と呼ぶ。Springによる開発に限らず,XML定義の煩雑さは,経験したことがある者なら理解できるだろう。

 そのため,最新のフレームワークやツールは,XML定義を自動化する方向に向かっている。一定の規約に従ってコーディングすれば,フレームワークが自動的に適切な設定を生成するという仕組みだ。これは,Ruby on Railsが広めたCoC(Convention Over Configuration:設定より規約)という考え方がそのベースになっている。先の木村氏のセミナーでも,CoCを取り入れた最新のフレームワークやツールをいくつか紹介していた。

 もう一つ,知人から聞いた話の中にも,“面倒なXMLプログラミング”に関する話題があった。彼が最近興味を持っているのは,FlashのActionScriptだと言う。ActionScript 3.0では,E4X(ECMAScript for XML)と呼ぶ,XMLデータを処理するためのクラスや機能が実装されている。これを使うと「たいていのプログラム言語よりも,簡潔かつわかりやすく,XMLデータにアクセスできる」という。

 従来のXMLプログラミングは,DOM(Document Object Model)やSAX(Simple API for XML)といったAPIを介して行うのが一般的だ。例えば,DOMでは,XMLデータをメモリー上にツリー構造に展開する。個々の要素や属性は,ツリーのノード(節)となる。これらのノードを参照することで,XMLデータの任意の要素や属性にアクセスする。開発者は,このような間接的でまわりくどいプログラミングをずっと強いられていた。

 彼は,ActionScript 3.0のE4Xを知ってから,それまでJavaScriptによるAjax派だったのが,ぐっとFlash派に傾いてきたと言った。彼の中では,それぐらい大きな出来事だったようだ。E4Xの登場は,“面倒なXMLプログラミング”を改善するブレークスルーになりそうだ。今後,各種のプログラム言語で同じような改良が進んでいくだろう。

 最後の話題は,プログラミングには関係はない。しかし,XMLはネットワーク上でも問題になりつつあるのだ,と思わせる事例だった。それは,シスコシステムズが9月に販売開始したXMLゲートウエイ「Cisco ACE XML Gateway」である(関連記事)。

 簡単に言えば,XMLによるWebサービスの高速化とセキュリティを向上するための専用ハードウエア(アプライアンス)だ。米Cisco Systemsが,米Reactivityという会社を買収して獲得した製品である(関連記事)。SOAPに基づくWebサービスがどんどん増えるにつれて,テキスト・ベースのXMLのセキュリティとスループットが問題視されるようになり,こうしたアプライアンスが登場してきた。

 この製品には,SOAやSaaSを推進するベンダーやデータセンターから強い引き合いがあると言う。実際,シスコだけでなく,日本アイ・ビー・エムも同様の製品「WebSphere DataPower SOAアプライアンス」を販売しており,確実なニーズがあることがうかがわれる。今や専用のハードウエアを用意しなければならないほどに,大量のXMLがネットワークを流れているわけだ。

 IT業界にとって,XMLは,20世紀の大発明の一つと言うべき革新的な仕組みである。大げさでなく,XMLがインターネットやサービス/アプリケーションにもたらした功績は大きい。しかし,それが開発者やネットワーク運用者からは,やっかいものになりつつあるらしい(換言すれば,それだけXMLが世の中に浸透し,必須なものになっているということだ)。

 今後,開発系のフレームワークやツールは,XML定義を覆い隠す方向に進むだろう。XMLデータへのアクセス手法も,これまでよりスマートで簡単にできるクラス群やライブラリがどんどん出てくるだろう。そしてXMLを処理するアプライアンスも拡充されるに違いない。つまり,XMLが浸透すればするほど,その面倒さを意識させない現実的な対応が進んでいくということだ。

 現在はその過渡期にある。ただ,開発者/技術者はこうした動きを歓迎する一方で,自分たちのXMLについての経験をよく覚えておくべきだ,とも筆者は考えている。近い将来,XMLはプリミティブな仕組みとして,アプリケーションやサービスから隠ぺいされるだろう。そのときに,XMLがどういう構造で,どのように利用するかを若い開発者達に伝えなければならない日がきっと来る。歴史は繰り返すのだ。