jeyseni's diary

「ジェイセニ」と呼んでください。批判ではなく提案をするのが生き甲斐です。

ファイルメーカーでAPIにやっと挑戦--まずお決まりの郵便番号からの住所取得

ファイルメーカーを使い続けて早や30年。すべて自分のためのDXに使い続けてきたので,エラー処理すら加えることもなく,ただひたすらリレーショナルナルをつなぎ,ただひたすらloopスクリプトを回し,さまざまな処理を自動化してきた。ファイルメーカーで唯一できない正規表現処理も,複数のプラグインを試してある程度実現してきたが,最終的には総当たりループで時間を掛けてでも確実に処理する方法に落ち着いている。時間はかかっても,なるべくブラックボックスにしたくなかったからである。

 ただ,いろいろ試していまだに実現していないのが,電車料金計算である。あらゆる駅は無理なのだが,せめて関東一円の約5000駅の間のデータベースが作れないかと模索してきた。5000駅をリストアップし,5000駅×5000駅のレコードを用意し,その駅ペアを1つずつYahoo路線情報に投げ,Webビューアで表示し,HTMLを取得してから料金を取り出す,というロジックでループを回したが,Webビューア表示にある程度の時間が必要なこともあり,丸1日動かしても5%ぐらいしか取得できなかった。さらに取得エラーもかなりの頻度で発生した。

 かりに数日かけてこのループを回し続けることはできなくはなかったが,考えてみれば電車料金は毎年のように変わる可能性があり,そのたびにデータベースを作り変えるというのは現実的ではないと判断した。

 一方で,多くの鉄道では距離に応じて料金が決まることから,各駅間の距離をデータベースとして登録しておけば,料金テーブルさえ変更すれば改定に一気に対応できると考えた。しかし,鉄道会社ごとにこの距離の基準は異なる。とりあえず地元電鉄のデータベースは作ったものの,考えてみればターミナル駅と最寄り駅以外はほとんど利用することもなく,利用価値がないことに改めて気づいた。まあ,データベース作りの満足度は高かったが,役に立たない代物になってしまった。

 スマホでは,今の自分の場所を知るためにさまざまな挑戦をし,最終的にはmacrodroidというスクリプトアプリと逆ジオコーディングという手法で,YahooマップのAPIを使って住所を取得することを実現していた(逆ジオコーディングはYahooで満足のいく出力ができた--求めていた“住所読み上げ耳ナビ”をMacrodroidで完成 - jeyseni's diary 2024/11/21)。しかしこのAPIを使うやり方はなかなか抵抗があり,パソコン上ではまだ実施したことがなかった。WebビューアとMBSプラグインでかなりのことを無理やりにでも実現できてきたからである。逆に,標準で使っているファイルメーカーのバージョンが古くなり,APIを使った処理に対応していなかったことも,手を出さなかった理由でもある。

 そして,いよいよファイルメーカークラウド化,サブスクリプション化する,という昨年の段階でパッケージ版の最後と言われていたFileMaker 2023を購入(その後,2024もパッケージで販売された)。ただこれまでと違って,データベースごとに別ウインドウが開くという仕様や,スクリプトエディタの作りがかなり変わったことに抵抗があって,あまり利用してこなかった。ただ,Webビューアが以前のバージョンだとInternet Explorerベースであったため,うまく開かないサイトがあったため,これを解消するために2023もインストールして評価を進めている(ただし,メイン使いはやはり古いバージョンの方が使い勝手がいい)。

 しかし,ファイルメーカーAPIをどう使うのか,いやそもそもAPIとかWebAPIとか,何のことだか理解できていなかった。このAPIを使うためのスクリプトステップが追加されていることも初めて知り,その使い方を知ろうと,まず郵便番号から住所を取得する,というサンプルスクリプトから試してみた。

 これがまず,Claris Connectの登録から始めなければならないということが分かり,四苦八苦してしまった。指導書代わりのWebサイトを見ながら1行ずつ修正していっても結果を取り出すことができない。最終的には,書かれていたスクリプトが間違っていたということが分かり,自分なりに修正して住所取得に成功した。

 次に,為替レートを取得できないか,という課題を試してみることにした。今回は,Claris Connectを使わずに相手サイトに直接つなぎ,結果を取得する方法を採用した。意外にもフリーで使えるAPIの場合,いろいろと利用範囲に制限があり,ベストなデータを取得できなかったが,WebAPIで投げるURLをファイルメーカーで関数およびスクリプトと変数で組み立てるという流れになる(だろう)ということがようやく理解できてきた。途中に「?」や「&」が入るルールのようなものも少しずつ理解できるようになってきた。

 次はgoogle calendarとのAPIリンクに再挑戦してみたいと思っている。