Skip to main content
Join the Agentforce Hackathon on Nov. 18-19 to compete for a $20,000 Grand Prize. Sign up now. Terms apply.

Apex でビジネスロジックを記述する

メモ

メモ

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

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

Trail Together の動画

エキスパートの説明を見ながらこのステップを進めて行きたい場合は、Trail Together シリーズの一部である、こちらの動画をご覧ください。

(巻き戻して最初から見直したい場合、このクリップは 34:00 分から開始されます。)

はじめに

Apex は強く型付けされたオブジェクト指向プログラミング言語で、Salesforce マルチテナントアーキテクチャで実行するために最適化されています。開発者は Apex を使用して、複雑なバックエンドのビジネスプロセスを自動化し、Java バイトコードにコンパイルできます。

Apex 言語は、Salesforce データを操作するために最適化されており、Salesforce の永続レイヤーと緊密に統合されています。Apex では、先ほど作成したオブジェクトを使用してデータベース操作を行うクエリや DML (Data Manipulation Language) ステートメントを実行するために SQL と似た SOQL (Salesforce Object Query Language) が提供されています。

Apex クラスを作成してリリースする

  1. Visual Studio Code の force-app/main/default の下にある classes を右クリックし、[SFDX: Create Apex Class (SFDX: Apex クラスを作成)] を選択します。
    [SFDX: Create Apex Class (SFDX: Apex クラスを作成)] の選択。
  2. Visual Studio Code のコマンドパレットで、クラスに HouseService という名前を付けます。Enter キー | Enter キーを押します。
  3. ファイルの内容を次のコードに置き換えます。
    public with sharing class HouseService {
        @AuraEnabled(cacheable=true)
        public static List<House__c> getRecords() {
            try {
                // Create a list of House records from a SOQL query
                List<House__c> lstHouses = [
                    SELECT
                       Id,
                       Name,
                       Address__c,
                       State__c,
                       City__c,
                       Zip__c
                       FROM House__c
                       WITH USER_MODE
                       ORDER BY CreatedDate
                       LIMIT 10
                    ];
                      return lstHouses;
            }
            // Code to handle exception
            catch (Exception e) {
               throw new AuraHandledException(e.getMessage());
            }
        }
    }

    コードのポイント このコードでは、getRecords というメソッドを持つクラス HouseService を作成します。このメソッドは、House__c オブジェクトを照会して住宅レコードのリスト (順序付けされたコレクション) を返します。
    HouseService Apex クラスでは、クラスファイルを作成しなくても、先ほど (ステップ 2 で) 作成したオブジェクト (House__c) がクラスとして自動的に表示されます。
    さらに、宣言しなくても、House__c オブジェクトの項目をプロパティとして参照できます。オブジェクトとオブジェクトの項目を参照するクエリの記述には、SOQL を使用しました。クエリはコンパイルされるため、コンパイル時に型がチェックされます。
    データモデルと Apex クラスの間に密結合を確立しました。データモデルと矛盾するコード変更を行うとコンパイルされないため、コードが壊れることはありません。
  4. ファイルを保存します。
  5. HouseService.cls を右クリックして [SFDX: Deploy Source to Org (SFDX: 組織にソースをリリース)] を選択します。Apex クラスが組織に正常にリリースされたことを示す確認メッセージが表示されます。コードをリリースすると、サーバー上でもコンパイルされます。
    [SFDX: Deploy Source to Org (SFDX: 組織にソースをリリース)] の選択。

次に、このクラスが匿名スクリプトを使用して期待どおりのクエリ結果を返すかどうかをテストします。匿名スクリプトとは、メタデータには保存されませんが、コンパイルと実行が可能な Apex コードです。

次の手順に従って、テストする匿名スクリプトを作成します。

  1. scripts/apex フォルダーに dreamhouseapp.apex という名前の新しいファイルを作成します。
  2. ファイルの内容を次のコードに置き換えます。System.debug(HouseService.getRecords());
  3. 下記のスクリーンショットでピンク色で強調表示されている [Execute Anonymous Apex (匿名 Apex を実行)] コードレンズをクリックします。
    Apex スクリプトを実行する [Execute Anonymous Apex (匿名 Apex を実行)] コードレンズ。
    記述した Apex クラスが機能する場合は、出力パネルに次のようなクエリ結果が表示されます。Apex スクリプトの実行によるクエリ結果を表示している [Output (出力)] パネル。

Apex は、既定のやり方で緊密に結合し、Salesforce と適切に連携するビジネスアプリケーションで使用できるように最適化されています。参照が無効である場合は、コンパイル時にすぐにエラーが発生します。

Salesforce の永続レイヤーと統合され、追加のデータレイヤーを接続しなくても Salesforce データを直接操作するためのサポートが組み込まれているため、開発者の生産性が向上します。さらに、Apex ではガバナ制限とテスト要件を適用することで、自動的に適切なコーディング手法を促します。

リソース

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

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

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