【ハウツー】
FileMaker Proは6から7にバージョンアップした際、さまざまな機能が追加、改良された。それから約6年、Webビューアやスクリプトトリガをはじめ、外部Webアプリケーションと連携するための機能が強化されてきている。FileMaker Pro単体では実現がむずかしい機能も、外部Webアプリと効率よく連動させることで、より簡単に効率よく開発ができる可能性がある。
FileMaker Proは6から7にバージョンアップした際、さまざまな機能が追加、改良された。それから約6年、Webビューアやスクリプトトリガをはじめ、外部Webアプリケーションと連携するための機能が強化されてきている。
FileMaker Pro単体では実現がむずかしい機能も、外部Webアプリと効率よく連動させることで、より簡単に効率よく開発ができる可能性がある。外部Webアプリと連携させる場合に利用する機能はおもに次のとおり。
XMLデータソースのインポートではXMLファイルからのインポート以外に、HTTP経由でのXMLインポートがおこなえるようになっている。これを利用して
といった連携が可能だ。FileMaker ServerのXML Web公開ではデフォルトでこのFMPXMLRESULT文法を出力する機能が用意されているため、簡単にこの機能でデータをやりとりすることが可能だ。MySQLやPostgreSQLといったほかのデータベース、スクレイピングなどで取得したデータはいったんFMPXMLRESULT文法に加工すればFileMakerにインポートができるようになる。
|
FileMaker ServerのXML Web公開は最初からFMPXMLRESULT文法を出力する機能が用意されているため、簡単にこの機能でデータを受信できる。クライアントがFileMakerランタイムの場合に活躍する |
|
MySQLやPostgreSQLといったほかのデータベース、スクレイピングなどで取得したデータでもFMPXMLRESULT文法に加工することで、FileMakerの「XMLデータソース」としてインポートできるようになる。この図ではPHPを使用しているが、自分の使いたい言語でOK |
FileMaker Pro 8.5から利用できるようになったWebビューアは、WebブラウザをFileMaker Proにそのまま埋め込んだような機能だ。特定のURIリクエストを投げ、Webブラウザのレンダリング結果をFileMakerレイアウト内に表示する。これを利用して
といった連携が可能となる。FileMaker Pro 11にてグラフ描画機能が実装される前までは、Webビューア+JavaScriptライブラリまたはGoogle Chartとの連携でグラフ描画を実現できていた。
この2つの機能に次の関数などを組み合わせて用いることで、より効率よく、シームレスに動作するFileMakerアプリケーションが開発できる。
| 関数/機能名 | 説明 | 利用できるバージョン |
|---|---|---|
| GetValue | 改行で区切られているテキストから特定の値を抜きだす。複数のデータをやりとりする際に | FileMaker Pro 8以降 |
| GetLayoutObjectAttribute | レイアウトに配置したオブジェクトのさまざまな情報を取得する。外部アプリケーションと連携する場合、GetLayoutObjectAttribute( "(Webビューアに設定したオブジェクト名)" , "content")でHTMLソースを取得できる | FileMaker Pro 8.5以降 |
| GetAsURLEncoded | 文字列をURLエンコードする。XMLデータソースのインポートやWebビューアで使用するURIに特定の記号やマルチバイト文字を含めた場合、意図しない動作をする場合があるので、この関数を使用すること | FileMaker Pro 8.5以降 |
| スクリプトトリガ | フィールドからフォーカスが外れた、値が変更されたなどのタイミングで特定のスクリプトを実行する。スクリプトトリガ登場前まではボタンなどにスクリプトを設定し、かならず1アクションをおこなう必要があった。スクリプトトリガを活用することで、シームレスに外部Webアプリとの連携をおこなうことが可能になる | FileMaker Pro 10以降 |
FileMakerに格納している情報をもとに、外部アプリケーションの情報を表示したい場合は、Webビューアにサイトのアドレスとフィールド名を指定する。顧客マスタ画面で会社の地図をGoogle Mapsで表示したい場合は、次の内容をWebビューアのアドレス欄に指定する。
"http://local.google.co.jp/maps?" & "q=" & (住所情報を格納するフィールド名) & " " & (検索したいキーワードを格納するフィールド名)
外部アプリケーションの情報を取得したい場合は、Webビューア・GetLayoutObjectAttribute・スクリプトトリガを活用する。ここでは例として、FileMakerで郵便番号を入力した場合に外部アプリケーションから住所を取得するサンプルを作成してみよう。使用したWebサービスはzip.cgis.bizによる郵便番号検索API。
Webビューアで使用するアドレスは次のとおり。
"http://zip.cgis.biz/csv/zip.php?zn=" & (郵便番号を格納するフィールド名)
これで郵便番号が入力された場合、CSVがWebビューアに表示されるようになる。スクリプトでWebビューアの内容を取得できるよう、オブジェクト名に名前をつけておく。ここでは「web_viewer」とした。
次にスクリプトを2つ用意する。
それぞれのスクリプト内容は次のとおり。
Aスクリプト「ウェイト」
# Webビューアで表示が完了するまでのウェイト
スクリプト一時停止/続行 [ 間隔(秒): 1 ]
スクリプト実行 [ 「郵便番号から住所を取得」 ]
Bスクリプト「郵便番号から住所を取得」
フィールド設定 [ 顧客マスタ::住所; "" ]
# Webビューアの結果より、1行目と2行目を変数に格納
変数を設定 [ $lines; 値:Substitute ( GetValue ( GetLayoutObjectAttribute ( "web_viewer" ; "content" ) ; 1) ; [ "," ; "¶" ] ; [ "\"" ; "" ] ) ]
変数を設定 [ $lines[2]; 値:Substitute ( GetValue ( GetLayoutObjectAttribute ( "web_viewer" ; "content" ) ; 2) ; [ "," ; "¶" ] ; [ "\"" ; "" ] ) ]
# 1行目の6列目を使用してエラー判定
If [ 1 = GetValue ( $lines[1] ; 6 ) ]
# 正常処理 - 2行目の5,6,7列目を住所にフィールド設定
フィールド設定 [ 顧客マスタ::住所; GetValue ( $lines[2] ; 5 ) & GetValue ( $lines[2] ; 6 ) & GetValue ( $lines[2] ; 7 ) ]
Else
# エラー処理
フィールド設定 [ 顧客マスタ::住所; "エラー: " & GetValue ( $lines[1] ; 7 ) & " / " & GetValue ( $lines[1] ; 8 ) ]
End If
スクリプトトリガで郵便番号フィールドに対して、OnObjectExitイベント時にAのスクリプトが実行されるようにする。ウェイトをおくことで、Webビューアのロード完了時にBのスクリプトを実行。郵便番号から住所を取得する。
「郵便番号から住所を取得」スクリプトの処理内容は次のとおり。
3~4行目の変数設定
GetValue ( GetLayoutObjectAttribute ( "web_viewer" ; "content" ) ; 1 )でCSVの1行目を取得。Substitueであらかじめカンマを改行文字に、ダブルクォーテーションを削除しておく。こうしておくことで、GetValue ( $lines[1] ; (列番号) )で取得したい情報が取り出せるようになる。2行目も同様。
6行目のIf文
エラー判定をおこなっている。郵便番号検索APIでは1行目の6列目に結果コードが返るようになっている。1の場合は正常、0の場合はエラーとみなす。
8行目のフィールド設定
GetValue ( $lines[2] ; 5 )でCSV2行目の5列目(都道府県)を取得している。同様に6列目(市区町村)、7列目(住所)を取得し、フィールド設定で住所フィールドに貼り付ける。
11行目のフィールド設定
GetValue ( $lines[1] ; 7 )でCSV1行目の7列目(エラー番号)、8列目(エラー内容)を取得、フィールド設定で貼り付ける。
ブラウズモードで郵便番号フィールドに対して操作をおこなうと、郵便番号検索API経由での住所情報を取得、結果をFileMakerに格納する。
個々の機能を組み合わせるだけで、簡単に外部Webアプリケーションとの連携が可能になるFileMaker。外部DBやWebアプリケーションと連携するAPIを自作すれば、より活用の幅が広がること間違いなしだ。FileMakerとWebアプリケーションを連携し、よりリッチなUIを備えるアプリケーションを開発してみよう。
■「ファイルメーカー選手権2010」 11/23までテンプレート受付中!
ファイルメーカー社のデータベースソフト「FileMaker Pro」で作成したテンプレートから、優れた作品を決めるコンテストです。6つのジャンル(ビジネス、ホーム、エンターテイメント、教育、医療、その他)において、ユニークでアイデアあふれるテンプレートを募集します。FileMaker Proをお持ちでない方は、FileMaker Pro公式サイトから無料評価版をダウンロードしてご使用いただけます。
各賞の受賞者にはMacBook ProやVAIOなど豪華賞品を授与します。審査員による選考のほか、読者投票による「読者賞」や学生向けの「学生賞」なども実施。学生の応募者は、1度の応募で2回受賞するチャンスです。投稿された作品は誰でもダウンロードして使用できます。ファイルメーカー選手権2010 コンテストページにて、本ページを執筆している西村俊一氏のブログ「Factory a go-go!」をご覧いただけます。コンテスト期間中に、FileMaker関連の情報やニュース、本連載の告知などの記事を続々と掲載する予定です。お楽しみに!
| デベロッパに嬉しいFileMaker Pro 11の新機能とは [2010/10/1] |
| ファイルメーカー、グラフ/レポートなど"見える化"機能強化の「FileMaker Pro 11」 [2010/4/7] |
| 理研、脳・脊髄形成に必要な神経板湾曲の仕組みを解明 [20:16 5/25] |
| 京大、「慢性閉塞性肺疾患」患者の労作時呼吸困難は鍼治療が有効と実証 [20:08 5/25] |
| 120Hz SHVカメラ用イメージセンサーを使った撮像装置 - SHVフルスペック化へ [18:10 5/25] |
| 京大、視覚による物体認知は前頭前野からのトップダウン信号が重要と確認 [17:45 5/25] |
| 製品数の拡大だけでなくBCPの展開なども含めた総合力で事業の強化を図るTI [17:25 5/25] |
|
【女性編】おなかが減ったけどおかずがない! そんなときおかずになる調味料ランキング [15:00 5/27] ライフ |
|
【男性編】おなかが減ったけどおかずがない! そんなときおかずになる調味料ランキング [15:00 5/27] ライフ |
|
1万人の中から現役女子中学生ら3人グランプリ‐「Dream Vocal Audition」 [15:00 5/27] エンタメ |
|
【レポート】「メガホビ EXPO 2012 SPRING」開催! ハイクオリティなフィギュアが多数展示される [14:50 5/27] ホビー |
|
「僕と彼女のゲーム戦争」マンガ化、小冊子で魅力を解説 [14:48 5/27] ホビー |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。