シリーズ「新入社員のためのXML入門講座」では、XMLの基礎をさまざまな記事を通じて理解してもらう予定だ。その第1回である本記事では、できるだけ技術的な解説を行わずに、XMLの特徴や全体像を理解してもらう。
Webサービスやマイクロソフトの.NET、そして企業間取引(BtoB)やEAI(Enterprise Application Integration)など、XMLは最近話題になっている技術の中心的存在になっている。
本記事の目的は、そうした最新技術の基礎としてのXMLを解説することにある。多くのXML入門書では、XMLの文法などの技術的な面を紹介しているが、ここではXMLとその関連技術の全体像を理解してもらうことを主眼とした。技術的な詳細については、このXML eXpert eXchangeフォーラムのほかの記事で十分に解説しているので、そちらをぜひ参照してもらいたい。
1998年にXMLの仕様を策定したWorld Wide Web Consortium(W3C)は、「XML in 10 points」というドキュメントの中で、XMLの特徴を分かりやすく解説している。その文書を参考にしたうえで、まずはXMLの持つ重要な特徴を紹介していこう。
〜XMLの特徴〜
「XML」といったときに、狭い意味でそれはXMLの文法を決めているXML 1.0仕様のことを指す。しかし広い意味で捉えたときには、XHTMLやWebサービスなど、XML関連技術を幅広く含んでいる。XMLの世界は、XML 1.0の上にさまざまな仕様を連ねることによって、その機能や守備範囲がいまも広がっているのだ。
XML文法で記述したデータのことをXML文書と呼ぶ。いまや、スプレッドシートやワープロといったオフィスアプリケーションはもとより、リレーショナルデータベースやERPといったバックオフィスアプリケーションなどの多くのアプリケーションが、データ形式としてXML文書をサポートしている。
アプリケーションのデータ形式を、独自のバイナリ形式やCSVではなく、XML文書にすることの利点はいくつかある。XML文書ならテキスト形式だから、人間にもデータの意味が分かりやすい。タグ付けされているためにデータ構造の変更に柔軟で、アプリケーションの処理がしやすい。データが特定の環境に依存しない、などだ。これらはすべてXMLの利点である。
しかしXML文書化したときの最大の利点として、XMLに対応したソフトウェア資産が利用可能になる、という点が見逃せない。
アプリケーションのデータは通常、特定のアプリケーションに読み込ませて加工や処理を行うのが一般的だ。しかしデータがXML文書になっていれば特定のアプリケーションがなくても、内容や整合性のチェックにはXMLパーサが利用できるし、データ構造を変換したいときにはXSLTが使える。それ以外にも、XMLに対応したさまざまなツールによってデータを操作し、分析し、加工することが可能だし、必要な場合には新たな処理を開発することも容易だ。
また、データフォーマットについても利点がある。例えば、データを生成するアプリケーションの機能が増えて、グラフィックスや数式、音声、名簿といったデータが出力可能になったとしよう。データがXML文書形式であれば、アプリケーション開発者は独自にグラフィックスや数式や名簿を表現するためのデータ形式を考え出す必要はない。すでにXMLによってそれらのデータを記述する方法が、SVGやMathMLやVoiceXMLといった仕様として存在している。それらをデータ形式として流用すれば、簡単で短期間に、しかも非常に完成度の高いデータフォーマットが実現する。
データをXML形式にするだけで、XMLに対応したさまざまなツールや、第三者が作成した完成度の高い仕様といった、多くの知的資産、ソフトウェア資産の利用や連携が可能になる。これは逆にいえば、データが特定のアプリケーションに縛られることがなくなる、ということであり、その特徴が、CSV形式やバイナリ形式による独自フォーマットでは得られない、XML文書形式ならではのメリットだといえるだろう。
XML関連仕様は、大きく3つに分類することができるだろう。1つは、XML文書を記述するためのXML文法そのものにかかわる部分。そして、XML文書を操作するためのスクリプトやAPIなどにかかわる仕様。3つ目は、XMLによって定義された応用言語などだ。順に紹介していく。
XML文書を記述するための仕様には、XML 1.0、XML名前空間などがある。XMLの最も基礎となる仕様である。
XML文書をアプリケーションから操作するための方法も、標準的なAPIが定められている。これらのAPIをサポートしたソフトウェアを一般に「XMLパーサ」と呼んでいる。XMLパーサIを利用してXML文書を操作しているプログラムは移植性が高く、またプログラミングのノウハウも蓄積しやすい。
ここに挙げたAPI以外にも、JavaからXML文書を操作するJAXP(Java API for XML Processing)、JAXB(Java Architecture for XML Binding)など、各種のAPI仕様が存在する。
XML文法を使って、さまざまな用途のためのデータフォーマットが仕様として定められている。XHTMLやSVGなどはその代表だろう。下記に挙げたのはほんの一部であり、見積書や発注書のようなビジネス情報から、書籍情報、保険情報など、業界ごと、アプリケーションごとにさまざまな言語が存在している。
これらの分野では、XMLのさまざまな応用が試みられており、現在最も変化の激しい部分だといえる。
XMLの仕様が策定されている当時は、XMLの利用法として出版、電子出版のような、ドキュメントを表現することを、その主な用途として想定していた。しかし実際には、XMLは出版関係だけでなく、企業間での取引情報、アプリケーション間の通信など、さまざまな分野で使われ、技術を変革させるブレイクスルーとなった。
現在のWebパブリッシングの主役となっている技術は、いうまでもなくHTMLである。コンテンツをHTMLで作り込んでおき、それをWebブラウザに表示させる(@ITもその1つだ)。しかし、コンテンツをXML文書にしておくことで、さまざまな形式への変換が可能になる。Webブラウザから参照されたときには、XML文書をHTML形式に変換する。iモードなどの携帯電話から参照された場合には、CHTMLなどに変換する。PDFに変換すれば、書籍や雑誌などの紙メディアとして出版することも可能だ。
こうした変換はXSLTによって行うことができる。IBMの「WebSphere Application Server」や、BEAシステムズの「WebLogic Server」、オープンソースではThe Apache Software Projectの「Cocoon」などがこうした機能を備えている。
XMLの登場によって最も活性化したのがBtoBの分野だろう。企業間で取り交わされる製品情報や発注情報といった複雑な情報を柔軟に表現できるXMLの登場によって、企業間でやりとりされる情報の標準化が一気に促進された。と同時に、RosettaNetやebXMLといったBtoBを推進する組織や団体によって、インターネット上で取引情報を安全かつ効率的に企業間でやりとりするルールや仕組みの整備も進んだ。
BtoBを実現するために、BtoBサーバと呼ばれるカテゴリの製品が登場、インフォテリアの「Asteria」、マイクロソフトの「BizTalk Server」、ウェブメソッドの「webMethods」、そのほかにもエクセロン、アリバ、コマースワンなど多くのベンダが参入している。
企業内には、さまざまなアプリケーションが稼働している。顧客管理、売上管理、営業履歴、在庫管理などなど。メインフレームで動いているものもあれば、UNIXやWindowsで動いているものもあるだろう。企業が自社のビジネスを正確に把握しようとすれば、これらのデータを統合して、どの顧客にどういう営業履歴があり、売り上げはどうだったか、売り上げから予測される在庫量をどう管理すべきか、などを考える必要があるだろう。
つまり、アプリケーション間でのデータ連係が必要だ。XMLはこうしたアプリケーション間で異なるデータフォーマットの中間言語としての役割を果たしている。あるアプリケーションのデータは、EAIサーバによっていったんXML文書となり、XSLTで渡される先のアプリケーションのデータ形式へと変換される、といった形だ。XMLはEAIにおけるデータ変換のコア技術となっているのである。EAI市場とBtoB市場はある程度重なっており、前述のBtoBベンダやティブコやIBM、BEAなどのアプリケーションサーバベンダもEAI市場へ積極的に参入している。
企業内のあらゆるデータが集中するデータベースにも、XML化の波は押し寄せてきている。BtoBやEAIの普及によって、企業内のデータの共通フォーマットがXML化してきたために、データベースにもXML文書を格納したり、取り出したデータをXML文書化する機能が求められてるようになってきた。オラクルの「Oracle9i」、マイクロソフトの「SQL Server 2000」、IBMの「DB2 UDB」など主要なデータベースはXML対応となった。
しかしリレーショナル・データベースは、XML文書を格納する過程でデータを分解しており、XML文書の情報の一部は失われてしまう。そこで、XML文書をそのまま保存し、検索、更新なども可能なXMLネイティブなXMLデータベースに注目が集まりつつある。ソフトウェアAGの「Tamino」(日本ではビーコンITが販売)、エクセロンの「ObjectStore」、メディアフュージョンの「Yggdrasill」などだ。また、XMLデータベースに対する問い合わせ言語の標準仕様として、XQueryの策定が現在進行中。仕様が固まれば、XMLデータベースの普及が促進されることだろう。
XML関連仕様の中で最も注目されているのがWebサービスであることは間違いない。Webサービスを簡単に説明すると、インターネット経由でプログラム同士が連携するための仕様だ。Webサービスに対応したアプリケーションなら、どのOSで動いていても、どの言語で開発されていても連携でき、高度なシステムを容易に構築できる。そのため、マイクロソフトの「.NET戦略」、サン・マイクロシステムズの「SunONE」や、IBM、BEAシステムズ、ボーランドなどなど、主要なソフトウェアベンダはこぞってWebサービス対応を打ち出している。
XMLはWebサービスを実現するプロトコルであるSOAPのデータ構造として利用されている。Webサービスで受け渡しされるデータはすべてXML文書として表現されているのだ。それ故、Webサービスに対応するということは、すなわちXML対応が必要最低条件である。Webサービスが今後のソフトウェア開発の基礎技術になるとすれば、あらゆるデータがXML文書化される可能性もある。
XMLの仕様は日々進化しているとはいえ、XML関連仕様の基礎となっているXML 1.0、XML名前空間といった部分はほとんど変化していない(もちろん、ここが不安定なようではしっかりした仕様とはいえないわけだ)。現在、XML 1.0の次期バージョンの検討がW3Cで始まっているが、XMLの仕様に重大な変更を迫るような大きな改変はないもようだ。一方で、XML関連技術としてのWebサービス、BtoBのための応用言語など、その応用分野はまだまだ広がっていくだろう。
XMLの発展は、TCP/IPの発展になぞらえることができる。TCP/IPはインターネットの基礎技術であり、その仕様は長らく大きな変化はせずにいた。しかし、TCP/IPを基盤としたネットワーク上で動くアプリケーションは、TelnetやFTPといったシンプルなものからファイル共有、プリントサービスと徐々に複雑化していき、いまはWebブラウジングやWebサービスといった高度なアプリケーションへと発展してきている。
XMLもTCP/IPと同じように、アプリケーションの基礎技術である。 今後はXMLそのものよりも、XMLを基盤としたアプリケーションをどう開発するか、どのようなビジネスを展開するかに、より注目が集まっていくはずだ。そして、ソフトウェアエンジニアにとってTCP/IPは知っておかなければならない基礎技術であるように、XMLもソフトウェアエンジニアにとって、どんなソフトウェアを開発する場合でも知っておかなければならない必須の基本知識になっていくことだろう。
Copyright © ITmedia, Inc. All Rights Reserved.