Apex でビジネスロジックを記述する
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 クラスを作成してリリースする
- Visual Studio Code の force-app/main/default の下にある classes を右クリックし、[SFDX: Create Apex Class (SFDX: Apex クラスを作成)] を選択します。
- Visual Studio Code のコマンドパレットで、クラスに
HouseService
という名前を付けます。Enter キー | Enter キーを押します。
- ファイルの内容を次のコードに置き換えます。
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 クラスの間に密結合を確立しました。データモデルと矛盾するコード変更を行うとコンパイルされないため、コードが壊れることはありません。
- ファイルを保存します。
-
HouseService.cls を右クリックして [SFDX: Deploy Source to Org (SFDX: 組織にソースをリリース)] を選択します。Apex クラスが組織に正常にリリースされたことを示す確認メッセージが表示されます。コードをリリースすると、サーバー上でもコンパイルされます。
次に、このクラスが匿名スクリプトを使用して期待どおりのクエリ結果を返すかどうかをテストします。匿名スクリプトとは、メタデータには保存されませんが、コンパイルと実行が可能な Apex コードです。
次の手順に従って、テストする匿名スクリプトを作成します。
- scripts/apex フォルダーに dreamhouseapp.apex という名前の新しいファイルを作成します。
- ファイルの内容を次のコードに置き換えます。
System.debug(HouseService.getRecords());
- 下記のスクリーンショットでピンク色で強調表示されている [Execute Anonymous Apex (匿名 Apex を実行)] コードレンズをクリックします。
記述した Apex クラスが機能する場合は、出力パネルに次のようなクエリ結果が表示されます。
Apex は、既定のやり方で緊密に結合し、Salesforce と適切に連携するビジネスアプリケーションで使用できるように最適化されています。参照が無効である場合は、コンパイル時にすぐにエラーが発生します。
Salesforce の永続レイヤーと統合され、追加のデータレイヤーを接続しなくても Salesforce データを直接操作するためのサポートが組み込まれているため、開発者の生産性が向上します。さらに、Apex ではガバナ制限とテスト要件を適用することで、自動的に適切なコーディング手法を促します。
リソース
- GitHub: Apex レシピ
- Trailhead: Apex コーディングスキルの構築
- Trailhead: Apex トリガー
- Salesforce 開発者ドキュメント: Apex Replay Debugger