【Apex】Javaのプロパティファイルみたいに定数を外出しする方法
コードの中に設定情報などをベタ書きしてしまうと、その情報が変わった際にコードの書き換えはもちろん、コンパイルや再リリースが発生してしまいます。
今回Apexクラスの改修依頼を受けたのですが、エラーが発生した際に管理者宛てにメールを送信する機能があって、そのメールアドレスがベタ書き・・・。メールアドレスは変更が予測できるので、こういった情報は是非コードの外に追い出してほしいですね。
では、どのようにして定数を外出しするか?
JavaだとPropertiesファイルを作ってそこに定数を書いていきますが、Salesforceではカスタム表示ラベルを使います。
設定のユーザインターフェースにあります。

エラー発生時にメールを送信する例だと、こんな感じのカスタム表示ラベルを作成します。

これをApexで読み込む時はこう書きます。
System.Label.errorSendMail |
errorSendMailの部分がカスタム表示ラベル名です。この結果としてカスタム表示ラベル値(xxxx@gawatari.com)を取得できます。
もしメール宛先の変更が必要になった場合には、このカスタム表示ラベル値を変えてあげればOKです。コードを変更する必要はありません。運用に優しいコードになりますね。
ちなみに宛先メールアドレスが複数ある場合、カスタム表示ラベルをerrorSendMail1、errorSendMail2、errorSendMail3・・・と作っていってもできますが、例えばカスタム表示ラベル値にカンマ区切りで複数メールアドレスを書いておきます。
xxxx@gawatari.com,yyyy@gawatari.com,zzzz@gawatari.com |
これをApex側で読み込む際、カンマをキーとしてsplitしてあげれば複数メールアドレスのリストを取得できます。
1 2 |
String mail = System.Label.errorSendMail; List<String> mailList = mail.split(','); |
これはもちろんカンマで区切るというルールのもと開発した場合の例なので、カンマで区切れば複数の値を保持できるということではないです。誤解のないように・・
いずれにしてもカスタム表示ラベルをうまく使って、ちょっとしたことで開発が必要になるような処理にならないよう心がけたいですね!