rex0220 計算式プラグイン Ver.97 では、プラグイン設定画面で STEP1(基本計算)、TABLE(テーブル計算)、STEP2(再計算) の各フェーズを個別に無効化できるようになりました。
不要なフェーズをスキップすることで処理時間は短縮できますが、「計算の順序(ランク)」と「依存関係」を正しく理解していないと、意図した結果が得られないリスクがあります。
概要
テーブルの交通費を区分別に分けて集計する計算例を設定してみます。
テーブルの金額を区分別に合計します。
「計算処理1」を無効にすることで、計算処理回数を半分にできます。
- 編集画面
- 各種設定: 「計算処理1」を無効
- 計算式設定
- 計算式
計算式プラグイン
APP: 交通費申請(手段別合計) (4113)
NOTE:
OPTION: 非同期計算, ユーザー情報
STEP: (計算処理1), 計算処理テーブル, 計算処理2
EVENT: 追加画面表示, 編集画面表示, 追加画面変更, 編集画面変更, 追加画面保存, 編集画面保存, 追加画面保存成功, 編集画面保存成功, プロセス管理アクション
// 合計金額 NUMBER (rank:-1)
SUM(
電車・新幹線合計,
バス・タクシー合計,
飛行機合計,
その他合計
)
// 電車・新幹線合計 NUMBER
SUMIF(
IN(交通手段,"電車(片道)","電車(往復)","新幹線(片道)","新幹線(往復)"),
金額
)
// バス・タクシー合計 NUMBER
SUMIF(
IN(交通手段,"バス(片道)","バス(往復)","タクシー"),
金額
)
// 飛行機合計 NUMBER
SUMIF(
IN(交通手段,"飛行機(片道)","飛行機(往復)"),
金額
)
// その他合計 NUMBER
SUMIF(交通手段="その他",金額)
解説
1. 【実践例】交通費申請アプリでの最適化
テーブル内の項目を直接集計し、その集計結果をさらに合計するケースを解説します。
【アプリ構成例:交通費申請(手段別合計)】
- STEP1(計算処理1):無効
- TABLE(計算処理テーブル):無効(テーブル内の各行に式がないため)
- STEP2(計算処理2):有効
設定されている計算式
すべてテーブル外の数値項目として設定されています。
項目位置とランク指定により、下記の順番で計算されます。
// 1. 各交通手段の集計 (STEP2で実行)
// 電車・新幹線合計
SUMIF(IN(交通手段,"電車(片道)","電車(往復)","新幹線(片道)","新幹線(往復)"), 金額)
// バス・タクシー合計
SUMIF(IN(交通手段,"バス(片道)","バス(往復)","タクシー"), 金額)
// 飛行機合計
SUMIF(IN(交通手段,"飛行機(片道)","飛行機(往復)"), 金額)
// その他合計
SUMIF(交通手段="その他", 金額)
// 2. 最終的な合計金額 (STEP2で実行 / rank:-1)
SUM(電車・新幹線合計, バス・タクシー合計, 飛行機合計, その他合計)
2. ここが重要!計算順序とランク指定
このアプリ例では、すべての計算を STEP2 に集約しています。このとき、以下の点に注意が必要です。
① フェーズを跨ぐ場合と、同一フェーズ内の違い
通常、交通手段別の集計 を STEP1 で行い、合計金額 を STEP2 で行えば、フェーズが分かれているため必ず「集計が終わってから合計」という順序が保証されます。
しかし、今回のように STEP1 を無効にし、すべて STEP2 で実行する場合、同一フェーズ内での計算順序が重要になります。
② ランク(rank)指定の役割
合計金額 の計算式には、他の項目の計算結果(電車・新幹線合計 など)が必要です。
そのため、合計金額 の ランクを -1(または他の項目より後の順番) に設定することで、「まず各手段を個別に集計し、その結果が出揃ってから最後に合計する」という正しい順序を担保しています。
[!CAUTION]
ランクや項目位置が不適切な場合
順番が逆になると、前回の計算結果(古い値)を合計してしまい、正しい金額が表示されない原因となります。
計算順序のイメージ(STEP2内)
[ランク: 規定(0)] 電車合計、バス合計、飛行機合計、その他合計 を算出
[ランク: -1] 上記4つの結果を SUM して「合計金額」を算出
※ ランクを -1 にすることで、同一フェーズ内でも必ず最後に計算されます。
3. 無効化設定を行うかどうかの判断基準
💡 処理時間に問題がなければ、無理に無効化しない
本機能はハイレベルな最適化オプションです。現在の動作速度にストレスを感じていない場合は、全てのフェーズを「有効」にしておくのが最も安全です。
⚠️ 無効化のリスク
- 計算漏れ: 後日、STEP1 に該当する新しい計算式を追加した際、無効設定を忘れると動作しません。
- 順序エラー: 上記の例のように、1つのフェーズに計算をまとめると、項目位置やランク指定のミスが計算ミスに直結します。
まとめ
- 集計結果をさらに計算(合計など)する場合、同一フェーズ内なら「ランク指定」で順序を守る。
- STEP1 と STEP2 を分ければ順序は保証されるが、パフォーマンス重視で片方を無効化するなら、設定者の高い理解が必要。


