Skip to main content

Apex の特徴と用語を学ぶ

学習の目的

この単元を完了すると、次のことができるようになります。

  • Apex コーディング言語の主要な特徴を特定する。
  • 主な用語とデータ型を説明する。

Apex の特徴

Apex は、開発者が簡単に使用できるように設計されました。そのため、ビジネスロジックをシステムに組み込む際に適した、いくつかの主要な特徴があります。具体的には、Apex には次のような特徴があります。

オブジェクト指向

Apex の構文は、Java などの一般的なプログラミング言語を模しており、経験豊富なプログラマーには使いやすくなっています。たとえば、変数の宣言、ループ構文、条件付きステートメントは、Java と同じように Apex でも動作します。

データに基づく

Apex はデータ指向で、複数のクエリや DML (データ操作言語) ステートメントを同時に実行できるように設計されています。

強い型付け

Apex は強く型付けされた言語です。sObject のようなオブジェクトへの直接参照を使用するため、削除されたり、誤ったデータ型を使用したりすると、無効な参照はすぐさま失敗します。ほかの言語とは異なり、Apex は一般的に大文字小文字を区別しません。

マルチテナント環境で実行

Apex はマルチテナント環境で実行され、ランタイムエンジンは、クエリの処理に長時間かかるような暴走コードなどの問題を回避するように設計されています。わかりやすいエラーメッセージと、リソース制限に違反したコードが自動的に失敗する仕組みにより、ミスのあるコードが処理能力を占有し続けることを防げます。コードのリソースに関するエラーや非効率によって通常なら問題が発生するような場合でも、Apex を使用すれば、問題が広がる前に特定して修正できます。

サポートの統合

DML 操作 (INSERT、UPDATE、DELETE など) と DML 例外処理については、Apex にサポートが組み込まれています。さらに、インライン SOQL (Salesforce Object Query Language) と SOSL (Salesforce Object Search Language) のクエリ処理もサポートされています。

自動アップグレード

Apex の機能は、Salesforce の機能と一緒にアップグレードされ、Apex 自体を別途更新する必要はありません。ただし、各データクラスにはリリースごとに更新されない API バージョンがあり、Salesforce の新しいバージョンがリリースされるたびにコードが壊れることを防ぎます。

テストしやすい

単体テストの作成と実行の組み込みのサポートでプロジェクトを改善し、テスト結果でコードのカバー率を確認できます。迅速かつ情報量の多いテストに簡単にアクセスできるため、Apex で作成したコードに自信を持ちやすくなります。

Apex のデータ型

Apex でコードを記述するには、さまざまなデータ型を使用します。その具体的な内容は次のとおりです。

プリミティブ

プリミティブは、コードにおいて最も単純で一般的なデータ型です。Integer、Long、Date、Datetime、String、ID、Boolean 値が含まれます。詳細は「プリミティブデータ型」を参照してください。

コレクション

リスト、セット、対応付けで構成されるコレクションは、複数のレコードを保存できます。

sObject

ビジネスに関する特定の情報 (取引先、取引先責任者、リードなど) を保存するデータベーステーブルです。

列挙

番号付けされた順序を持たない、一連の名前付き定数値を定義する抽象データ型です。

クラス、オブジェクト、インターフェース

Java と同様に、Apex でもクラスを作成できます。クラスはオブジェクトを作成するためのテンプレートまたはブループリントです。オブジェクトは、クラスのインスタンスです。インターフェースは、メソッドが実装されていないクラスのようなものです。メソッドの署名はありますが、各メソッドの本文は空です。

インターフェースは、メソッド (または特定のコードブロック) の実装を宣言から分離するのに役立ち、アプリケーションごとにメソッドの異なる実装を作成できるようにします。

上記のさまざまなデータ型は、Apex コーディングの基盤であり、使い方を理解することで、独自のユースケースに合わせたアプリケーションを構築できるようになります。

Apex のロジック

Apex は馴染みやすいように設計されています。ほかのコーディング言語を使用した経験があれば、Apex で使用する構文に類似した点が見つかるはずです。ただし、経験がなくても心配はいりません。Apex で使用される基本的なステートメントの種類を理解すれば、それを応用して目的を達成できます。留意すべき構文の重要な部分は、以下のとおりです。

ループステートメント

ループステートメントは、リストを反復処理したり、特定の回数だけコードの一部を反復処理したりするために使用されます。条件が満たされるまでコードを実行できます。ループは forwhile のようなロジックを使用し、プログラマーが設定した特定の条件に応じてコードを実行します。たとえば、以下のループステートメントは整数 1 ~ 10 をデバッグログに出力します。

Integer count = 1;


do {
    System.debug(count);
    count++;
} while (count < 11);

フロー制御ステートメント

Apex では、フロー制御に if ステートメントや switch ステートメントを使用します。これにより、条件に基づいてコードの実行を開始または停止することができます。たとえば、レコードが更新された場合にコードを実行することができます。以下は、個人の順位に基づいてメダルを区別する制御ステートメントの例です。

if (place == 1) {
    medal_color = 'gold';
} else if (place == 2) {
    medal_color = 'silver';
} else if (place == 3) {
    medal_color = 'bronze';
} else {
    medal_color = null;
}

DML ステートメントと SQL クエリ

クエリは、Salesforce データベースからデータを取得します。通常、特定の項目やオブジェクト (取引先オブジェクトなど) からデータを探すことを意味します。

DML (データ操作言語) ステートメントは、レコードの更新、削除、その他の変更を行うことを可能にします。

これらを組み合わせることで、Salesforce に保存されたデータを最大限に活用し、データを簡単に最新の状態に保つ操作を実行できます。たとえば、以下は取引先レコードと関連付けられた取引先責任者レコードを挿入するコードブロックの例です。


Account accObject = new Account();
accObject.Name = 'Test Account’;
accObject.Website =’www.salesforce.com’;
Insert accObject ;
List<Contact> contactList = new List<Contact>();
Contact con1 = new Contact();
con1.FirstName =’first’;
con1.LastName =’contact’;
con1.AccountId = accObject.Id;
contactList.add(con1);
Insert contactList;

これらの機能の一部は、次のセクションで実際のコードを通して使い方を学びますが、ここでは Apex が Java のような馴染みのある言語と多くの構文上の共通点を持っていることがわかります。言語の基本的なロジックを理解すれば、機能するコードを記述し、Salesforce 製品でできることをさらに広げる道が開けます。

リソース

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

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

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