見出し画像

[Spring '25] 気になるリリースをピックアップ 〜 「Apex での動的な数式の評価」がGAになりました

こんにちは遠藤です。

Spring '25リリースノートからの気になる機能のピックアップです。
今回、私はApexのリリースから「Apex での動的な数式の評価」がGAとなったので、改めて取り上げてみました。

「Apex での動的な数式の評価」はSpring'24 で開発者プレビューでリリースされており、その際のリリースノート輪読会でも取り上げています。

今回のリリースノートを改めて参照して気がついたことですが、その後Summer '25にてベータリリースされたのと同時に、getReferencedFieldsメソッドがFormulaInstanceクラスに追加されていました。

getReferencedFieldsメソッドは強力で、FormulaBuilderで生成した数式が参照している項目のリストを返してくれます。
このメソッドが無いと、FormulaBuilderで生成する数式で使用する項目とSOQLでSELECTする項目をそろえるためには実装で工夫する必要があります。標準的なやり方が示されたのはうれしいですね。

以下リリースノートに掲載されているサンプルです。
SOQLを構築している行に注目するとgetReferencedFieldsが返す項目を連結した文字列をSELECTに指定しています。

Account myAcc = new Account(Name='123');
FormulaEval.FormulaInstance ff = Formula.builder()
       .withType(Schema.Account.class)
       .withReturnType(FormulaEval.FormulaReturnType.STRING)
       .withFormula('name & " (" & website & ")"')
       .build();

//Use the list of field names returned by the getReferenced method to generate dynamic soql
String fieldNameList = String.join(ff.getReferencedFields(),',');
String queryStr = 'select ' + fieldNameList + ' from Account LIMIT 1'; //select name, website from Account
Account s = Database.query(queryStr);
system.debug(ff.evaluate(s));

この機能はとくに管理パッケージ開発者に取っては嬉しい機能です。オブジェクトの項目は削除できても登録者組織に残ってしまう問題がありますので、参照のみの数式項目は今後メタデータとして定義する必用がなくなりバージョンアップの問題が多少軽減されるかもしれません。