MySQL、PostgreSQL、SQLite、Oracle、SQL Server…Webアプリケーションの開発現場において、バックエンドデータベースの選択肢はさまざまだ。それぞれのデータベースにはそれぞれの長所と短所があるため、デベロッパが担当するプロジェクトで使用するデータベースは必ずしも1つとは限らない。どのデータベースを使用することになったとしても、同じ質とスピードで仕事が進められる環境を作っておきたいところ。選択肢は常に複数あったほうが安心だ。

最近ではWebアプリケーションを開発するにあたってFileMakerが少しづつではあるが採用されてきている。ご存知のとおり、FileMakerはGUIベースのデータベースソフトウェア。強力なユーザインタフェースとカスタマイズ性に富む機能を持ち併せた、Microsoft Accessと双璧をなすGUIデータベースアプリケーションだ。そのアプリケーションの性質から、企業の部門単位などといった小~中規模でデータベースとして採用されていることが多い。

本連載ではこのFileMakerとPHPを使用したWebアプリケーションの作り方を紹介していこう。まず第一回目は、FileMakerのWeb化に対する歴史とライブラリを簡単に紹介する。

FileMaker×PHPのための有力ライブラリ

FileMakerのみでも強力なシステムが組めるが、FileMakerで組まれたシステムは当然ながらFileMaker Pro製品が必要になる。外部に公開したいシステムや複雑な権限構成・Webサービスと連携するときはWebアプリケーション化したほうがよいケースが多いだろう。またすでに運用しているシステムに対して機能追加・改修のために手を入れるのが難しい場合、一部の機能を切り出してWebアプリケーション化してしまうのもひとつの手だ。

古いバージョンではFileMakerの「CDML」というHTMLに似た言語を使用しなければならず、また独自形式のために凝った動きをするWebアプリケーションの実装は難しかった。しかしFileMaker Server 7以降ではXMLベースのAPIが用意され、XSLTやPHPといった各種言語でWebアプリケーションを作成することが可能となった。FileMaker Server 9以降ではPHPからの利用がサポートされ、専用のライブラリも用意された。これにより一層FileMakerを使用したWebアプリケーションが開発しやすい環境となったと言えよう。

FileMakerとPHPを使用してWebアプリケーションを実装する場合、特化したライブラリを使用することで効率よく開発をすることが可能だ。2月16日執筆時点で特に著名なライブラリとしては「FileMaker API for PHP」「FX.php」が挙げられる。

FileMaker API for PHP

FileMaker社がFileMaker Pro/Server 9と同時にリリースしたライブラリ。PHP上からFileMakerを利用するにあたり便利な機能がひとまとめにされており、これらをオブジェクト指向で開発することが可能。ライブラリ群はFileMaker Serverに同梱される形で配布されており、デベロッパは同製品インストール後に特定のディレクトリからライブラリ群を取りだして使用することになる。FileMaker Serverの機能であるPHP Site Assistantを使用してWebアプリケーションを構築した場合は、このライブラリを利用した各画面のPHPコードが自動生成される。

FX.php

iViking.orgが2002年にリリースした、FileMakerに実装されているWeb公開機能を抽象化しPHP上から利用するにあたり活用しやすい機能・関数群をひとまとまりにしたライブラリ。FileMakerからの返り値をすべて配列として扱うため、取得したデータの加工が行いやすいのが特徴だ。初期のバージョンでは日本語の扱いに難があるなどの問題があったが、バージョン4.0リリース時に新居氏が開発・公開したFX_charsetがマージされ現在では問題なく利用できるようになった。PHP Licenseのもとで公開されているオープンソースソフトウェアで、最新のバージョンは2008/2/28(米国時間)にリリースされた4.5.1。

それぞれのメリット・デメリットは次のとおり。

FileMaker API for PHPのメリット

  • オブジェクト指向でコードが書ける
  • 機能が豊富

FileMaker API for PHPのデメリット

  • 機能が豊富なかわりに、一部機能のパフォーマンスがFX.phpに劣る。例えばポータルが配置されたレイアウトにアクセスした場合、FX.phpと比較するとレスポンスが数秒遅くなり、また一度にあつかうレコードが多ければ多いほどこの差がでる
  • 一部のコードが難読化されている。ライブラリ全体を通して何が行われているかの見通しがFX.phpと比較すると難しい

FX.phpのメリット

  • ライブラリ自体が軽量
  • 使い方がFileMaker API for PHPと比較しシンプル。またパフォーマンスもよい

FX.phpのデメリット

  • 機能がFileMaker API for PHPと比較するとやや少ない。動的な複合OR検索を実現する場合は対応するクラスを自前で用意する必要がある

どちらもメリットデメリットが存在する。ライブラリを使う場合はひとおおり勝手を確認した後で、プロジェクトの要件にあった方を採用するようにしよう。なお、本連載では主にFX.phpを使用したWebアプリケーションの実装方法について取りあげていく予定だ。FileMaker歴は長いがWebアプリケーションの構築はまったく経験のない方や、Webアプリケーションはバリバリ作ってきたがFileMakerデータベースを使用した実装がわからないという方はぜひ参考にしてほしい。