Apexのデバッグで役に立つ2つの手法

技術コラム

Hidenobu Kojima

Apexのデバッグで役に立つ
2つの手法

Hidenobu Kojima

いつもご愛読いただきありがとうございます。

今回は、Apexのデバッグで役に立つ2つの手法を説明させていただきます。

  • Apexでデバッグ文の出力を制御する方法
  • ApexでSOQLの発行回数を確認する方法

Apexでデバッグ文の出力を制御する方法

Apexでデバッグ文の出力を制御する方法について、説明させていただきます。

Apexで開発を行う場合、以下のようにデバッグ文を記述して、テストを行うのはよくあることだと思います。

System.debug('Hello World!')。

しかし、開発したプログラムを本番環境にリリースする際には、どうしていますか。

デバッグ文を削除してから、本番l環境にリリースしている方も多いのではないでしょうか。

では、本番環境で不具合が発生した場合は、どうでしょうか。

エラーの原因がわからない場合、再度デバッグ文を追加して、調査を行うようなこともあるのではないでしょうか。

本番環境で不具合が発生した場合、緊急で対応する必要がありますが、デバッグ文を追加して再度リリースするとなると、プログラムチェックやリリース許可が必要となり、結果、不具合対応に時間がかかってしまうことにもなりかねません。

そこで、本章では、デバッグレベルを指定して、デバッグ文を出力する方法をご紹介させていただきたいと思います。

デバッグレベルをデバッグ文の記述にデバッグレベルを追加することにより、デバッグログの出力を制御することができます。

デバッグログの出力時に、Apexで措定できるデバッグレベルは、以下の8種類となります。

 

デバッグ文でデバッグレベルを指定する場合の構文は、以下の通りです。

System.debug(デバッグレベル, 'Hello World!');

指定するデバッグレベルは、以下の値で指定します。

※以下の値は、累積になります。

  •  Logginglevel.WARNを指定すると、デバッグログのログレベルで、「警告」から「最も詳細」を指定した場合に、デバッグログが出力されます。
  •  Logginglevel.DEBUGを指定すると、デバッグログのログレベルで、「デバッグ」から「最も詳細」までを指定した場合に、デバッグログが出力されます。

 

 

例えば、エラーが発生した時のみ、デバッグ文を出力したい場合は、以下のように記述して、デバッグログのログレベルで、「エラー」を指定します。

System.debug(Logginglevel.ERROR, 'Hello World!');

また、以下のように、なしを指定すれば、デバッグ文が出力されることはなくなります。


System.debug(Logginglevel.NONE, 'Hello World!');

以上のように、デバッグ文にデバッグレベルをあらかじめ指定しておけば、デバッグログのデバッグレベルを切り替えることにより、デバッグ文の出力を制御することができます。

デバッグログの出力時に、デバッグレベルを指定できるため、不具合調査時に、デバッグ文を入れて再度リリースするというような作業が不要になりますので、ぜひ試してみてください。

ApexでSOQLの発行回数を確認する方法

Apexでよく発生するエラーに「Too many SOQL queries」があります。

SOQLの発行回数が、ガバナ制限を超えた場合に発生するエラーです。

このエラーを回避するためには、SOQLの発行回数を削減するしかありません。

※非同期にするという方法もあります。

しかし、複雑なプログラムの場合、どこでSOQLを多く発行しているかの調査に時間がかかったりします。

その際に役に立つのが、「Limits.getQueries()」です。

「Limits.getQueries()」を使用すると、その時点でのSOQLの発行回数がわかります。

各メソッドの最初と最後にデバッグ文を記述しておけば、どのメソッドで、SOQLを多く発行しているのかがわかるのです。

きっと、「Too many SOQL queries」エラーの解消に役立つことでしょう。

デバッグ文で「Limits.getQueries()」を記述する場合の例は、以下の通りです。

System.debug('メソッド名:Start:SOQL発行回数 = ' + Limits.getQueries());
・
・
・
System.debug('メソッド名:End:SOQL発行回数 = ' + Limits.getQueries());

デバッグ文を出力する際に、追加するだけですので、使用してみてください。

最後に

本記事では、Apexのデバッグで役に立つ2つの手法についてご紹介させていただきました。

サンブリッジでは、構築から運用・保守、技術支援サービスまで、さまざまなサービスを提供しています。

「既存の環境を改修したいが対応できる人がいない」「もっとSalesforceを活用したいがどの機能から手を付けてよいかわからない」などお困りの際は、ぜひ、サンブリッジにご相談ください!

最後までお読みいただきありがとうございました。

Salesforce導入・活用支援のご案内

サンブリッジが提供するSalesforce導入・活用支援サービスは、お客様の現状の業務用件や目指すゴールをヒアリングし、システム設計から実装までを行います。
導入後のトレーニングまでを含むきめ細やかなサービスを一貫して実施することにより、Salesforceの活用向上と導入の効果を最大化します。

関連記事