Skip to main content

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

メモ

メモ

日本語で受講されている方へ
このバッジの Trailhead ハンズオン Challenge は英語で受講していただく必要があります。英語の意味についてはかっこ内の翻訳をご参照ください。Trailhead Playground では (1) [Locale (地域)] を [United States (米国)] に、[Language (言語)] を [English (英語)] に切り替えて、(2) 英語の値のみをコピーして貼り付けてください。こちらの指示に従ってください。

翻訳版の 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 ではガバナ制限とテスト要件を適用することで、自動的に適切なコーディング手法を促します。

リソース

無料で学習を続けましょう!
続けるにはアカウントにサインアップしてください。
サインアップすると次のような機能が利用できるようになります。
  • 各自のキャリア目標に合わせてパーソナライズされたおすすめが表示される
  • ハンズオン Challenge やテストでスキルを練習できる
  • 進捗状況を追跡して上司と共有できる
  • メンターやキャリアチャンスと繋がることができる