5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

FileMakerAdvent Calendar 2020

Day 22

【FileMaker】WebAPIを実装するときに心掛けていること

Last updated at Posted at 2020-12-25

今年はなんとWebAPIの実装が多かった年でしょう!
というくらい、WebAPIに始まり、WebAPIに終わると言っても過言ではない今年でした。

どんなWebAPIを使ったの?

Google GMail API
Google Calendar API
スマレジAPI
郵便番号API
Rakuten Rapid API
Rakuten API
こんなところでしょうか。。。
(ぐったり)

何を頼りに作ったの?

OAuth2.0入門書は必読です。
その名も、「OAuth徹底入門
768ページあります。
ボリューミーですが、OAuth2.0の隅から隅まで書いてあります。

あとは、上記WebAPIのサイトです。
英語のページは技術英語なのでなんとなく理解できますし、もしわからない場合は、Chromeの自動翻訳(これがまた滑らかな翻訳!)で乗り越えました。

しかし、サイトではFileMakerで作ることを前提にはしていないので、とにかくcurlとJSONでやるにはどうするか、を中心に読み解きました。

何かコツってあります?

コツというか、とにかく以下の3点に限るな、と思いました。
1.定数はカスタム関数化せよ
2.処理はカプセル化せよ
3.エラー情報保存必須の法則

1.定数はカスタム関数化せよ

とにかくスクリプトへのベタ書き厳禁です。
外部接続なので、接続先のURLやパラメータが変わった場合、いちいちスクリプトを直さないといけません。
ベタ書きを全てのスクリプトで修正するなんて、途方もないことをやりたくないので、定数やURLは極力カスタム関数で定数化しておきます。
JSONのキーなども定数化しておくと、綴りを間違わずに済みます。

2.処理はカプセル化せよ

狭義の「カプセル化」は、処理(メソッド)と変数(データ)などをセットにして考えますが、FileMakerでは狭義の意味で使うとかなりしんどいので、擬似的にカプセル化します。

ロケットを発射する時を考えてください。
ロケット台から発射しますよね?
海の底から発射するのはサンダーバードくらいに止め、FileMakerからロケットを飛ばす(外部接続)ときは、極力ロケット台を限定します。

つまり、外部接続をするユーティリティスクリプトを、一つのフォルダにまとめておくのです。
API接続のcurlを書くのは、ここだけ、と決めるのです。
他のスクリプトからは、このユーティリティフォルダにある外部接続スクリプトを呼ぶようにします。

3.エラー情報保存必須の法則

外部接続する、ということは、FileMakerだけで解決できないエラーが発生する可能性が高くなる、ということです。
とにかく、エラーは拾えるだけ拾っておきましょう。
エラーを解決するのに実装するのは以下の2つです。
・直前に出たエラーを保存
・curlで外部接続をした際の構文の履歴

直前に出たエラーは、直接原因がわかればこれだけで済みます。
しかし、その前に投げたcurlが原因だったかもしれません。
なので、curlで飛ばした構文も履歴として残しておくように一つテーブルを作って蓄積させたり、ログに吐き出したりしておきます。
これだけでかなりエラー解析が楽になるはずです。

他に追加するTipsはありますか?

1.JSONはJSONで処理せよ

curlで受信する情報は、JSONであることが多いです。
なので、JSONがなんとなく苦手だから、、、とFileMakerで改行区切りのパラメータでスクリプト間でやりとりをする、というのは、改行区切りをJSONに直したりする処理が増えてしまうのがネックです。
ネック、というのは、パラメータをJSONに変換するコストやメンテナンスが発生した時の労力や時間のコストの部分になります。
JSONを扱うなら、スクリプトの引数などもJSONでやりとりをした方が処理的に変換が少なく済み、また、スクリプトの作りに統一感が生まれ、メンテナンスがしやすくなります(これ大事)。

2.仕様をまず読め

サイトのサンプルだけを動かすだけでFileMakerに実装していくのは危険です。
どんなエラー(落とし穴)があるかわかりません。
OAuth2.0を扱うならOAuth2.0の仕様を、RESTFul APIならその仕様を、独自のWebAPIならそのサイトで公表されているヘルプやドキュメントをじっくり読んで実装しましょう。
FileMakerだけで解決しないことが多いことだからこそ、FileMakerのこと以上に読み込んでおく必要があると思います。(>自戒)

3.回避できないエラーがあることを忘れるな

空から降ってくるエラーは、天変地異のようなものです。
絶対ゼロにはできません。
「エラーが絶対起こらないシステム」を目指すのではなく、「エラーが起こった時の処方箋を用意しておくシステム」を目指していきましょう。

外部接続ありきで実装するFileMaker

昨今のFileMakerは、様々な世界とつながれるようになりました。
外部接続をすることが多くなって世界が広くなるということは、それだけFileMakerの作りも外部接続ありきで実装し、改修のしやすさをさらに仕込んでいくと、後々のメンテナンスで「あの時の自分、ありがとう」と感謝されると思います。

では、来年もいろんなAPIに出会えますように。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?