コードをシンプルに。Safe Navigation Operator(?.)の使い方と実務での注意点
Rewa Tech
技術コラム
システム開発
SalesforceのApex開発において、多くの人が直面するのがNullPointerExceptionのエラーです。
本記事では、このエラーを回避できる「Safe Navigation Operator(?.)」の活用法を紹介します。
複雑なif文によるNullチェックが不要になるため、コードの視認性向上とバグの抑制が期待できます。
「NullPointerException」と従来の対策:
Salesforceで開発を行う際、フローではカバーできない複雑な処理にはApexコードが使われます。
しかし、私を含め、多くの開発者が一度は遭遇し苦しめられるのが「System.NullPointerException」です。
これは中身が空(Null)の変数に対して、値の取得やメソッドの実行した際に発生するエラーを指します。
このエラーが起きると処理が強制終了するため、これまではif文や三項演算子による対策が必須でした。
データが存在するかどうかを事前に判定し、空でない場合のみ処理を進めるという実装方法です。
結果としてコードの行数が無駄に増えてしまい、数ヶ月前の自分が書いたコードが読めなくなる課題を抱えていました。
2文字で解決する「?.」の仕組みと具体的なコード例:
こうしたコードの複雑化を解決してくれるのが、「Safe Navigation Operator(?.)」という演算子です。
使い方はシンプルで、オブジェクトの変数の後ろにあるドット(.)の前に疑問符(?)を付けるだけです。
何重にもネストしていたif文のNullチェックが、この演算子を使うことで1行にまとまります。
コード例1:深くネストしたNullチェックを1行にまとめる場合
// 従来の書き方(取引先 ➔ 担当者 ➔ メールアドレス と深く参照するほどネストが深くなる)
String email = null;
if (acc != null) {
if (acc.MainContact__c != null) {
email = acc.MainContact__c.Email;
}
}
// 「?.」を使った書き方(途中のデータがNullでもエラーにならず、1行に集約)
String email = acc?.MainContact__c?.Email;
コード例2:文字列操作などのメソッドを呼び出す場合
String text = getSomeText(); // Nullが返る可能性がある処理
// textがNullなら大文字変換は実行されず、エラーを起こさずに全体としてNullを返します
String upperText = text?.toUpperCase();
上記コード例のように、項目値の参照だけでなくメソッド呼び出しの場面でも使用することができます。
エラーを回避する際の注意点と実務における使い分け:
便利な演算子ですが、「本当にNullのまま処理を流していいのか」を見極める視点も必要です。
データが空のまま処理が続くと、後続の必須処理で予期せぬデータ不整合を引き起こすリスクがあります。
エラーをあえて発生させて処理を止めるべきか、Nullのまま流すべきか、実務に応じた使い分けが重要です。
例えば、売上金額の計算や契約のステータス更新など、基幹データに関わる重要な処理ではエラーで止めるべきです。
値が欠落したまま処理が進むと、後からデータの不整合に気づいたときの修正が非常に困難になります。
この場合は「?.」を使わず、しっかりとif文で例外処理を行う設計にするのが安全です。
一方で、画面に表示するだけの補足情報などであればNullのまま流しても問題ありません。
情報が欠けていても全体のビジネスロジックは破綻しないため、システムを強制終了させる必要がないからです。
Safe Navigation Operator(?.)を活用して効率的なApex開発を:
Apexコードにおける「Safe Navigation Operator(?.)」の使い方と、実務での注意点について解説しました。冗長なif文を減らすだけで、コードの見通しが良くなり、日々のメンテナンスも楽になります。ただ便利な機能として使うだけでなく、業務の重要度に合わせて「処理を流すか止めるか」を判断することが大切です。
ちょっとした構文の工夫を積み重ねることで、開発者にとってもユーザーにとっても扱いやすいシステムに近づきます。
それ、サンブリッジなら実現できます!
Salesforceで解決するビジネス課題
【ダウンロード資料】Salesforce導入・開発を検討されているお客様必見
数あるSalesforceベンダー企業のなかから、サンブリッジが選ばれる理由はなぜか。課題別にどんなソリューションがあるのかといった観点で、実際にサンブリッジが対応した事例やご利用企業様からの評価などをご紹介します。(全16ページ)