第61回 計算式を理解しよう

おはようございます。こんにちは。こんばんは。
エヌ・ケイ・カスタマイズの泉です。

暑い日が続いてます。
私は奄美大島出身ですが、南国の奄美よりも福岡は暑いです!!
奄美のほうが空気がきれいなせいか、暑さの感じ方も全然違います!!
ただし、「日差し」の強さは奄美のほうが段違いで強いので、
奄美に旅行や出張した際は、ご注意ください^^
あっという間に真っ黒になりますよ♪

では、さっそく「計算式」について解説していきたいと思います。

計算式というと数学を思い出すかもしれません。
FileMaker の計算式は、普通の算術演算も可能ですが、
フィールドのデータを参照したり、関数を使って計算結果を導き出すことが主な目的です。

計算式をきちんと理解して使いこなすためのポイントをいくつか取り上げます。
「計算式」はカスタムApp の「論理」です。
レイアウト、フィールド、スクリプトなどのさまざまな箇所で
計算式に記述された論理に従った計算結果を導き出して機能を働かせます。

計算式は、主に[計算式の指定]ダイアログで記述します。
これまでのブログの中では、フィールドオプションや全置換などで表示されました。
「タスク」テーブルの「期限」フィールドのフィールドオプションで
入力値の制限を設定したときに、次の計算式を設定しました。

期限 ≥ Get(日付)

『タスクの期限は、今日以降の日付でなければならない』という論理です。
設定をおこなった結果、期限には昨日以前の日付は入力できなくなりました。
FileMaker Pro Advanced は論理を評価して計算結果を出します。論理は、

○ 関数や演算子を使って記述された式

です。なお。式は関数だけではなく、

○ 単純な四則演算(+ – ÷ ×)
○ フィールドのデータを使用した式

も可能です。結果によってカスタムApp の機能に影響をあたえます。
また、関数を使った計算式は、

○ 『 いまの』日付や時刻
○ ユーザのデバイスの種類
○ OS

などの対話的(インタラクティブ)な情報も計算結果として知ることができます。

ユーザが入力したフィールドのデータや別のフィールドの『いまのデータ』に応じて
レイアウト上に表示する内容を可変させたり、機能における取捨選択処理の判断をする、
などの動的(ダイナミック)な動作が必要な場合、計算式でその論理を記述することが多くなります。

計算式で解決できることは、とても沢山あります。
基本を理解しておくとカスタムApp 作成作業が一気にステップアップします。

計算式の評価

計算式は書いただけでは結果を得ることができません。
その式が実際に「評価」されることによって計算結果を得られます。
これを『計算する』『再計算する』と表現することもあります。

では、「評価」はいつ実施されるのでしょうか?

計算式と索引

「タイプ=計算」のフィールドのデータが評価されるタイミングについて考えます。
「タイプ=計算」のフィールドは索引が保存か非保存かで違います。

索引が非保存

索引が非保存だと評価した結果を保持しておけないため、そのフィールドの
データを参照(レイアウト上に表示するなど、そのフィールドを使用すること)するたびに
毎回計算式を評価し直しています。
つまり結果の値が評価されるタイミングは「参照時に常に」ということになります。

索引が保存

索引が保存の場合、一度評価が行われたらその結果を保持しておいて、
そのフィールドのデータが参照された時には保持している値を表示します。
つまり表示するだけでは評価されません。

索引の保存と再評価(再計算)

それでは、索引が保存の場合、いつ再評価されるのでしょうか。評価し直すタイミングと条件は以下のとおりです。

<タイミング>
計算式の中で使用されているフィールド(「被計算フィールド」とも呼びます)の値が変更された時
<条件>
・被計算フィールドが『同じテーブルのフィールドで、かつ索引を持つもの』の場合だけ
・Get ( 日付 )」や「Get ( タイムスタンプ )」などのインタラクティブな関数を使っていたとしても、
 日付や時刻が変化するに従って刻々とフィールド値が更新されない

 →フィールドを参照しているわけではないので、再計算のきっかけにならない!!

なお、「タイプ=計算」のフィールド以外の計算式の評価のタイミングは、
『それが必要とされるとき』
です。
FileMaker Pro Advanced は、計算式の評価のタイミングを最小限にする最適化をおこなって
パフォーマンス全体に影響を及ばさないように配慮されています。

まとめ

いかがだったでしょうか?

開発の経験とともに、「計算式」を利用する機会も増えてくると思います。
そんなとき、

『あれ? 計算式はあってるはずなのに、思ったタイミングで思った値に再評価されない』

なんて事象に遭遇することがあると思います。(私は頻繁にあります!!)
そんな時は、今一度、『計算式の評価』について確認してみてはいかがでしょうか?

それでは、次回もお楽しみに!!

Follow me!