XMLの基礎を理解しよう 〜これだけ知っていれば大丈夫!〜:新入社員のためのXML入門講座(1)
シリーズ「新入社員のためのXML入門講座」では、XMLの基礎をさまざまな記事を通じて理解してもらう予定だ。その第1回である本記事では、できるだけ技術的な解説を行わずに、XMLの特徴や全体像を理解してもらう。
Webサービスやマイクロソフトの.NET、そして企業間取引(BtoB)やEAI(Enterprise Application Integration)など、XMLは最近話題になっている技術の中心的存在になっている。
本記事の目的は、そうした最新技術の基礎としてのXMLを解説することにある。多くのXML入門書では、XMLの文法などの技術的な面を紹介しているが、ここではXMLとその関連技術の全体像を理解してもらうことを主眼とした。技術的な詳細については、このXML eXpert eXchangeフォーラムのほかの記事で十分に解説しているので、そちらをぜひ参照してもらいたい。
XMLの特徴を4つ挙げる
1998年にXMLの仕様を策定したWorld Wide Web Consortium(W3C)は、「XML in 10 points」というドキュメントの中で、XMLの特徴を分かりやすく解説している。その文書を参考にしたうえで、まずはXMLの持つ重要な特徴を紹介していこう。
〜XMLの特徴〜
- XML文書はテキストで記述する
XML 1.0仕様は、データを記述するための文法だ。この文法に沿って記述されたデータを「XML文書」と呼ぶ。XML文書はテキストとして記述され、文字コードにはUnicodeなどが使用される。テキストデータは、その解釈にCPUやハードウェア固有の機能などを必要としないため、基本的にどんなシステムでも読み込むことができる。 - XMLはどんなデータでも記述できる
XMLでは、HTMLのようにタグを使ってデータを表現する。タグは入れ子にでき、名前も自由に設定できるうえ、タグで囲まれたデータには、数字、文字など、どんな型や長さでも記述可能。スプレッドシートやワープロ、リレーショナル・データベース、プレゼンテーションシートなど、ほとんどすべてのアプリケーションのデータは、XML文法で記述可能だ。 - XMLは複数の仕様の組み合わせである
XML文書の書き方を定めたXML 1.0仕様の周辺に、さまざまなXML関連仕様が集まってファミリーを形成している。XML文書をほかのデータ形式にコンバートするスクリプト言語のXSLT、XML文書間のハイパーリンクを記述するためのXLink、HTMLをXML文法で記述したXHTMLなどだ。これら周辺仕様によってXMLの能力が高まり、利用範囲がますます広がっている。 - XMLは無料で使える
XML 1.0は1998年にW3Cによって策定された。W3CはHTMLやHTTPなどの仕様を策定している機関で、その仕様はオープンであり、だれでも自由に無料で利用できる。
「XML」といったときに、狭い意味でそれはXMLの文法を決めているXML 1.0仕様のことを指す。しかし広い意味で捉えたときには、XHTMLやWebサービスなど、XML関連技術を幅広く含んでいる。XMLの世界は、XML 1.0の上にさまざまな仕様を連ねることによって、その機能や守備範囲がいまも広がっているのだ。
XMLはなぜ支持されるのか?
XML文法で記述したデータのことをXML文書と呼ぶ。いまや、スプレッドシートやワープロといったオフィスアプリケーションはもとより、リレーショナルデータベースやERPといったバックオフィスアプリケーションなどの多くのアプリケーションが、データ形式としてXML文書をサポートしている。
アプリケーションのデータ形式を、独自のバイナリ形式やCSVではなく、XML文書にすることの利点はいくつかある。XML文書ならテキスト形式だから、人間にもデータの意味が分かりやすい。タグ付けされているためにデータ構造の変更に柔軟で、アプリケーションの処理がしやすい。データが特定の環境に依存しない、などだ。これらはすべてXMLの利点である。
XML対応の知的資産をすべて活用できる
しかしXML文書化したときの最大の利点として、XMLに対応したソフトウェア資産が利用可能になる、という点が見逃せない。
アプリケーションのデータは通常、特定のアプリケーションに読み込ませて加工や処理を行うのが一般的だ。しかしデータがXML文書になっていれば特定のアプリケーションがなくても、内容や整合性のチェックにはXMLパーサが利用できるし、データ構造を変換したいときにはXSLTが使える。それ以外にも、XMLに対応したさまざまなツールによってデータを操作し、分析し、加工することが可能だし、必要な場合には新たな処理を開発することも容易だ。
また、データフォーマットについても利点がある。例えば、データを生成するアプリケーションの機能が増えて、グラフィックスや数式、音声、名簿といったデータが出力可能になったとしよう。データがXML文書形式であれば、アプリケーション開発者は独自にグラフィックスや数式や名簿を表現するためのデータ形式を考え出す必要はない。すでにXMLによってそれらのデータを記述する方法が、SVGやMathMLやVoiceXMLといった仕様として存在している。それらをデータ形式として流用すれば、簡単で短期間に、しかも非常に完成度の高いデータフォーマットが実現する。
データをXML形式にするだけで、XMLに対応したさまざまなツールや、第三者が作成した完成度の高い仕様といった、多くの知的資産、ソフトウェア資産の利用や連携が可能になる。これは逆にいえば、データが特定のアプリケーションに縛られることがなくなる、ということであり、その特徴が、CSV形式やバイナリ形式による独自フォーマットでは得られない、XML文書形式ならではのメリットだといえるだろう。
XMLを構成する仕様の全体像を知る
XML関連仕様は、大きく3つに分類することができるだろう。1つは、XML文書を記述するためのXML文法そのものにかかわる部分。そして、XML文書を操作するためのスクリプトやAPIなどにかかわる仕様。3つ目は、XMLによって定義された応用言語などだ。順に紹介していく。
XML文書を記述するための仕様群
XML文書を記述するための仕様には、XML 1.0、XML名前空間などがある。XMLの最も基礎となる仕様である。
- XML 1.0 (Second Edition)
XML文書の書き方、文法を定めている仕様。 - XML名前空間
XMLのタグを書き分けるための方法。XMLは自由にタグの名前を決められるため、2つのXML文書をマージするときなど、同じ名前のタグが重複する可能性がある。それを区別するのがXML名前空間。XML 1.0とXML名前空間を合わせたものが、現実的にはXML文法を規定しているといってよい。 - XLink、XPointer、XPath
XML文書の中に、ほかのXML文書へのハイパーリンクなどを埋め込むときの書き方。 - DTD、XML Schema
XML文書の型を決めるためのスキーマ言語。どんなタグが使え、タグの中にどんなデータが入るべきなのか、といったXML文書の形式を定義できる。DTDはXML 1.0の仕様に含まれる基本的なスキーマ言語。しかしもっと複雑で高度な文書形式を表現するために、後にXML Schemaと呼ばれるスキーマ言語がW3Cによって策定された。
XML文書を操作するための仕様群
XML文書をアプリケーションから操作するための方法も、標準的なAPIが定められている。これらのAPIをサポートしたソフトウェアを一般に「XMLパーサ」と呼んでいる。XMLパーサIを利用してXML文書を操作しているプログラムは移植性が高く、またプログラミングのノウハウも蓄積しやすい。
- XSLT(XSL Transformations)
XML文書を変換するためのスクリプト言語仕様。XML文書から、HTML文書やiモード用のページを生成したり、テキストファイルを生成する、といった変換が自在にできる。もともとXMLのスタイルシートXSL(Extensible Stylesheet Language)の一部として策定される予定だったが、高機能のため独立して策定された。 - DOM(Document Object Model)
XML文書をツリー構造として解釈し、アクセスするためのAPI仕様。高機能ではあるが、XML文書をツリー構造に解析してメモリ上に展開する必要があるため、大きな文書の操作には向いていないといわれている。 - SAX(The Simple API for XML)
XML文書を先頭から順に読み込んでいき、そこで発生したイベントを伝えるためのAPI仕様。XML文書を順次処理していくため高速だが、文書中をあちこち参照するような複雑な処理には向いていない。
ここに挙げたAPI以外にも、JavaからXML文書を操作するJAXP(Java API for XML Processing)、JAXB(Java Architecture for XML Binding)など、各種のAPI仕様が存在する。
XMLを使って定義された、さまざまな言語
XML文法を使って、さまざまな用途のためのデータフォーマットが仕様として定められている。XHTMLやSVGなどはその代表だろう。下記に挙げたのはほんの一部であり、見積書や発注書のようなビジネス情報から、書籍情報、保険情報など、業界ごと、アプリケーションごとにさまざまな言語が存在している。
- XHTML
XML文法に従って、HTMLを記述し直したもの。XHTMLはHTMLと同様にWebブラウザで表示できるが、同時にXML文書でもあるため、XSLTによって変換したり、XMLパーサで整合性をチェックするなど、XML文書としての柔軟性も持ち合わせる。 - SVG(Scalable Vector Graphics)
XML文書として記述されるベクターグラフィックス言語。線や円、といったベクトル情報によってグラフィックスを記述する。 - MathML
XML文書によって数式を記述するための言語。ルートや階乗といった、数式によく見られる複雑な演算子や数字の位置関係などを表現できる。 - XBRL(eXtensible Business Reporting Language)
XML文書によって企業の財務情報などを記述するための言語。 - XML Encryption Syntax and Processing
XML文書やその一部を暗号化するための仕様。 - XML Protocol
XML文書をネットワーク上でやりとりするための言語仕様。Webサービスに利用される。
これらの分野では、XMLのさまざまな応用が試みられており、現在最も変化の激しい部分だといえる。
用途別に異なるXMLの技術
XMLの仕様が策定されている当時は、XMLの利用法として出版、電子出版のような、ドキュメントを表現することを、その主な用途として想定していた。しかし実際には、XMLは出版関係だけでなく、企業間での取引情報、アプリケーション間の通信など、さまざまな分野で使われ、技術を変革させるブレイクスルーとなった。
Webパブリッシング
現在の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」などがこうした機能を備えている。
BtoB
XMLの登場によって最も活性化したのがBtoBの分野だろう。企業間で取り交わされる製品情報や発注情報といった複雑な情報を柔軟に表現できるXMLの登場によって、企業間でやりとりされる情報の標準化が一気に促進された。と同時に、RosettaNetやebXMLといったBtoBを推進する組織や団体によって、インターネット上で取引情報を安全かつ効率的に企業間でやりとりするルールや仕組みの整備も進んだ。
BtoBを実現するために、BtoBサーバと呼ばれるカテゴリの製品が登場、インフォテリアの「Asteria」、マイクロソフトの「BizTalk Server」、ウェブメソッドの「webMethods」、そのほかにもエクセロン、アリバ、コマースワンなど多くのベンダが参入している。
EAI(Enterprise Application Integration)
企業内には、さまざまなアプリケーションが稼働している。顧客管理、売上管理、営業履歴、在庫管理などなど。メインフレームで動いているものもあれば、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データベースの普及が促進されることだろう。
Webサービス
XML関連仕様の中で最も注目されているのがWebサービスであることは間違いない。Webサービスを簡単に説明すると、インターネット経由でプログラム同士が連携するための仕様だ。Webサービスに対応したアプリケーションなら、どのOSで動いていても、どの言語で開発されていても連携でき、高度なシステムを容易に構築できる。そのため、マイクロソフトの「.NET戦略」、サン・マイクロシステムズの「SunONE」や、IBM、BEAシステムズ、ボーランドなどなど、主要なソフトウェアベンダはこぞってWebサービス対応を打ち出している。
XMLはWebサービスを実現するプロトコルであるSOAPのデータ構造として利用されている。Webサービスで受け渡しされるデータはすべてXML文書として表現されているのだ。それ故、Webサービスに対応するということは、すなわちXML対応が必要最低条件である。Webサービスが今後のソフトウェア開発の基礎技術になるとすれば、あらゆるデータがXML文書化される可能性もある。
これからの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.