タイトルFileMaker Developer 5を使う:XMLの利用(2) - ファイルメーカーProからXMLで結果を得るカテゴリーXML, データベース
作成日2000/8/3 16:17:17作成者新居雅行
ファイルメーカーProのデータベースを処理を、Webブラウザから行うという場合に、XMLを積極的に使う方法があることは、前回説明した通りだ。WebブラウザからファイルメーカーProのデータベースにアクセスするにはWebコンパニオンを使えば簡単にできるのではあるが、Webブラウザでレイアウトするだけがデータベース利用ではない。たとえば、あるサーバから、別のサーバにリクエストを出して、得られた結果をもとに処理をするというような場合、XMLだと受け取ったプログラム側でも都合がいいという場合もあるだろう。いずれにしても、XMLを軸にデータベース利用を行うという線で攻めることにする。データベースの中身は、XMLとして取り出し、その結果を、XSLTを使ってWebブラウザでレイアウトするというのが基本方針だ。実験では、以下のような、どこにもありそうなフラットなデータベースを用いた。見出しにあるのがフールド名である(入力が三日坊主なのが丸見えだけど…)。
なお、実際に取りかかる前に、Webコンパニオンを5.0v4にアップデートしておこう。アップデートされたプラグインは、FileMaker Developer 5に付属しているが、ファイルメーカー社のサイトからもダウンロードできる。

◇サンプルとして利用したデータベース
 

◇FileMaker: アップデータダウンロード
 http://www.filemaker.co.jp/support/updata.html


まず、このデータベースを、Webで公開できるようにする。[編集]メニューの[プレファレンス]から[アプリケーション]を選択し、ダイアログボックスで[プラグイン]のタブをクリックして、リストにある[Webコンパニオン]にチェックを入れる。後からいろいろ作業をするのなら、[設定]ボタンをクリックして表示されるダイアログボックスで各種ログファイルを作成するようにしておくとよいだろう(ログはファイルメーカーProのアプリケーションのあるフォルダに作られる)。そして、[ファイル]メニューから[共有設定]を選択し、その中のコンパニオン共有設定リストにある[Webコンパニオン]についてもチェックしておく。これで、同じMacintoshからだと、Internet Explorerを使う場合には「http://localhost/」で接続すれば、それでWebコンパニオンによって、Webブラウザからおおむねデータベース作業ができてしまう。まだ、この方法でファイルメーカーProを使ったことがない人は、ぜひとも体験していただきたい。普通に作ったフォームがそのままWebブラウザで見えている。

Webコンパニオンの動作を良く見てもらいたい。ブラウザのアドレス欄に大量の文字列があって、わけが分からないと思うかもしれないが、ポイントは「http://localhost/FMRes/FMPro」というものに対してリクエストを行っている点だ。そういうCGIファイルがあるわけではなく、内部的にそうしたパスで、データベースアクセスをする機能が呼び出せると考えればよいだろう。そして、その直後の?以降にパラメータがずらりと並ぶ。つまり、URLの中のクエリー文字列を利用して、ブラウザからファイルメーカーProに指令を送り、それに従って結果をHTMLで返すというのがWebコンパニオンの機能だ。クエリー文字列に、どのデータベースのどのフォームで、検索条件はどうするだとか言った情報を入れておくことができる。もっとも、Webコンパニオンで使う上ではそれすら意識しなくてもいいくらいである。
同様な方法で、WebブラウザからファイルメーカーProに対して、「XML形式でデータを送りなさい」というリクエストを出すことができる。ポイントは、クエリー文字列に「-format=」というパラメータがある。たとえば、そこに、「-fmp_xml」という指定を行うと、別のパラメータで指定したレイアウトのフィールド構成がXMLで得られる。たとえば、URLとして以下のものを指定することで、ファイルメーカーProからレイアウトの構成情報をXMLで得られるのである。なお、URLには基本的には2バイトコードは書かないものであり、URLエンコードしなければならない。ただし、ここでは、見やすさを考慮して、本来はURLエンコードの部分も2バイト文字で書くことにする。同じマシンからIneternet Explorer 5でアクセスする範囲ではこれで問題はなかったので、実験する場合などでは2バイト文字などで分かりやすく処理しても良いだろう。ただし、稼動環境では必ずURLエンコードするべきだと考える。

http://localhost/FMRes/FMPro?-DB=ランダムメモ&-Lay=タイトル一覧&-Format=-fmp_xml&-view

以上のGETリクエストは、ファイルメーカーProに対して、「ランダムメモ」というデータベースの「タイトル一覧」というレイアウトに関して、その構成情報をXMLで参照したい…ということを意味する。結果は、次の通りだ。IE5のアドレス欄に以上の文字列を打ち込んでreturnキーを押せば、IE5のウインドウにXMLのソースが出てくる。

◇レイアウトの構成情報をXMLで得たところ
 

実は筆者自信、XMLは本で読むくらいでは接していたのだが、具体的にこうやってブラウザで出てくるところは初めてだったりするので、「次世代環境がやってきた」みたいな感慨も感じてしまったが…。さて、ざっと見ても、フォームには「日付」フォールドがあってテキストボックスで表示されるというあたりがだいたい分かるところである。これはXMLではあるが、具体的にはFMPXML(FileMakerPro extended XML)として、ファイルメーカー社が拡張定義したXMLである。このFMPXMLは、アプリケーションやデータベースのさまざまな設定を記述することに利用できる。文法の定義はDeveloperにファイルとして供給されている。
なお、IE5では、単にXMLを表示するだけでなく、キーワードのカラーリングを行い、さらに階層関係に応じた折り畳みや展開にまで対応している。タグの左側にあるマイナス記号をクリックするとその下位の一連のタグは折り畳まれて非表示になり、タグの右側にはプラス記号が表示される。つまり、その部分をクリックして、折り畳みや展開ができるというアウトライン形式の操作ができるようになっているわけだ。

では次にファイルメーカーProからデータベースのデータを取り出してみよう。同様に、Webブラウザからのリクエストで、データを取り出した結果をXMLでクライアントに送り込むわけだが、「-format=」パラメータで「dso_xml」という値を指定する。

http://localhost/FMRes/FMPro?-DB=ランダムメモ&-Lay=タイトル一覧&-Format=-dso_xml&-find

このURLだと、ファイルメーカーProに対して、「ランダムメモ」データベースのデータを取り出すことを意味する。「-find」は検索だが、それだけを指定するとすべてのレコードを取り出すようだ(全部を取り出すには-findallの方がいいのかもしれない)。レイアウトとして「タイトル一覧」を指定したが、この場合は取り出すフィールドをレイアウトにあるものに限定するような場合の指定に使う。省略してもかまわない。IE5で上記のアドレスをGETした結果は次の図のようになった。最初のファイルメーカーProのデータベースを見比べてもらえば明らかなように、ファイルメーカーProのデータベースにあるデータが、XML形式で取り出されてクライアントに送り込まれたのである。

◇データベースのデータがXMLで取り出された
 

得られたXMLを見て明らかなように、データベースのフィールド名がタグとなり、そのタグではさまれた部分が実際のデータとなっている。ROWというタグで1レコードを表現していて、レコードの数だけROWタグの記述が並ぶことになる。さらに、FMPDSORESULTというタグが全体を占めているが、これはデータベースで言うところのリザルトセットあるいはレコードセットに相当するもので、データベースから取り出したデータ全体の集合ということである。ここでのXMLは、FMPDSO(FileMaker Pro Data Source Object)として定義されており、やはり文法を説明するドキュメントはDeveloperに付属する。
(続く)
関連リンク