FileMakerで開発していると、「このスクリプト引数、何を渡しているんだっけ?」と迷子になることはありませんか。開発の初期は単純なテキストやリストで済ませがちですが、プロジェクトが大きくなるほど、引数の中身が分かりづらくなり、変更もしづらくなっていきます。
この記事では、FileMakerのスクリプト引数を「JSONで統一する」というシンプルなルールを採用することで、設計をスッキリさせる方法を、できるだけ平易な言葉で解説します。
スクリプト引数がバラバラだと何が困る?
スクリプト引数の書き方がスクリプトごとにバラバラだと、次のような問題が出てきます。
- 引数の順番を覚えていないと、正しく渡せない
- スクリプト側で「GetValue」や「LeftValues」などの処理が増えて分かりづらい
- 後から引数を追加すると、既存の呼び出し元をすべて修正する必要がある
- 他の開発者が読んだときに意図が伝わりにくい
つまり、「スクリプトの再利用性」と「保守性」が下がってしまうのです。
JSONで統一するメリット
スクリプト引数をJSONで統一すると、次のようなメリットがあります。
- 「名前付き」で引数を渡せるので、中身が一目で分かる
- 引数の順番に縛られない(順番を気にせず渡せる)
- 引数をあとから増やしたり、減らしたりしやすい
- サブスクリプトとのやり取りがパターン化できる
- スクリプトデバッグ時に内容を確認しやすい
特に、チーム開発や長期運用するシステムでは、この「あとから楽になる」効果がとても大きくなります。
基本パターン:JSONSetElementで引数を渡す
FileMakerのJSON関数を使うことで、スクリプト引数を分かりやすく構造化できます。
例えば、顧客IDとモード(新規・編集など)を渡したい場合は、次のように書きます。
JSONSetElement ( "" ;
[ "customerId" ; 顧客::顧客ID ; JSONNumber ] ;
[ "mode" ; "edit" ; JSONString ]
)
この計算結果を「スクリプト引数」として渡します。ポイントは次の2つです。
- 空の文字列 “” からJSONを組み立てる
- キー名(”customerId”、”mode”)を分かりやすく付ける
これだけで、スクリプト側から「何が来るか」が一目で分かるようになります。
スクリプト側でJSONを受け取る方法
受け取る側のスクリプトでは、Get ( スクリプト引数 )でJSON文字列を取り出し、JSONGetElementで必要な値を取り出します。
Set Variable [ $json ; Value: Get ( ScriptParameter ) ]
Set Variable [ $customerId ; Value: JSONGetElement ( $json ; "customerId" ) ]
Set Variable [ $mode ; Value: JSONGetElement ( $json ; "mode" ) ]
こうしておくと、後から引数を増やしたいときも、JSONSetElementとJSONGetElementを1行ずつ足していけばよく、既存の引数を壊しません。
サブスクリプトにも同じJSONをそのまま渡す
サブスクリプトを多用する場合は、「基本的には引数JSONをそのまま渡す」というルールを決めておくとスッキリします。
Perform Script [ “顧客_更新処理” ; Parameter: $json ]
サブスクリプト側でも同じようにGet ( ScriptParameter )でJSONを受け取り、必要なキーだけ取り出します。これにより、システム全体で「引数はJSON」「中身の取り出し方も共通」という統一感が生まれ、読みやすさがぐっと向上します。
よく使う設計パターンの例
現場で使いやすいように、キー名をある程度パターン化しておくのもおすすめです。例えば:
"mode":処理モード(”new” / “edit” / “delete” など)"id":メインのID"layout":戻り先レイアウト名"script":戻り先スクリプト名"option":オプション的なフラグ(true/false など)
あらかじめ「よく使うキー名リスト」をチーム内で決めておくと、どのスクリプトでも同じような引数構造になり、理解しやすくなります。
既存システムへの導入のコツ
すでに稼働中のシステムにいきなり全てJSONを導入するのは難しいので、次のようなステップをおすすめします。
- 新しく作るスクリプトからJSON引数を採用する
- 改修のタイミングで、関係するスクリプトの引数だけJSON化する
- よく使われる共通サブスクリプトから順にJSON化していく
少しずつでも「新しい書き方」を混ぜていくことで、無理なくJSONベースの設計に移行していけます。
まとめ:ルールを1つ決めるだけで、設計が楽になる
FileMakerのスクリプト引数をJSONで統一するポイントは、次の通りです。
- 引数は必ずJSONで渡す(JSONSetElementを使う)
- スクリプト側ではJSONGetElementで値を取り出す
- サブスクリプトにも基本は同じJSONを渡す
- よく使うキー名はパターン化しておく
ほんの少し記述は増えますが、その代わりに「読みやすさ」と「変更のしやすさ」が大幅に向上します。長く使うシステムほど、この差が効いてきますので、ぜひ次のプロジェクトから取り入れてみてください。