やさしく解説するマイクロソフトの最新技術 (第9回)

マイクロソフト株式会社 ソリューションデベロッパー事業部
デベロッパーマーケティング部 テクニカルスペシャリスト
奥津 和真 kazumao@microsoft.com




 急に寒くなりましたが、皆様、お元気でしょうか。気が付けば、もう師走という方も多いのではと思います。巷ではボーナス商戦が始まり、この新宿オフィスの近辺にある量販店のパソコン売り場も賑わっているようです。筆者は、いわゆる昔の「パソコン屋さん」の状況と比較してしまい、「こんなに多くの人達がパソコンを買うなんて、時代は変わったなぁ…」と思う毎日でもあります。

 さて、前々回、前回とDynamic HTML (DHTML)について解説いたしました。前回の記事の中で触れたInternet Explorer 5の最新ベータ版は、試していただいた方もいらっしゃるのではと思います。Developer Preview版と比較して、いくつかの仕様変更があり、以前は動いていたサンプルが急に動かなくなったり、少々、筆者自身も混乱してしまいました。その仕様変更によって、Windowsコンソーシアムセミナーなどでお話しした内容の一部は、既に現状と合致しなくなってしまいました。開発中ということで、ご容赦いただければ幸いです。今回から数回にわたって、「Internet Explorer 5のXMLサポート」について解説いたします。最近、何かと資料などで見かけるXMLですが、単にHTMLの拡張形などと理解されている方も多いと思いますので、今回はXMLの基本的なところから解説したいと思います。

●XMLとは?

 Extensible Markup Language (XML)とは、どのようなものなのでしょうか?日本語では「拡張可能なマークアップ言語」などと訳される様ですが、簡単に言い切ってしまえば、XMLは「データ記述のための言語」です。また、単なる文書フォーマットとして捉えることもできますが、前者として考えたほうが、特に皆さんには理解しやすいのではと思います。では、HTMLとの違いは何なのでしょう。HTMLのタグはあくまで物理的な構造を示すだけであり、タグに囲まれた文字の特定な意味や性質は表していません。例えば、

のタグで括られた文字列は、本来、文書としての見出しという物理的構造を表していますが、その文字列の持つ性質や意味を表している訳ではないのです。ですので、標準的なHTMLのみで書かれたページ内の情報(例:時刻表など)をコンピュータで再利用する事を考えた場合、大変な労力を要するという事は理解していただけると思います。同じような場面で、XML利用した場合は、サンプル1の様に自分でタグを定義してタグ自体に意味をもたせる事が可能になります。例えば、 で括られた文字列は時刻表のデータであるとか、その中で で括られた文字列は駅名であるなどの意味付けを行えます。感覚的には非常にHTMLに似ていますので混同される方も多いようです。なお、「どう使えるか」という部分をメインに解説したいと思いますので、実際の細かな文法に関しては市販の書籍をご覧いただければと思います。

サンプル1

 
 <?xml version='1.0' encoding="Shift_JIS" ?>
  <breakfast-menu>
  <food>
   <name>洋食セットA</name>
   <price>3,500円</price>
   <description>ステーキ朝食セット</description>   
   <calories>1200</calories>
  </food>
  <food>
   <name>和食セットA</name>
   <price>3,500円</price>
   <description>会席朝食セット</description>   
   <calories>1000</calories>
  </food>
 </breakfast-menu>
 



●XMLの特徴

 XMLの特徴を「HTMLとの比較」という視点から下記の様にまとめてみました。

・タグの作成が可能
 HTMLと比較して最も異なる点は、独自タグが作成できる点です。作成できるというよりは、宣言部分などの一部を除けば、「もともと決まっているタグは存在しない」と表現したほうが適当かもしれません。従って、XML文書を作成する場合には、必ずタグを作成する事になります。ただし、自分だけがそのデータを使う場合を除いて、他者とのデータ共有などを行う場合には、タグ作成および利用のルール作りが必要だということは理解して頂けると思います。

・テキストベース
 テキストベースであるという点も大きな特徴です。特定のバイナリーフォーマットなどと違って、異機種間および異プラットフォーム間においてのやり取りが比較的容易になります。ある意味で、インターネットなどは究極の混在環境ですので、その様な場合に威力を発揮する可能性があります。

・ 文書型の検証が可能
 XMLの仕様がSGMLをベースに作られている事もあり、XML文書が予め定義された文書型に従っているか検証することも可能です。(例えば、一人分の履歴書のXML文書に氏名が2つ入っていたら変ですよね!?) ただし、SGMLと異なるのは必ずしもこの「検証」が必須という訳ではなく、あくまでもオプションであるという事です。厳密な管理が必要な場合には必要な機能と言えるでしょう。また、文書型の定義にはDocument Type Definition(DTD)と呼ばれるものを使うのが、現時点では最も一般的ですが、独自の言語で記述しなければならない為にXMLを利用して同じような定義を行うような方法も模索されています。ちなみにXMLとしての単なる文法のチェックは、通常XMLパーサー(XML文書を構文解析するプログラム)が行います。

・デザイン定義は含まない
 XML文書自体には、いわゆる「見た目」の定義は入りません。XML文書を直接ブラウジングするような場合には、基本的にスタイルシートを併用する事になります。Cascading Style Sheets(CSS)の最新バージョンであるCSS2では、HTMLだけでなくXMLのスタイルシートとしても利用できますし、現在、XML専用のスタイルシートであるExtensible Stylesheet Language (XSL)もW3CのWorking Groupにて仕様策定作業中です。現状では、このCSS2とXSLがXMLのスタイルシートとして最も有力視されており、W3CのWebサイトにもCSS2とXSLの使い分けについての資料が存在します。

・オープンスタンダード
 HTMLと同様にXML (現状: XML 1.0)は、World Wide Web Consortium (W3C)によって勧告されたオープンスタンダードです。また、HTMLやXMLに対して実際にどうアクセスするかを定義したAPIであるDocument Object Model Level 1もW3Cより勧告されています。これによって、相互の互換性が保持されやすくなると同時に各ツールベンダーも開発ツールを作りやすくなりますので、結果的には開発環境が整いやすくなると思われます。

 簡単なものをいくつか列挙しましたが、その他にもHTMLとは異なるリンク機構や、文字コードのDefaultがUnicodeであるなど様々な特徴があります。

●XMLの利用法

 では、実際、どのような場面で利用できるのでしょうか?昨年あたりからXMLに関する書籍を書店などで見かけますが、この部分に触れているものは余り多くないようです。そのような要因もあってか、「よくわからないけど、凄いらしい」といった印象をお持ちの方が比較的多いようです。現時点で考えられる利用法は、大きくわけて以下のようなものになります。

・ 汎用的なデータフォーマットとして利用
 インターネット/イントラネット上にて、サーバー間や、クライアント/サーバー間のデータのやり取りに特定のプロトコルやフォーマットを用いずにXMLを利用したり、XMLを利用して複雑な数式を扱うMathMLやマルチメディアコンテンツの情報を扱うSMILなどのサブセット言語、またはInternet Explorer 4から実装されたアクティブチャネルのCDFのようにXMLを基本的なファイルフォーマットとして利用したものなどがこれに当てはまります。弊社の提唱するWindows DNA上で考えると各層の間の連携にXMLを利用する事が可能です。また、中間のビジネスロジックでは複数のサーバー間の連携にも利用することも可能になるでしょう。


・Webコンテンツの作成時に利用
 また、Webコンテンツの作成時にXMLを利用する事も、ブラウザ側のサポートによって、現実的なものとなってくると思われます。特に大規模なWebサイトを作成する際に、独自のタグを作成して、例えば「フォントサイズ 20pt、フォントカラー 赤」などという意味合いを持たせる事ができれば、複雑なサイトほど、もっと簡潔に記述できるようになるでしょう。Internet Explorer 5ではこのような事が可能になりますが、詳細は次回以降に解説したいと思います。

・ Document Managementに利用
 これは、従来からあるSGMLと同じような利用法です。DocumentをXML文書として文書管理に利用します。SGMLとの違いは、XMLがWeb上で利用されることを前提として仕様が作られている為に、インターネット/イントラネットとの親和性が高く、文書管理とWebを融合したシステムを作成する場合に有効です。

 大きく3つを紹介いたしましたが、その中でも大きな利点は、インターネット/イントラネット上でのデータ連携への利用の際に現れます。例えば、インターネット上にあるパソコン販売店のオンラインショップを考えてみましょう。A社のサイトには、特定のあるPCの仕様が記載されています。B社のサイトにも、同じ機種の同じ仕様が書かれています。また別のC社のサイトにも同じ記載がありますが記載内容が間違っています。従って、各々のサイトで個々にデータを持っている訳です。しかも、どのデータが間違っているかユーザーにはわかりません。また、そのPCのメーカーの該当する製品ページにリンクを張るという手段もありますが、ショッピングサイトのデザインに影響を与えてしまいます。では、各PCメーカーが特定のルールに従って統一されたタグを利用し、XMLの電子カタログを各メーカーのWebサイトで公開したらどうでしょうか?結果として、オンラインショッピングの各店舗は、そのメーカーの公式なデータを再利用する事が可能になります。そのデータ収集の作業も手動ではなく自動的にサーバー行うような動きをするシステムも構築することができるでしょう。ただし、XMLの利用において最も重要なのは、特定の業界内での標準スキーマ(ルール)作りです。この例の様にXMLでカタログを用意しても会社毎にタグが異なるようでは、全くの意味がありません。


 ここまでで、XMLの概要、その利用にはルール作りが大事である事が解かっていただけたのではと思います。ただし、注意していただきたいのは、「必ずしも万能ではない」という点です。確かにテキストベースで汎用性もあり検証も可能ですし、また、独自にタグが作れる事も大きな利点です。しかし、裏返せば、パーサーで構文解析や検証を行う際のパフォーマンスの問題もありますし、ルール無きタグの乱用は混乱を生みます。簡単に言えば「適材適所」ということになるでしょうか。

 今回は少し長くなってしまいましたので、このへんにしたいと思います。今回はInternet Explorer 5の機能に触れることができませんでしたので、次回以降、解説したいと思います。ご意見・ご要望などは表紙のアドレスまでお願いいたします。皆様からのメールをお待ちしております。では、皆様、良いお年をお迎えください。また、次号でお会いしましょう。

○ 参考資料
・W3C Extensible Markup Language (XML) 1.0
 http://www.w3.org/Press/1998/XML10-REC
・W3C Document Object Model Level 1 specification.
 http://www.w3.org/Press/1998/DOM-REC/
・W3C Cascading Style Sheets Level 2 Specification
 http://www.w3.org/Press/1998/CSS2-REC
・W3C Extensible Stylesheet Language (XSL) Version 1.0 Working Draft
 http://www.w3.org/TR/WD-xsl
・ Site Builder Network Web Site
 http://www.microsoft.com/sitebuilder/
・Site Builder Network Japan Web Site
 http://www.microsoft.com/japan/sitebuilder/


Contents         Windows Consortium ホームページ