🐱

FileMakerのcURL 光と闇と人生と

2022/12/06に公開約3,600字

はじめに

FileMaker使いのみなさん、今年1年いかがでしたでしょうか。
今年は Claris Engage Japan も開催されましたし、新しいナレッジは得られましたでしょうか?

私は今年はそんなことより、ハプニングバーもビックリの㌧でもない大ハプニングがFileMakerでありましたので、今回はそれをみなさんにご紹介したいと思います。後世に語り継いでいきたい... そんな熱い想いを胸に。

まぁぶっちゃけ今は、来年強制施行される

楽天SKUプロジェクト

とかいう一大イベントに、EC通販業界に身を置く者として戦々恐々してるんですけどね。どんだけ現ソリューションに改修をかけなぁアカンのやと...なのに仕様がまだ決まってない部分があったり、テスト環境も十分でなかったりと、もうね、現場を何だと思っt...

本題

FileMakerでv16から実装されたcURL
それまでは WEB API などを利用する際は、PHPを介してやったりとかなかなか面倒でした。URLから挿入 ステップは10年くらい前からありましたので、このステップでFileMaker Server側に用意しておいたPHPファイルを指定してAPI接続...ってなことを昔はやってたキヲクがあります。

何か...FileMaker API for PHP?だったか何だったか、もう脳デバイスから消えつつありますが、まぁ...色々面倒だったっていうね。
で、
v16から、そんなことせずにcURLが利用できるようになったんですが...

光があれば闇もまたある、そして場合によっては人生も詰みかける

そう、Claris FileMakerならね。

みなさんは、cURLはどんな時に使用していますか?
まぁ大抵はAPIを利用する時ですよねぇ、EC通販土方の私もそうです。モールのAPI仕様ドキュメントと睨めっこしながら、時には悪態をつきつつ実装しているんですが、手軽に出来るようになったのはやっぱりデカイですよね。

ところで、
cURLでサイトログインできることを知っていますか?えぇ、そうなんです。Web viewer にサイトを直接表示させてjsで自動ログイン、とかいう手法は割と知られていると思うんですが、結局のところ、リクエストしてレスポンスを貰うというHTTP(S)通信ですので、cURLでも当然できます。
※ただし、動的サイトなどで簡単に出来ない場合もあります クソッ ガッデム!

例えば、とあるサイトは(ダミーURL)

https://www.xxxxx.jp/xxxxx/login_xxxxx.php

このURLに、

$requestBody
login_email=(##ログインID##)&login_pass=(##ログインパスワード##)

と変数設定して、cURLオプションで

"-X \"POST\" "
&
"-d @$requestBody"

とすれば、ログインできます。

何らかの処理をさらに続けていきたい場合は、ログイン状態(セッション)を維持する必要がありますので、

"-X \"POST\" "
&
"--cookie-jar $cookieJar "
&
"-d @$requestBody"

として、
ログイン時にクッキー $cookieJar を取得しておき、以後の処理時にクッキーも一緒に投げるようにしていきます。

こうすることで、あたかもブラウザ上で操作しているかのように、cURLを用いて様々な処理を行っていくことが可能です。例えば、行いたい処理のAPIがサイト側に用意されていない...、またはAPIを一般公開してくれない...等々といった場面で、非常に強力な処理手段になります。ウェブスクレイピング等にも使えますね。

もちろんこれらは、従来の Web viewer を用いても可能ですが、レイアウト上にviewerオブジェクトを設置しておかないといけないという制約や、jsコマンドを駆使しなければならないという難しさからは開放されます。ただその反面、

どのURLにどういった情報をリクエストする必要があるのか

ということを、ブラウザのデベロッパーツール等で調べる必要はあります。
まぁこれはこれで大変なんですけどね、CSRF対策されてたりとか(
興味が沸いた方は、色々調べてみると面白いですよ。

諸々の理由でAPIが利用できない場面で、EC通販土方の私はこういったcURLの使い方をガッツリしていました、しかもサーバースクリプトスケジュールで。さらに2分毎に。ところが、

酷い・仕打ちは突然に

何から伝えればいいのか

サーバー、クライアント、共にv19(.5.2)にバージョンアップした(大人の事情でせざるを得なかった)時のこと。v19環境で稼働させていると、どうもこのcURLのスプリプト処理が正しく行えていないことが判明。記述の仕方は何も変えていないし、試しにクライアントの1台をv18に戻して処理させてみると問題は発生しない。

「???」になりながら詳細に調べてみると...

クッキーが取得できてねぇぇええええええ!!!!1111111

頭が真っ白になるとはこのことか!
v19にした途端に、cURLオプションの --cookie-jar が効かないんです、えぇ。変数にクッキーが格納されないんです。mjk...右手拳を握りしめ怒りに震えながらのコミュニティ投稿がコチラ

https://community.claris.com/ja/s/question/0D53w00005pRLu4CAG/curlオプションcookiejarcの挙動

これは大変重大な問題です。

何しろ社で取り扱っている商品の在庫更新等でこのcURLログイン手法を使っていましたので、それが完全に沈黙です チーン。社のEC通販ソリューションは、商品が24時間365日売れる関係で基本的にサーバーは年中フル稼働していますので、v19にバージョンアップするだけでも稼働を止める日、そしてその時間帯を慎重に見極めて作業しました。ですので、バージョンをまた落とすというのも止める日時の調整やら何やら本当に大変なことなのです。
眠らないソリューション、それがECシステム。

ヲィ、聞いてんのかClaris!キミに言tt...

と、言ってる間にも商品はドンドン売れていきますので、このままこの状況が続くと欠品⇒クレームで社が傾きかねない。かと言って在庫を「0」にすると、コロナ禍での大事な販売機会を失いこれまた社が傾きかねない。EC通販土方として下した判断は...取り急ぎcsvでの定期手動在庫反映。軽くシネル(シンダ)。

幸い早い段階で、このクッキーが取得できない問題の回避方法をパートナーさんから提示頂きました(※上記コミュニティの返答参照)ので、今こうやって私も社も生存しているんですが、あの時はぶっちゃけ人生詰んだと思いましたね。

Claris...
寿命が縮まったこのことは一生忘れねぇかんな...

そしてv19.6.1現在、
この --cookie-jar オプション問題は見事に解消されています。
さすがClaris様々やねぇ、めでたしめでたし。

かーらーのッ!

今度はまたcURLで別の問題が発覚し、またもや社が傾きそうな未来が見え隠れ。
それはまた別の機会に...

cURLの闇は深ぇぇ...深ぇなぁ...

こうしてまたFileMakerのcURLに翻弄される

おわりに

いかがだったでしょうか。
cURLの光と闇と人生は伝わったでしょうか。今となってはもう酒のネタですよ、えぇ。こんなことじゃあへこたれない。EC通販土方業界の闇はもっと深いんでね...

ただまぁ、
たかがcURL、されどcURL。便利になったものの不具合によっては、裏では人生が詰むような(社が傾くような)トラブルになることをClarisは理解して欲しい。上記不具合報告へ公式返答が何もなかったとか、その姿勢はどうなの?と問いたい。問いたい。問いたい。問いたい。
こちとらユーザーであってテスターじゃねぇんd...

まぁ...みなさんバージョンアップには罠がいっぱい気を付けて!
ある日突然地獄の門を開けてしまうことも...

それでは
Let's enjoy FileMaker!

Discussion

ログインするとコメントできます