はじめに
こんにちは。株式会社ライジングサン・システムコンサルティングの岩佐です。恐らくこの記事をお読みいただいているITプロフェッショナルの皆さまは、業務系のシステム開発に従事されている方が多いのではないかと思います。
昨今の業務系システム開発では、何らかの形で他システムとの連携を要求されることがほとんどです。利用する開発プラットフォームが、より少ない工数・コストで、他システムとの連携手法を数多く持つということは、それだけ柔軟なソフトウェア開発が可能であり、結果としてソフトウェア開発の短納期・省コスト化に貢献できます。
そのため、さまざまなローコード開発プラットフォームの導入を検討する上で、システム間連携機能はとても大切な評価ポイントになります。今回は、特にFileMakerプラットフォームがもつ、外部システム連携にフォーカスし、その魅力をお伝えしていきたいと思います。
FileMakerプラットフォームが提供する3つの他システム連携機能
FileMakerプラットフォームには、他システム連携を実現するためにさまざまな機能が提供されていますが、今回は弊社で最も利用頻度の高い3つの機能をご紹介します。
- ESS(External SQL Data Source)
- cURLオプションを活用したWebサービスとの連携
- FileMaker Data API
実はこれら以外にも、FileMaker ServerをODBCサーバとして公開する機能や、Excel、CSV、XMLファイルなどの中間ファイルをインポートする伝統的な連携方法のほか、最新バージョンの19.3ではOData(Open Data Protocol)による連携機能も提供されています。しかし、今回はこの辺りの連携手法については割愛します。
ESS(External SQL Data Source)
最初にご紹介するESSは、今回ご紹介する機能の中では最も古くから提供されているもので、システム間連携をする場合は現在でもポピュラーな方法です。ESS連携を図式化すると、以下のような接続になります。
例えば、あるプロジェクトで、FileMakerで構築するソリューションから、基幹系システムのリソース系テーブルへの参照要求が発生したとします。その基幹系システムがOracleやMicrosoft SQL Serverなど一般的なRDBMSで実装されている場合、ESSを使うと、ODBC経由で基幹系システムのリソース系テーブルにアプローチすることが可能です。ODBC接続といっても、各クライアントデバイスにODBC接続設定は必要ありません。
FileMaker Serverで接続設定をしておけば、各クライアントデバイスからはあたかもFileMaker Serverにホストされたデータベースにアクセスするように、OracleやSQL Serverに格納されているデータにアクセスすることが可能です。
ESSによる接続可能なSQL Data Sourceは、ただODBCドライバが提供されているだけではなく、FileMaker ServerがESS接続に対応している必要があります。詳しくはこちらのカタログスペックを参照してください。
ESSはとても便利であり、ODBC接続という「枯れた技術」を用いるものなので、多くのITプロフェッショナルにとっても理解しやすく、手軽に使える連携手法です。ただし、どうしてもシステム間は「密結合」となってしまい、最近のITアーキテクト的に推奨される手法ではありません。また、実際のプロジェクトでは、より厄介な問題が発生します。
例えば基幹系システムを構築したベンダーと、FileMakerソリューションを開発するベンダーが異なる場合、多くのケースではこのような基幹系システムのテーブルへ直接接続する連携は、ほぼ確実にNGとなります。
理由は、障害発生時の責任分界点が設定しづらいほか、テーブル構造そのものが知的財産権によって保護されているからです。特に基幹系システムには、パッケージ製品やERPなどが多く用いられるので、このような直接接続は実際のプロジェクトだと技術的な問題ではなく、契約的な問題で見送られるケースが多くなります。
もちろん、こういった問題を回避するために、データ連携用の中間サーバを導入したり、データ連携用のミドルウェアを導入したりする手法もありますが、これらの手法は高コストになる傾向がありますし、中間サーバをどちらのベンダーが運用・保守するのかといった新たな課題も出てきます。
ESSは手軽に使える連携手法なのですが、このような側面もありますので活用するには技術以外の部分にまで視野を広げて考慮する必要があります。
cURLを活用したWebAPIの実行
次はWeb APIを用いた連携手法についてご紹介します。昨今の業務システムは、社内にあるシステムだけではなく、さまざまなクラウドサービスと連携するケースが増えてきました。弊社でもChatworkやDropbox、クラウド会計システムのfreeeなどと連携するソリューションを開発していますが、このようなWebサービスと連携する場合に便利なのが、cURLを応用したWeb APIの実行機能です。
FileMakerプラットフォームでの開発では、「スクリプト」と呼ばれる独自のプログラムコードを記述してアルゴリズムを組み立てていきます。この「スクリプト」の1命令を「スクリプトステップ」と呼びますが、このスクリプトステップに「URLから挿入」スクリプトステップというものが用意されています。
この「URLから挿入」スクリプトステップは、パラメータとして設定されたURLの戻り値を、変数やフィールドなどに取得する機能を提供します。例えば、この「URLから挿入」スクリプトステップのURLにCodeZineのURLを渡して結果を受け取ると、ブラウザのソースコード表示機能で閲覧可能なHTMLのソースを、文字列として変数などに取得することが可能です。
この「URLから挿入」スクリプトステップに、FileMaker 16から cURLオプションが設定可能となりました。多くのITプロフェッショナル、特にWeb系エンジニアの皆さまにはおなじみの、あの「cURL」の実行オプションを設定できるようになったことで、APIが公開されているWebサービスとの連携が手軽にできるようになりました。
例えば、こちらはChatworkの任意のチャットルームに対して文字列をポストするスクリプトです。若干冗長な書き方になっていますが、たったこれだけのステップで任意のチャットルームに文字列を投稿することが可能です。
さらに、この「URLから挿入」のスクリプトステップでは、http/https以外にも、fileプロトコルやsmtp/smptsプロトコルなど、業務系システムの開発シーンで便利なプロトコルにも対応しています。例えば、smtpsプロトコルとcURLオプションを使って、HTMLメールを送信するような機能を実装することもできます。
cURLオプション自体はとてもシンプルなものですが、アイデアと技術力次第で、大きな可能性を持ったソリューションを開発できる潜在能力を秘めています。ただし、FileMakerから利用可能なcURLオプションの中には、一部サポートされないものや記述方法に若干の「方言」が含まれるものもあります。詳しくは、公式リファレンスを参照してください。
FileMaker Data APIを用いたシステム間連携
先にご紹介した2つの連携は、他システムが提供するサービス、もしくはホストしているデータに対して、FileMakerは「クライアント」として提供を受ける役割での連携でした。最後にご紹介するFileMaker Data APIはその逆で、FileMakerプラットフォームが他システムに対して、データやサービスを提供する関係性における連携機能です。
FileMaker Data APIの提供は比較的新しく、FileMaker 17より正式にリリースされました。(※最新のFileMakerのバージョンは19.3)。この機能が提供されるまで、FileMaker Severでホストしているデータを他システムに提供する方法は、ODBC公開か、もしくはCSV形式でエクスポートして物理ファイルで提供するといったレガシーな方法しかなかったのですが、FileMaker Data APIが実装されたことによって、一気にモダン化されました。
FileMaker Data APIは、一般的なWeb APIであり、かつRESTfulなサービスを「ノーコード」で実装可能です。Webサーバを別でセットアップする必要もなく、FileMaker ServerのAdmin ConsoleからFileMaker Data APIを有効にするだけでサーバサイドのセッティングは終了です。
Web APIなのでクライアントとの会話はhttpsプロトコルを用います。そのため、社内にある他システムに対してはもちろん、「社外(Firewallの外側)のシステム」に対しても安全にデータやサービスを提供することが可能です。
FileMaker Data APIの認証の仕組みや「ノーコード」でAPIが公開可能な仕組みなど、本記事内で詳しく説明したいのですが紙面上の問題もあり、ここでは弊社ブログで公開している一連の記事を紹介します。
- FileMaker Data API チュートリアル1・認証
- FileMaker Data API チュートリアル2・レコード取得
- FileMaker Data API チュートリアル3・レコードの検索
- FileMaker Data API チュートリアル4・新規追加・編集・削除
こちらの記事では、Web APIをテストするときのスタンダードアプリになっているPostmanから、FileMaker Data APIを用いて、FileMaker Serverにホストされているデータにアプローチするための一連の手続きを説明しています。
サンプルのソリューションもダウンロードできるようになっているので、興味のある方はぜひ動かしてみてください(※ただし、FileMaker 17のころに書いたものなので、最新の仕様と若干異なる部分があります)。
他システム間連携はアイデア次第で無限の可能性が広がる
最後に、今回ご紹介した各連携機能を使って実装した、とある営業案件管理システムの事例についてご紹介します。
システム化要求:
- FileMakerで構築した営業案件管理システムから、メーラーを介在せずに直接見積書を見込み客に送信したい。
- 見込み客が見積書をダウンロードしたら、すぐにその旨を担当営業にChatworkで通知したい。
- 顧客が見積書をダウンロードした履歴を案件管理システムに記録したい。
- 送信した見積書が一定時間以上経過してもダウンロードされない場合、担当営業にアラート通知したい。
見積書のダウンロード直後に担当営業にその旨を通知したい背景は、見込み客が見積書を開いたその瞬間に電話でフォローすることで、成約率を飛躍的に高める効果があるためです。
以下、この要件を実現したときの、ユーザの操作とシステムの振る舞いを時系列に解説します。
- 担当営業者はFileMakerの営業案件管理システムで見積書を作成し、見積書送信ボタンをクリックする。
- FileMakerは、見積書をPDFファイルとしてローカルデバイスのテンポラリフォルダに出力。その後、Dropbox APIを実行して、PDFファイルをDropboxの任意のフォルダにアップロードする。
- FileMakerは、HTMLメールを該当案件の見込み客に送信する。
まずここまでで、営業担当者の操作は一旦完了します。HTMLメールを送信しますが、営業担当者は一般的なメーラーアプリは一切使用しません。
次に、HTMLメールを受け取った見込み客のオペレーションを解説します。
- 見込み客は、HTMLメール内に埋め込まれた「ダウンロードボタン」をクリックする。このダウンロードボタンは、AWS上にデプロイされているWeb API(以下、Lambda API)を実行する。
- Lambda APIは、パラメータの設定値に応じて、Dropboxに保存されているPDFファイルを見込み客のローカルデバイスにダウンロードする。
- Lambda APIは、FileMaker Data APIを実行し、見積書がダウンロードされた旨を営業案件管理システムに通知する。
- FileMaker Data APIを用いて実行されたスクリプトは、見積書のダウンロード日時を案件レコードに記録し、同時に営業担当者へChatworkで見積書がダウンロードされた旨を通知する。
見込み客はHTMLメールに埋め込まれたダウンロードボタンをクリックするだけですが、裏側ではこれだけの機能が実行されます。文字だけの説明では、イメージしづらいかもしれません。以前作成したこのアプリケーションの解説動画があるので、ご興味のある方はぜひご確認ください。
このように、今回ご紹介した他システム連携の機能を使いこなすと、非常に難易度が高く、ビジネスとしても付加価値の高い機能を、ローコード開発プラットフォームならではの開発生産性を活かして短時間で実装することができます。
まとめ
今回は、FileMakerプラットフォームで用意されている他システム連携手法にフォーカスして、その魅力をお伝えしてきました。FileMakerプラットフォームを愛する一技術者としては、各連携手法の詳細な説明や数多くの実装事例、そしてシステム間連携では避けることのできない「思わぬ落とし穴」などお話したいことは山々ですが、今回は概要だけを説明しました。
次回は、FileMaker 19より追加された機能の中から、更に強化されたJavaScriptとのマッシュアップを活用した、高度な操作性を持つユーザインタフェースの構築方法について解説したいと思います。