FileMakerでiPad miniのバーコードリーダーを2行で作る

この記事は次のブログに引っ越しました。

iPadのカメラとFileMaker Pro11を使ってバーコードリーダーを数ステップで開発する 02:00 iPadのカメラとFileMaker Pro11を使ってバーコードリーダーを数ステップで開発するを含むブックマーク CommentsAdd Star ■目的 Filemakerで開発したDB(.fp7ファイル)を、iOS(iPhone, iPadシリーズ, iPod Touch)で動かし、標準カメラでバーコードを読み取って、備品管理や書籍管理とかやってみる。 ための簡単なチュートリアル。 ■ポイント 本体のカメラを使う(別途外付けのバーコードリーダーなどを使わず、ビルトインのカメラを使う) ここではiPad miniで動かす場合を想定していますが、iPhoneiPod Touchでも動きます。 スクリプトは全部で2行! D ■必要なもの FileMaker Pro11 or それ以上 PC用DB開発アプリで、主な開発に必要です。高めですが、これがあることが前提です。 メーカーサイト FileMaker Go11 for iPad FileMakerのDB(.fp7ファイル)をiPad上で動かすのに必要なiOSアプリです。これは有償ですが、FileMaker Pro12を持っている人は無料のFileMaker Go12をiPadにインストールしてください。(※) メーカーサイト pic2shop -Barcode Scanner and QR Reader iOS用のバーコードリーダーアプリ。iPad(HD)版は有償でiPhone版は無料(広告付き)です。iPhone版をiPadにインストールしても問題なく動くので、まずは無料版を入れます。iPhone用画面なので画面が小さいですが「2x」ボタンであらかじめ倍のサイズにしておけば問題ないです。 メーカーサイト iTunes 開発したデータベースをiPadに転送するのに必要です。面倒な場合は、メールに添付したり、ドロップボックスからFileMakerGoで開いても大丈夫です。 ※キャンペーン中に購入したので2千円弱でしたが、正規でも3〜4千円です。バーコードリーダーを新たに購入すると考えたら安いもんじゃないでしょうか。 ■バーコードの基礎の基礎 バーコードリーダー対応の開発というと敷居が高くなる気がしますが、バーコード・リーダーがUSB接続であろうがBluetooth接続でろうが、機械としては「外付けのテンキーやキーボードみたいなもの」と考えると楽になります。 フォームなどの入力画面で、選択中のフィールド(入力欄)にテンキーやキーボードでタイプしたデータが入力されるのと同じで、タイプする代わりに「ピ」と読み込んだデータが、選択中のフィールド(カーソルのある位置)に流れ込みます。 「ピ」とやる直前に、流しこみたいところにフォーカス(カーソル)をJavasriptなどで当てておくことさえ注意できれば、WEBベースの開発にも活用できます。 この記事では、バーコード・リーダーのアプリにバーコードを読み込ませて、そのデータを入力させます。 また、雑誌や本以外に、備品などにバーコードを貼りたい場合は、バーコードそのものを作るとなると規格が複数あるので大変ですが、プリンタドライバの機能・Word・テプラなどの、データを渡すだけでバーコードにしてくれる機能を使って印刷(作成)するのが楽です。 主な流れ ボタンを押したらバーコードアプリが立ち上がり、バーコードを読んだ後、そのデータを返してくるようにする。 下記はいささか、くどいですが、スクリプトは合計で2行です。 具体的な流れ ■開発 新規データベースを作成する 普通にまっさらなDBを新規作成します。とりあえず"BarcodeTest"と名前を付けて保存します バーコード読み取り実行ボタンを作成する これも普通にフォームの編集でボタンを設置します。 読み取りボタン用のスクリプトを作成する フォームを編集状態のまま、上記で設置したボタンを右クリックで「スクリプト実行」から新規スクリプトを追加します。スクリプト名を"Open pic2shop app"にして下記スクリプトを記入します。実際には、スクリプト名はぶっちゃけ何でも構いません。 読み取ったデータを受け取り、そのデータを処理するスクリプトを作成する 上記の"Open pic2shop app"スクリプトがバーコードを読み取った後に実行するスクリプトを作成します。 まず、、スクリプト名を"Scan"にして、とりあえず(スクリプト引数で)受け取ったデータをダイアログ表示するスクリプを記述します。(下記参照) 実際には、この受け取ったデータをフィールドに入れたり、検索に使ったりします。 開発終了 DBを保存してFileMakerを終了しましょう。 "Open pic2shop app"の内容 「その他」の「URLを開く」で "pic2shop://scan?callback=fmp7script%3A//%24/" & Get ( ファイル名 ) & "%3Fscript%3DScan%26param%3DEAN" 上記は下記と同じで、URLエスケープしています。 pic2shop://scan?callback=fmp7script://$/BarcodeTest?script=Scan¶m=EAN 上記の内容ですが、"pic2shop://scan"の部分でバーコードリーダー・アプリである"pic2shop"にスキャンするようにリクエストしています。 これは、同じiOS(iPhoneiPad)内の別のアプリをリンクで呼び出す(リクエストする)URLスキームと言う手法です。パソコンのブラウザ上でiOSアプリのリンクをクリックするとiTunesが立ち上がることがありますが、同じ仕組みです。 具体的には、一般的なURLのプロトコル("http://"や"ftp://"のかわり)にアプリ名指定しするとアプリが呼び出されます。例えばリンクのURLを"music:///"にすると「ミュージック」アプリが起動します。 また、起動したアプリに情報を渡したい場合は、一般的なWEBサービス同様、クエリに渡したい情報(引数)を指定します。 ここでは"callback="以降で、実行後に読み取ったデータを返す先の情報を指定してクエリとして渡しています。 渡すのは、FileMakerGoのURLスキーマ("fmp7script://")、FileMakerGo内のDB名("BarcodeTest")、渡した後に実行するスクリプト名("Scan")、そして"param="でバーコード・アプリが読み込むバーコード・タイプ("EAN")を指定しています。 これらの引数はアプリごとに仕様が違うので、アプリの仕様にそって渡します。 FileMakerPro12+FileMaker Go12の場合 "pic2shop://scan?callback=fmp%3A//%24/" & Get ( ファイル名 ) & "%3Fscript%3DScan%26param%3DEAN" "Scan"スクリプトの内容 「その他」の「カスタムダイアログを表示」で "EAN=" & Get(スクリプト引数) ■DBのインストール iPadiTunesにつなげ、アプリ画面にある"FileMakerGo"に(1)で作成した"BarcodeTest.fp7"をアップロードして、iPadを取り外します。 iPad上で"FileMakerGo"を起動して登録されたDB("BarcodeTest")を選択し、おもむろにボタンを押します どうでしょう?簡単でしょ? 参考文献 Scanning barcodes from FileMaker Go