Skip to main content
From 16:00 UTC on January 17, 2026, to 20:00 UTC on January 17, 2026, we will perform planned maintenance on the Trailhead, myTrailhead, and Trailblazer Community sites. During the maintenance, these sites will be unavailable, and users won't be able to access them. Please plan your activities around this required maintenance.

Apex Recipes サンプルアプリケーションについて知る

メモ

メモ

日本語で受講されている方へ
Challenge は日本語の Trailhead Playground で開始し、かっこ内の翻訳を参照しながら進めていってください。Challenge での評価は英語データを対象に行われるため、英語の値のみをコピーして貼り付けるようにしてください。日本語の組織で Challenge が不合格だった場合は、(1) この手順に従って [Locale (地域)] を [United States (米国)] に切り替え、(2) [Language (言語)] を [English (英語)] に切り替えてから、(3) [Check Challenge (Challenge を確認)] ボタンをクリックしてみることをお勧めします。

翻訳版 Trailhead を活用する方法の詳細は、自分の言語の Trailhead バッジを参照してください。

はじめに

Trailhead Playground に Apex Recipes をインストールしたら、さっそく、提供されたレシピのいくつかを見ていきましょう。このレシピは、有意義な仕事をするのに十分な具体性がありながら、再利用可能に対応できるだけの汎用性も兼ね備えたコードの断片である、インテリジェントな抽象化を表しています。この単元では、外部サービスへの Http コールアウトの実行および持続可能なトリガーの作成という、2 つの抽象化について調査します。

Http コールアウトの実行

サードパーティのサービスに対して Http コールアウトを実行する必要があるのはごく一般的なことです。現在の通貨換算レートを取得するためであれ、会社の ERP システムを更新するためであれ、コールアウトを実行することは開発者が頻繁に行う作業です。コールアウトを実行する Apex コードは単純で、かなり定型的になります。基本のコールアウトコード上にインテリジェントな抽象化を構築することで、コードが少なくなり、テストしやすくなります。Apex Recipes には、コールアウトの実行方法を示すレシピだけでなく、再利用可能でインテリジェントな抽象化を確立する方法を表すコードも含まれています。

Playground 組織を開いて、Apex Recipes を開きます。これを行う手順は、次のとおりです。

  1. アプリケーションランチャーで [Apex Recipes] を選択します。これで、Apex Recipes Lightning アプリケーションが開きます。
  2. Apex Recipes はグループに整理されています。[Integration Recipes] の横にある > をクリックします。 
  3. [CalloutRecipes] をクリックします。

CalloutRecipes クラスが表示されている Apex Recipes のコードビューアー。

特定のレシピをクリックするとすぐに右側にコードが表示されます。コードだけではなく、上部には対応するテストクラス、クラスのドキュメント、関連する他のクラスのタブも表示されます。たとえば CalloutRecipes には、別の関連するクラス RestClient があります。 

CalloutRecipes コードタブで、rawCallout() メソッドが表示されるまで下にスクロールします。このレシピには、必要なオブジェクトの作成、エンドポイントの設定、コールアウトの起動を行う手順が示されています。このクラスの他のメソッドは、get()del()put()post() などのメソッドへのコールを実行します。このようなメソッドは、仮想の親クラス RestClient によって提供されます。RestClient を拡張するクラスは、RestClient が提供するすべてのメソッドを利用すると同時に、必要に応じてメソッドを上書きできます。rawCallout() メソッドと httpGetCalloutToSecondOrg() メソッドを比較すると、このインテリジェントな抽象化によって必要なコード量がいかに削減されているかがわかります。rawCallout() には、応答を処理する前に、コールアウトを実行することに特化した 約 5 行のコードがあります。一方で、httpGetCalloutToSecondOrg() は GET HTTP コールの実行と同じ作業を 1 行で完了します。 

持続可能なトリガーの作成

Apex 開発者の世界では、トリガーはスイス軍のチェーンソー (汎用性がありながら使いにくいツール)です。これがあれば大抵のことは何でもできますが、注意しないと間違った木を切ってしまうこともあります。この点を考慮して、Apex Recipes ではインテリジェントな抽象化としてトリガーハンドラーフレームワークを活用することで、ベストプラクティスに従っています。Apex Recipes には 2 つのトリガーがあり、1 つは取引先で起動し、もう 1 つはカスタムプラットフォームイベントで起動します。Apex Recipes のトリガーハンドラーが優れている点は、両方のユースケースで機能することです。取引先トリガーハンドラーを見てみましょう。

では、次の手順でそのクラスを UI で開きます。

  1. [Trigger Recipes] の横にある > をクリックします。
  2. [AccountTriggerHandler] クラスをクリックします。

Apex Recipes の UI

右側に表示されている TriggerHandlerAccountServiceLayer という 2 つの関連するコードタブに注目してください。TriggerHandler タブをクリックします。これは、トリガーハンドラーフレームワーク抽象化の中心部です。run() が表示されるまで下にスクロールします。このメソッドの switch ステートメントは、AccountTriggerHandler のさまざまなコンテキストメソッドをコールする機能を担っています。では、メインの AccountTriggerHandler タブに戻って、AccountTriggerHandler クラスを見てみましょう。ここには、さまざまなトリガーコンテキストに対応するメソッドがあります。beforeInsert() が表示されるまで下にスクロールします。beforeInsert() メソッドは他のクラスのコードをコールします。この場合は、AccountServiceLayer です。右側のタブをクリックして、incrementCounterInDescription() メソッドが表示されるまで下にスクロールします。このメソッドには、トリガーで実行したいビジネスロジックが含まれます。このように構築することで、組織内の他の部分で実行する場合にも利用可能なコードをトリガー中に実行させることができます。このアーキテクチャでは、ビジネスロジックの操作順序を開発者が制御でき、テストも容易になります。いいことずくめですね。

まだまだあるその他の機能

Apex Recipes の RestClientTriggerHandler について学びました。ただし、まだまだたくさんあります。アプリケーション全体を通して、FLS と CRUD に従う SOQL クエリの例があります。ifelseswitch ステートメントのような条件ステートメントを使用したコード例もあります。QueueablesBatchScheduled クラスなどの非同期 Apex の例も用意されています。このサンプルアプリケーションはさらにレシピが追加される予定ですが、すでに Apex の適切なコーディング方法の優れたリファレンスとなっています。

このようなレシピは、特定のタスクを達成する方法だけでなく、より安全で持続可能なコードを記述する方法を理解するのに役立つでしょう。

このステップでは作業内容の確認は行いません。[Verify Step (ステップを確認)] をクリックして、プロジェクトを完了し、バッジを獲得してください。

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

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

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