6
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?

【FileMaker】グローバル変数を見失わないために

Last updated at Posted at 2023-12-01

FileMakerのスクリプトを作成する際、グローバル変数をそれぞれのスクリプトの中で値をセットすると、思った以上にミスしたりバグが潜んだりします。
例えば、

  1. グローバル変数名を間違える(1文字間違えるとか!)
  2. どこでグローバル変数が変更されているか分からない!
  3. 同じ目的のグローバル変数が新たに現れる

のように、いたちごっこのようにバグ潰しに労力が掛かってしまいます。

これを防ぐために、私はグローバル変数に値を保存するスクリプトと取得するスクリプトをセットで作っています。
割と同じようにグローバル変数の取り扱いをしているFileMaker屋さん、多いかも、と思います。
以下を読んで「あ、私と同じだ!」と思ったら「♡」のいいねボタンをポチッとよろしくお願いします!
「知らんかった!」「真似してみよう!」と思う方も、ぜひいいねボタンをポチッとよろしくお願いします!

では、ここからが本題です。

setter/getterのスクリプト名

例えば、マスタデータから選択した番号などを別のレイアウトや処理で使うためにグローバル変数を用意したとします。
そして、setG<グローバル変数名>とgetG<グローバル変数名>というスクリプトを作成します。

スクリーンショット 2023-12-01 10.09.01.png

setの末尾にあるカッコは、スクリプト引数です。
getの最初にあるカッコは、スクリプトの結果です。

setter/getterの中身

setter

setterの中身は、基本的な処理はさらっと1行です。
この例で言うと、1行目の処理がメインです。

スクリーンショット 2023-12-01 10.09.50.png

ただし、setterでは、不適切なセットが行われないよう、1行だけではなく、if文などのチェックを実装することもあります。
というか、しておいた方がいいです。

チェックを入れた例です。

スクリーンショット 2023-12-01 10.13.09.png

もちろん、setterを呼ぶスクリプトの中で、setterの前にチェックを入れてもいいのですが、同じグローバル変数にセットする値の範囲が同じ場合は、何度も同じif文を複数のスクリプトに書くのは面倒だし、そうした処理の分散(重複)にもつながるので、setterでまとめてやった方が効率がいいケースになります。
スクリプトから返す結果のエラーコードは、現場によってさまざまだと思いますので、ここでは仮に、

0:正常終了
9:異常終了

としておきます。
エラーコードを間違えないように、エラーコードをカスタム関数化しておくのもおすすめです。

getter

getterの中身も、さらっと1行です。
スクリーンショット 2023-11-30 18.25.31.png
こちらは、何かしらのチェックを施す必要は特にないかな、と思っています。
setterでセットされた値をそのまま返す、、、ということになります。

使ってみる

では、このsetterとgetterを使うと、どんな感じの実装になるでしょうか?

setterを使ったスクリプト

スクリーンショット 2023-12-01 10.16.24.png

getterを使ったスクリプト

スクリーンショット 2023-11-30 18.57.43.png

setterでは、返ってきたスクリプトの結果で、エラーがないかどうかを必ずチェックします。
適宜エラー処理をしますが、運用に沿って実装してみてください。

ご利用は計画的に。。。

6
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
6
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?