FileMakerとExmentの連携方法について

おはようございます。こんにちは。こんばんわ。
エヌ・ケイ・カスタマイズの 泉 です。

2020.11.19のブログ『無料で使える国産WEBデータベース「Exment(エクスメント)」』

「Exment」のすばらしい出来と、それを 無料 で提供していることに感銘を受けつつ、
今回はここまでとさせていただきます。

弊社では、この「Exment」を使用したシステム構築ができる体制を準備しているところですので、
ご興味、ご関心のあるお客様がいらっしゃいましたら、是非、お声をおかけください。

今後、ブログの方では「Exment」の機能について、私なりに勉強した内容をアウトプットしていきたいと思います。

あれから、1年と2ヶ月、、、
決して忘れていたわけではありません。
調査したり、実際に使ってみたり、案件として対応したりと色々やっていたのですが、
なかなかアウトプット出来ていませんでした。

『今年こそは1月に1本はExment関連でブログをあげるぞ!!』と目標を掲げておきながら、
ギリギリになる始末。。。
我ながら情けないですが、ギリギリでもちょっと過ぎても、1ミリでも進もうと思い、
ブログを書くことにしました!!

私の言い訳はこれくらいにして、さっそく本題に入りましょう!!

FileMakerとExmentをどうやって連携させるか

Exmentの将来性を感じつつ、FileMakerとの連携方法の検討は、結構時間のかかる作業でした。
当初、私が考えた連携方法は、容易な順で以下の方法でした。

  1. ODBC接続による連携
  2. FileMaker Data API for PHPによる連携
  3. Exment のAPIによる連携

ここで、いきなり結論ですが。

FileMakerとExmentの連携方法は

ずばり ExmentのAPIによる連携 の一択です!!(多分)

それでは、次のブログでお会いしましょう🙇

後15分で日付が変わるので、1月中に書き上げたくて、一瞬ここで終わらせようかという悪い考えが頭をよぎりましたが、
ちゃんと解説したいと思いとどまりました。

1.ODBC接続による連携 が不採用になった経緯

Exmentはデータベースに、

  • MySQL
  • MariaDB
  • SQLServer

を選択できます。

FileMakerから他システムと連携する方法として、古くから(?)とられてきた連携方法に、
ODBC接続があります。

「FileMaker 外部 ODBC」で検索すると、色々情報が収集できますが、
Clarisのサイトに、利用可能なODBCドライバが公開されています。
対応するFileMakerのバージョンと外部データソースのドライバがダウンロード可能です。

私はMySQLのドライバを入手し、Exmentのテーブルを参照することに成功して、一件落着と思ったのですが、
どうにも目的のデータが見当たりません。
Exmentのデータベース構造を調査して、テーブル名やカラム名を確認してみたところ、
Exmentのテーブルのフィールドを格納しているカラムが、ODBC接続では参照できませんでした。

理由は該当カラムが「json形式カラム」だったからです。
MySQLのODBCドライバを確認したところ、「json形式カラム非対応」のようでした。
(確認したソースは見失ってしまいましたので、後日、確認してアップします)

この後、MariaDB、SQLServerのODBCドライバも調査したのですが、
その話だけで、一本のブログになるので、また別の機会にお話したいと思います。

2.FileMaker Data API for PHP が不採用になった経緯

ExmentはPHP(フレームワークは「Laravel」)で構築されています。
私は、前職でPHPで構築されたCRMの「SugarCRM」をカスタマイズしていた経験があるので、
「FileMaker Data API for PHP」をExmentに組み込めば、うまく連携できるだろう!!と思いました。

ですが、Exmentに組み込むには、フレームワーク「Laravel」の勉強と、Exmentの設計思想を解析する必要があること。
さらには、Exmentがバージョンアップした際、組み込んだ部分の稼働確認が必要になることを考えると、
ハードルが高すぎると考え、不採用としました。

それから、数ヶ月経ったある日、以下の情報を目にしました。

参考サイト:未来Switch様のブログ「FileMaker Pro 19.3.1/ FileMaker Server 19.3.1 新機能」の一文

Data API をクライアントライセンスの代替手段として使用することはできません。例として、10ユーザにサービスを提供する場合は10ユーザライセンスまたは同時接続ライセンスを購入する必要があります。

引用元:「Claris FileMaker Server ソフトウェア・ライセンス」の「1.ライセンス (d) FileMaker Data APIライセンス」より

これまでは、データ通信量の制限しかなかったのですが、「使い方」の制約が追加されていました。

「私の解釈」で簡単に説明させていただきますと、

『別システムをData APIを利用してFileMakerのクライアントのように使用するのであれば、その別システムを利用するユーザ分のライセンスを購入しないとライセンス違反としますよ』

といった感じです。

結果として、Exmentとの連携に「FileMaker Data API for PHP」を使うには、
Exmentへのカスタマイズと、ユーザ数分のライセンが必要となり、
かなりハードルが上がっています。

3.ExmentのAPIによる連携 が採用になった経緯

ここまで、読んでいただければ、おわかりだと思います。

「ExmentのAPIによる連携」一択です!!

消去法によって、この方法を採用しましたが、結局この方法が一番「安全性」「完全性」「保守性」に優れていると感じています。

  • 「安全性」:Exmentが提供している正当な外部連携方法で、ドキュメントも準備されている
  • 「完全性」:Exmentはデータ保存時に、データ更新機能や履歴保存機能、共有設定機能など、高度な機能が緻密に実装されていますので、データベースを直接操作するようなことをせずAPIに任せた方が、データの完全性が担保できます。
  • 「保守性」:ExmentのAPIは、FileMakerのスクリプトのみで実装できます。つまり、FileMakerのスクリプトを開発できるスキルがあれば、保守ができるということです。

ただし、この方法には以下の注意点があります。

  • FileMaker側が連携のトリガーになる
    →Exmentでデータを更新しても、FileMaker側が参照しないとデータが古いままです。
    →また、データの状態遷移の設計をしっかりしないと、データの先祖返りが発生します。
  • Exment側のデータを更新するにはレコードの[ID]が必要
    →APIの仕様ですが、これは、参照した際に、FileMaker側にフィールドを用意してExmentの[ID]を保持すればクリアできます。

まとめ

いかがだったでしょうか?

これからFileMakerとExmentの連携を考えている方の一助となれれば幸いです。

弊社の開発実績をご覧いただけるとわかるように、既にこの連携方法を利用して、
複数の案件の実績を積んでおります。

まだまだ、Exmentの機能を全て使いこなせているわけではありませんが、
プラグイン開発(PHP)も数種類実装してきました。

今後は、『Exmentの面白い機能』や『プラグインでできること』のブログのアップを予定していますので、
次回もご期待ください。

P.S.やはり日をまたいで2月になりましたが、2月中にもう1本ブログあげます!!