タイトルFileMaker Developer 5を使う:XMLの利用(1)カテゴリーXML, データベース
作成日2000/8/2 18:33:29作成者新居雅行
XML(eXtensible Markup Language)と言えば、eコマースがどうだとか、業界標準とかすごい言葉が次から次へと飛び出し、食傷気味かもしれない。FileMakerとXMLについて今回は説明するが、一般的なはなしではなく、具体的な動作について説明できる点では、雲を掴むような記事ではないことはお約束できる。XMLが、Webアプリケーションを作成するときに、どういう意味があるのかをまとめて、ファイルメーカーProのXMLについて説明をしてみたい。

Webの原理はHTMLであることはもういいとして、つまりは、サーバーからクライアントにHTTPで、HTMLデータを送り込むことでページが表示される。HTMLデータは通常はファイルに保存されており、スタティックである。しかしながら、CGI、サーバサイドスクリプトなどを使うことで、プログラムによってHTMLを生成できる。こうした状況は、スタティックに対してダイナミックである。ダイナミックなHTMLの場合、必ずしも使う必要はないとは言え、必ずデータベースが引き合いに出される。つまり、その都度異なるデータや更新、変更のあるデータを、データベースに蓄積しておく。そして、Webサーバでなんらかの方法でデータベースアクセスを行い、その結果をHTMLとして整えてクライアントにおくるという手法をとる。もちろん、ファイルから読み取って…という手段のダイナミックなHTMLもあるが、業務アプリケーションなどを始め、管理を考えるとデータベースを使うということに結局は落ち着くものだ。
オープンソースの世界では、CGIと言えばPerlがよく使われる。また、PHPというサーバサイドスクリプトシステムもよく使われる。これらは、PostgreSQLやMySQLをはじめ、さまざまなデータベース処理をライブラリによって提供されているので、関数などの手法で、データベースアクセスを伴うプログラムが簡単に作成できる。しかしながら、そこでは、データベースのアクセスとHTMLの生成プログラムがごっちゃごちゃに入り乱れるのである。1つにまとまっているという意味では重宝であるのだが、表示結果をちょっと変えるだけでもプログラムの変更を伴う。プログラマの方々は容易に想像できるが、プログラムを変えるというのはプログラムの他の箇所への影響を考える必要があるなど、単にその部分にちょこっと手を入れてすむようなものではないのである。結果的に、こうしたCGIなどを使った手法では、やはり管理などにはそれなりの手間がかかることは否定できない。
では、ファイルメーカーProはどういう方法を取ってきたのっだろうか。Webコンパニオンという機能が以前のバージョンから組み込まれていて、簡単に言えば、起動しているファイルメーカーProがWebサーバになる。そして、Webクライアントに対して、データベースの中身を取り出すなどして、データベースの参照ができるようになっている。つまり、データベースアクセス機能がある(当たり前なのだが)Webサーバになるのである。言い換えれば、ファイルメーカーPro自体がデータベースアクセスとHTML生成を行い、自動的に処理を行っているので、特にプログラムの必要はない。特に、Ver.5では何もしなくても、かなり高いレベルでフォームのデザインをWebブラウザ上でも再現できる。フォームの作り込みでWebアプリケーションまで作成できてしまう点が大きな優位点でもあるわけだ。
Ver.4ではそこまでの機能はなかったため、WebページのカスタマイズをするためにCDMLという文法に従った機能を提供していた。これは、HTMLファイルに、ファイルメーカーProのWebサーバだけが理解できる独自のタグを埋め込む。そうすると、そのタグの部分が、データベースから取り出したデータに置き換わり、Webブラウザにはデータベースから取り出されたデータが表示されるという仕組みとなるわけだ。また、データベースからの取り出しのリクエスト、たとえば検索条件などは、URLのクエリー文字列として指定することになる。これはこれで、HTMLの拡張として機能することなどから分かりやすいというメリットはあるものの、複雑な処理を組み込めない。もちろん、JavaScriptと組み合わせることも可能とは言え、けっこう大変になってくる。もちろん、CDMLはVer.5でも利用でき1つのやり方ではある。初期のバージョンのWebブラウザでも利用できることなどメリットも多いが、「タグの拡張」というやり方にはある種の限界が見えていることも言えるのではないだろうか。

<そこでXMLに注目する>
前置きが長くなったが(前置きだったんですよ…)、こうした流れの中、XMLが登場した。XMLは基本的にはデータだが、データの中身の説明を組み込めるという点でこれまでとは大きく違う。XMLも、CSVファイルも同じかというとそうではない。CSVファイルの場合、1行目にフィールド名がないとすると、各フィールドのデータの意味はそれだけでは分からない。また、そのファイルに漢字データがあるとすると、そもそもShift JISである保証はどこにもない。しかしながら、XMLだと、データにはその属性を示す情報を含めたり、コードはなにかを記述することができるなど、データ自体の説明が組み込まれているといった点で、再利用がしやすくなるのである。
XMLという1つの言語があるとも言えなくはないが、具体的にはXMLをベースに用途に応じた記述言語を作成することができる。そうなれば、HTMLをXMLで記述しようとかいろいろな動きが出てくる。ここでは、スタイルシートをXMLで記述しようというXSLT(eXtensible Stylesheet Loanguage-Transformations)に注目したい。スタイルシートの本質は、あるデータをスタイルシートの情報を用いて形式を変換することである。つまり、そうした変換のやり方を、XMLベースで記述しようというのがXSLTなのである。

単なるデータの羅列ではないXMLは、よく知られているように、データベースの中身を取り出した結果を記述することに使える。CSVの発展という例を出すまでもないだろう。データベースの取り出し結果をXMLで記述しておくことで、単に「アルフィー」という言葉が出た時、外国人の名前か? 日本のミュージシャンか? それともジャズの名曲? などと迷ってしまう。しかしながら、XMLでは「<ペットの名前>アルフィー</ペットの名前>」のようになり、データベースからの取り出し結果では、ペットショップの顧客管理データベースから取り出したペット名フィールドであることが分かるという具合だ。
それじゃあ、そのXMLをいきなり取り出して、ユーザに見ろといったところで、それはえらいことになるだろう。所詮、言語であり、実務レベルで扱えるものではない。そこで、XMLで取り出した結果をXSLTによって、実際にWebブラウザで整えて表示するというわけである。
こうすることで、データの取り出しとその表現方法がまったく別々になり、表示形態を変えるだけなら、XSLTファイルを変更だけですむようになる。また、XSLTファイルはクライアントにダウンロードされて、Webブラウザ上で処理されるため、Webサーバで表示形態に応じた処理を組み込む必要はなく、Webサーバ側はXMLでデータの取り出し結果などを記述だけですむ。つまり、サーバの負荷もかからない方法なのである。

ファイルメーカーProを使った場合、XMLとXSLTを使うというのが唯一の方法ではなく、CSS(Cascading StyleSheet)を使う方法や、JavaScriptを使う方法もある。もちろん、そのままWebコンパニオンで使う方法も可能だし、CDMLを使った拡張タグもある。どれを使うかはデベロッパが好きにやっていい。ここでは、XMLということにフォーカスした場合、XSLTを使うのがいちばんXMLらしいのではないかと考え、その方法を以下、詳しく説明することにしよう。
(続く)
関連リンク