問題
マルチテナント環境で開発する場合、開発者がガバナ制限に達するのを避けるために使用すべき戦略はどれですか。2つ選びなさい。
- コレクションを使用して、最低限必要な項目だけでなく、関連するオブジェクトのすべての項目を保存する。
- Apexクラス内の変数を使用して、大量のデータを保存する。
- SOQL For ループを使用して、多数の行を返すクエリから取得したデータを繰り返し処理する。
- Limitsクラスのメソッドを使用して、ガバナ制限を監視する。
正解
- コレクションを使用して、最低限必要な項目だけでなく、関連するオブジェクトのすべての項目を保存する。
- Apexクラス内の変数を使用して、大量のデータを保存する。
- SOQL For ループを使用して、多数の行を返すクエリから取得したデータを繰り返し処理する。
- Limitsクラスのメソッドを使用して、ガバナ制限を監視する。
解説
それぞれの選択肢の理由について説明します。
□ コレクションを使用して、最低限必要な項目だけでなく、関連するオブジェクトのすべての項目を保存する。
これは不正解です。コレクションを使用することは良い実践ですが、関連するオブジェクトの「すべての項目」を保存するのは無駄が多く、ガバナ制限に達する原因となる可能性があります。代わりに、必要なデータのみをコレクションに格納するべきです。これにより、ヒープ制限に達するのを避け、メモリを効率的に使用することができます。
□ Apexクラス内の変数を使用して、大量のデータを保存する。
これは不正解です。Apexクラス内の変数に大量のデータを保存することは、ヒープサイズのガバナ制限に達するリスクを高めます。代わりに、データを必要とする時点で、必要最小限のデータのみを取得するように処理を行うべきです。
□ SOQL For ループを使用して、多数の行を返すクエリから取得したデータを繰り返し処理する。
これは正解です。SOQL For ループは、取得したデータをバッチで処理することを可能にし、メモリの消費を小さく抑えることができるため、ガバナ制限に達するのを防ぎます。これはSalesforceのベストプラクティスの一つです。
□ Limitsクラスのメソッドを使用して、ガバナ制限を監視する。
これは正解です。Limitsクラスを使用すると、現在のトランザクションでどの程度のガバナ制限に達しているかをリアルタイムで監視することができます。これにより、開発者はリソースの消費を管理し、ガバナ制限に達する前に適切なアクションを取ることができます。
コメント