Apex の基本概念について
このセクションは、Apex の基本的な機能および基本概念の一部について説明します。
バージョン設定の使用
Salesforce ユーザインターフェースで、Apex クラスまたはトリガを保存する Salesforce API のバージョンを指定できます。この設定は、使用する SOAP API のバージョンだけではなく、Apex のバージョンも示します。保存後、バージョンを変更できます。各クラス名またはトリガ名は一意である必要があります。異なるバージョンに同じクラスまたはトリガを保存することはできません。
バージョン設定を使用すると、AppExchange から組織にインストールした管理パッケージの特定のバージョンにクラスまたはトリガを関連付けることもできます。管理パッケージのこのバージョンは、より新しいバージョンの管理パッケージがインストールされても、バージョン設定を手動で更新しない限り、クラスまたはトリガによって引き続き使用されます。インストール済み管理パッケージを設定リストに追加するには、使用可能なパッケージのリストからパッケージを選択します。リストは、クラスまたはトリガにまだ関連付けられていないインストール済み管理パッケージがある場合にのみ表示されます。
![Apex クラス編集ページ [バージョン設定] タブを選択して、バージョンを 16.0 に設定します。](https://developer.salesforce.com/docs/resources/img/ja-jp/218.0?doc_id=images%2FAPI_version.jpg&folder=apexcode)
管理パッケージのバージョン設定の使用についての詳細は、Salesforce オンラインヘルプの「パッケージバージョンについて」を参照してください。
変数、メソッド、およびクラスの命名
変数、メソッドまたはクラスを命名する場合、Apex の予約キーワードは使用できません。使用できない語には、予約キーワードのほかに、list、test、または account などの Apex および Lightning プラットフォームの一部である語が含まれます。
変数と式の使用
Apex は、強く型付けされた言語です。つまり、最初に参照するときに変数のデータ型を宣言する必要があります。Apex データ型には、Integer、Date、Boolean などの基本のデータ型に加え、lists、maps、objects、sObjects など、高度なデータ型があります。
変数は名前とデータ型で宣言されます。宣言するときに、値を変数に割り当てることができます。後で値を割り当てることもできます。変数を宣言する場合、次の構文を使用します。
1datatype variable_name [ = value];次の例は、変数の宣言を示します。
1// The following variable has the data type of Integer with the name Count,
2// and has the value of 0.
3Integer Count = 0;
4// The following variable has the data type of Decimal with the name Total. Note
5// that no value has been assigned to it.
6Decimal Total;
7// The following variable is an account, which is also referred to as an sObject.
8Account MyAcct = new Account();Apex では、Integer または String などのすべてのプリミティブデータ型引数は、値によってメソッドに渡されます。つまり、引数への変更はメソッドの範囲内でのみ存在することになります。メソッドが返ったときに、その引数への変更は失われます。
sObject などの非プリミティブデータ型引数は、参照によってメソッドに渡されます。そのため、メソッドが返ったときに、渡された引数はメソッドをコールする前と同じオブジェクトをそのまま参照することになります。メソッド内の参照を別のオブジェクトを指し示すように変更することはできませんが、オブジェクトの項目の値は変更できます。
ステートメントの使用
ステートメントは、操作を実行するコード化された指示です。
- 割り当て (値の変数への割り当てなど)
- 条件 (if-else)
- ループ:
- Do-while
- While
- For
- ロック
- データ操作言語 (DML)
- トランザクションの制御
- メソッド呼び出し
- 例外処理
ブロックは、中括弧でまとめられる一連のステートメントです。単一のステートメントが使用できる場所であればどこでも使用できます。次に例を示します。
1if (true) {
2 System.debug(1);
3 System.debug(2);
4} else {
5 System.debug(3);
6 System.debug(4);
7}ブロックが 1 つのステートメントだけで構成される場合、中括弧を取ることができます。次に例を示します。
1if (true)
2 System.debug(1);
3else
4 System.debug(2);コレクションの使用
Apex には、次の種類のコレクションがあります。
- リスト (配列)
- 対応付け
- セット
リストは、Integer、String、オブジェクト、他のコレクションなどの要素のコレクションです。要素のシーケンスが重要な場合はリストを使用します。リスト内に重複する要素を含めることができます。
リスト内の最初のインデックスの位置は必ず 0 になります。
リストを作成する手順は、次のとおりです。
- new キーワードを使用します。
- <> 文字で囲まれた要素の種類の前に List キーワードを使用します。
次の構文を使用して、リストを作成します。
1List <datatype> list_name
2 [= new List<datatype>();] |
3 [=new List<datatype>{value [, value2. . .]};] |
4 ;次の例では Integer のリストを作成し、変数 My_List に割り当てます。Apex は強く型付けされているため、My_List のデータ型を Integer のリストとして宣言する必要があります。
1List<Integer> My_List = new List<Integer>();詳細は、「Lists」を参照してください。
セットとは、一意の順不同の要素のコレクションです。セットには String、Integer、Date などのプリミティブデータ型を含めることができます。また、より複雑な sObject などのデータ型も含められます。
セットを作成する手順は、次のとおりです。
- new キーワードを使用します。
- <> 文字で囲まれたプリミティブデータ型の前に Set キーワードを使用します。
次の構文を使用して、セットを作成します。
1Set<datatype> set_name
2 [= new Set<datatype>();] |
3 [= new Set<datatype>{value [, value2. . .] };] |
4 ;次の例では、String のセットを作成します。セットの値は、中括弧 {} を使用して渡されます。
1Set<String> My_String = new Set<String>{'a', 'b', 'c'};詳細は、「Set」を参照してください。
対応付けは、キー - 値のペアのコレクションです。キーには、任意のプリミティブデータ型を使用できます。値には、プリミティブデータ型およびオブジェクトその他のコレクションを含められます。キーによる検索が重要な場合は、対応付けを使用します。対応付けでは重複する値は存在できますが、各キーは一意である必要があります。
対応付けを作成する手順は、次のとおりです。
- new キーワードを使用します。
- <> 文字で囲まれ、カンマで区切られたキー - 値の前に Map キーワードを使用します。
次の構文を使用して、対応付けを作成します。
1Map<key_datatype, value_datatype> map_name
2 [=new map<key_datatype, value_datatype>();] |
3 [=new map<key_datatype, value_datatype>
4 {key1_value => value1_value
5 [, key2_value => value2_value. . .]};] |
6 ;次の例では、キーのデータ型が Integer、値が String である対応付けを作成します。この例では、対応付けが作成されると、中括弧 {} の間に対応付けの値が渡されます。
1Map<Integer, String> My_Map = new Map<Integer, String>{1 => 'a', 2 => 'b', 3 => 'c'};詳細は、「対応付け」を参照してください。
条件分岐の使用
if ステートメントは、アプリケーションが条件に基づいてさまざまなことを実行できるようにする true-false テストです。基本構文は次のとおりです。
1if (Condition){
2// Do this if the condition is true
3} else {
4// Do this if the condition is not true
5}詳細は、「条件 (If-Else) ステートメント」を参照してください。
ループの使用
if ステートメントを使用すると、アプリケーションは条件に基づいて操作を実行できますが、ループはアプリケーションが条件に基づいて同じ操作を繰り返し実行するよう指示します。Apex では、次の種類のループを使用できます。
- Do-while
- While
- For
Do-while ループは、コードの実行後に条件をチェックします。
While ループは、コードの実行前の開始時に条件をチェックします。
For ループを使用すると、ループ内で使用される条件をより詳細に制御できます。また、Apex では、条件を設定する従来の For ループ、条件の一部としてリストおよび SOQL クエリを使用する For ループを使用できます。
詳細は、「ループ」を参照してください。