FileMakerで外部システムとデータ連携する方式をまとめてみました

こんにちは、スタッフの高木です。ふと気が付けば、前回投稿した記事はもう半年も前。時間が経つのは早いというか、ずいぶん更新をサボってしまったというか・・・。

さて、今回は久しぶりに FileMaker に関する記事となります。

ありとあらゆる業務が IT システムされている昨今、アプリケーション開発に伴って、異なるシステム間でのデータ連携が求められることは、もはや当たり前のようにあることです。

比較的小規模な案件での単体アプリケーションとして使われるイメージがある FileMaker ですが、やはり外部とのデータ連携が要件として挙がることは多々あります。

例えば、弊社で手がけることが多い医療分野などを例に出しますと、ある病院でメインシステムとして電子カルテが動いている環境がある場合、それをマスタデータとして患者情報を取り出し、そのデータを FileMaker で作ったサブシステムに同期して別機能を運用する、といった使い方がよくあるパターンです。

電子カルテのように手軽にカスタマイズができないシステムと、小回りが効く FileMaker を組み合わせて使うことにより、機能拡張に柔軟に対応できるようにする良い例ですね。

そのような、FileMaker で外部システムとのデータ連携を実現する場合どういう方式があるのか、代表的なものをいくつかまとめてみたいと思います。

インポート・エクスポート 方式

FileMaker

FileMaker 標準のインポート・エクスポート機能を使って、CSV(カンマ区切り)や XML 形式のファイル経由でデータをやり取りする方法です。

メリット

  • FileMaker 標準機能で対応が可能。
  • CSV、XML 形式は対応プラットホームが多い。

デメリット

2014年6月11日訂正

  • インポート・エクスポート作業を手動で行う必要がある。
  • データ連携が頻繁に発生するようだと手間がかかる。
  • テーブル単位の処理なので複雑なデータ構成の出し入れになると難しい。

インポート、エクスポート処理はスクリプトで実行することができますので訂正いたします。また FileMaker Pro 13 Advanced の場合、複数テーブルのインポートも行えるようです。

感想

2014年6月11日訂正

コストや環境面でのメリットはとても大きい反面、インポート・エクスポート処理は手動で操作する必要があるので、ヒューマンエラーのリスクや作業コストが高くなるというのがネックでもある方法です。

利用者がシステム担当者である、データの連携頻度が低いといった条件付きでの導入を検討したい方式でしょうか。

汎用的なファイル形式を扱えること、またスクリプトからもインポート・エクスポート処理は実行できるので、かなり使えるケースが多い方式かと思います。

ただし、ビジネスロジックを考慮してデータ加工する必要がある場合は、スクリプトの処理が大きくなりそうなので注意です。

カスタムWeb公開 with PHP 方式

FileMaker

「FileMaker API for PHP」という FileMaker から提供されている API を使って、PHP プログラムから FileMaker のデータを操作する方法です。

なお、「カスタムWeb公開 with PHP」を利用するには、FileMaker Server を利用することが前提となります。

メリット

  • Web ブラウザベースのアプリを開発しやすい。
  • 開発者が多い PHP で作成できる。

デメリット

  • FileMaker Server が必要になる。
  • データ連携プログラムを別途作成する必要がある。

感想

PHP が得意な方がさっと簡単な処理を作るには向いていそうです。ただし、少し規模が大きくなるような場合は、後述の「カスタムWeb公開 with XML」の方が多機能なライブラリが揃っていて良いかもしれません。

カスタムWeb公開 with XML 方式

FileMaker

FileMaker Server に XML 形式の HTTP リクエストを送信してデータの操作を行う方法です。プログラムから利用する場合、基本的には独自の文法(fmresultset、FMPXMLRESULT、FMPXMLLAYOUT)を使う必要がありますが、実はその部分の処理を抽象化してくれるオープンソースのライブラリも多く出ていたりするので、うまく活用できれば開発効率が上げられることでしょう。

なお、「カスタムWeb公開 with XML」を利用するには、FileMaker Server を利用することが前提となります。

メリット