Skip to main content
Scheduled Maintenance: Trailhead, myTrailhead, and Trailblazer Community will be offline January 17, 16:00–20:00 UTC. Thanks for bearing with us as we update your experience!

ApexGuru で Apex コードを最適化する

学習の目的

この単元を完了すると、次のことができるようになります。

  • ApexGuru を使用して、Apex コード内のアンチパターンやパフォーマンスのボトルネックを特定する。
  • ApexGuru が提供するインサイトを解釈し、パフォーマンスと効率を向上させるために Apex コードを最適化する。
  • ApexGuru のアクション可能な推奨を適用し、Apex コードの品質と保守性を向上させる。

次に、ApexGuru が開発ワークフローに大きな効果をもたらす活用例を紹介します。

Apex コードでのメタデータ取得を最適化する

状況:

あなたは、大規模企業向けに大幅なカスタマイズを含む Salesforce アプリケーションを開発しています。このアプリケーションでは、実行時にさまざまなカスタムオブジェクトのメタデータ情報を動的に取得する必要があります。ところが、アプリケーションの規模が拡大するにつれて、メタデータ取得メソッドの効率が悪いためにパフォーマンスが著しく低下していることに気づきます。

元のコード:

ApexGuru で提案された推奨コード:

ApexGuru の推奨に基づいてメタデータ取得メソッドを最適化することで、CPU 時間の消費を削減し、メモリ負荷を軽減し、Salesforce アプリケーションの全体的な効率とスケーラビリティを向上させることができます。

取引先責任者と関連付けられた ToDo を取得する

状況:

あなたは、顧客関係の管理に関わる Salesforce プロジェクトに取り組んでいます。プロジェクトの一環として、取引先責任者と関連 ToDo を表示するダッシュボードを作成する必要があります。ところが、取引先責任者に関連付けられた ToDo を取得する現在のメソッドでは、特に大規模データセットを扱うときにパフォーマンスの問題が発生しています。最大 10 件の取引先責任者を取得し、それに関連する ToDo を取得するメソッドを見てみましょう。

元のコード:

ApexGuru で提案された推奨コード:

sObject のリストを SOQL クエリの ID 項目の IN バインド条件に使用すると、Apex は sObject のリストを文字列として変換します。これは、WHERE 句の長さが最大文字数制限である 4,000 を超えていないかどうかを確認します。sObject に多くの項目がある場合でも、文字列変換のコストは無視できないレベルで発生します。すべての項目は、sObject のインスタンスのハッシュコード計算時に評価されます。

オブジェクトからレコードと件数を取得する

状況:

あなたは、セールスオペレーションの Salesforce ソリューションの開発を任されました。要件の 1 つは、特定の条件に基づいて高価値取引先をカウントすることです。ただし、レコードを取得し、その数をカウントする現在のアプローチは効率が悪く、アプリケーションのパフォーマンスに影響を及ぼしています。次の例では、セールスオペレーションに関連するさまざまなデータを保存するカスタムオブジェクト Custom_Object__c があるシナリオについて考えます。このオブジェクトからレコードを取得し、高 ACV 取引先の件数をカウントする必要があるとします。

元のコード:

ApexGuru で提案された推奨コード:

ApexGuru の提案した変更では、不要な項目 (Sales_Region__c) が削除されています。これにより、クエリのフットプリントが削減され、パフォーマンスが向上します。この変更は、SOQL クエリではビジネスロジックに必要な項目のみを選択することを推奨するプラクティスに沿っています。

進行中の商談を取得する

状況:

あなたは、進行中の商談をすばやく特定したい営業チームのために Salesforce アプリケーションを開発しています。ただし、進行中の商談を取得する現在のメソッドは効率が悪く、特にデータセットが増えるにつれてアプリケーションのパフォーマンスに影響を及ぼしています。

元のコード:

ApexGuru で提案された推奨コード:

このクエリの否定条件は、データベースでの処理の効率が低下する可能性があり、この SOQL は非選択的になります。代わりに、IN を使用する肯定条件はインデックスを活用するため (項目がインデックス付けされる場合)、実行速度が向上します。ApexGuru はアンチパターンを特定し、肯定条件を推奨します。ただし、ApexGuru は項目が取り得るすべての値にアクセスできないため (現時点)、このアンチパターンに対してコードレベルの修正を確実に生成することはできません。StageName がほかに取り得る値が 'Open' のみであると仮定すると、この SOQL は上記のように最適化できます。

まとめと次のステップ

この単元では、ApexGuru が AI 駆動のインサイトを通じて Salesforce 開発者を支援し、Apex コードのパフォーマンス、効率性、保守性を向上させる方法について学びました。ApexGuru の推奨を適用することで、開発者はよくある課題を克服し、堅牢なアプリケーションを構築できるようになります。

Salesforce ヘルプで Trailhead のフィードバックを共有してください。

Trailhead についての感想をお聞かせください。[Salesforce ヘルプ] サイトから新しいフィードバックフォームにいつでもアクセスできるようになりました。

詳細はこちら フィードバックの共有に進む