0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

rex0220 計算式プラグイン パフォーマンス改善(計算フェーズの無効化)

0
Last updated at Posted at 2026-02-20

rex0220 計算式プラグイン Ver.97 では、プラグイン設定画面で STEP1(基本計算)、TABLE(テーブル計算)、STEP2(再計算) の各フェーズを個別に無効化できるようになりました。

不要なフェーズをスキップすることで処理時間は短縮できますが、「計算の順序(ランク)」と「依存関係」を正しく理解していないと、意図した結果が得られないリスクがあります。

概要

テーブルの交通費を区分別に分けて集計する計算例を設定してみます。
テーブルの金額を区分別に合計します。
「計算処理1」を無効にすることで、計算処理回数を半分にできます。

  • 編集画面

2026-02-20_14h47_19.png

  • 各種設定: 「計算処理1」を無効

2026-02-20_14h57_45.png

  • 計算式設定

2026-02-20_14h46_33.png

  • 計算式
計算式プラグイン
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 を分ければ順序は保証されるが、パフォーマンス重視で片方を無効化するなら、設定者の高い理解が必要。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?