Apex-overview
Apex-概要
Apexとは何ですか?
Apexは、Salesforce.comによって開発された独自の言語です。 公式の定義によると、Apexは厳密に型指定されたオブジェクト指向プログラミング言語であり、開発者はForce.comプラットフォームサーバーでForce.com APIの呼び出しと併せてフローおよびトランザクション制御ステートメントを実行できます。
Javaのような構文を持ち、データベースストアドプロシージャのように動作します。 開発者は、ボタンクリック、関連レコードの更新、Visualforce *ページなど、ほとんどのシステムイベントにビジネスロジックを追加できます。Apex*コードは、Webサービスリクエストおよびオブジェクトのトリガーから開始できます。 Apexは、Performance Edition、Unlimited Edition、Enterprise Edition、およびDeveloper Editionに含まれています。
言語としてのApexの機能
言語としてのApexの機能について説明しましょう-
統合された
Apexには、INSERT、UPDATE、DELETEなどのDML操作、およびDML例外処理のサポートが組み込まれています。 sObjectレコードのセットを返すインラインSOQLおよびSOSLクエリ処理をサポートしています。 sObject、SOQL、SOSLについては、今後の章で詳しく説明します。
Javaのような構文と使いやすい
Apexは、Javaのような構文を使用するため、使いやすいです。 たとえば、変数宣言、ループ構文、条件ステートメント。
データと強力に統合
Apexは、複数のクエリとDMLステートメントを一緒に実行するように設計されたデータに特化しています。 データベースで複数のトランザクションステートメントを発行します。
強く型付けされた
Apexは強く型付けされた言語です。 sObjectなどのスキーマオブジェクトへの直接参照を使用します。無効な参照は、削除されたり、データ型が間違っているとすぐに失敗します。
マルチテナント環境
Apexはマルチテナント環境で実行されます。 その結果、Apexランタイムエンジンは、ランナウェイコードを厳重に保護し、共有リソースの独占を防止するように設計されています。 制限に違反するコードは、わかりやすいエラーメッセージで失敗します。
自動的にアップグレードする
Apexは、Salesforceリリースの一部としてアップグレードされます。 手動でアップグレードする必要はありません。
簡単なテスト
Apexは、カバーされているコードの量やコードのどの部分がより効率的であるかを示すテスト結果など、単体テストの作成と実行の組み込みサポートを提供します。
開発者はいつApexを選択すべきですか?
Apexは、事前に構築された既存の機能を使用して複雑なビジネス機能を実装できない場合に使用する必要があります。 以下は、Apex over Salesforce設定を使用する必要がある場合です。
Apexアプリケーション
必要なときにApexを使用できます-
- 他のシステムと統合してWebサービスを作成します。
- メールブラストまたはメールセットアップ用のメールサービスを作成します。
- 複数のオブジェクトに対して同時に複雑な検証を実行し、カスタム検証の実装も実行します。
- 既存のワークフロー機能またはフローでサポートされていない複雑なビジネスプロセスを作成します。
- データベースメソッドを使用してレコードを更新するようなカスタムトランザクションロジック(単一のレコードまたはオブジェクトだけでなく、トランザクション全体で発生するロジック)を作成します。
- レコードが変更されたときに何らかのロジックを実行するか、トリガーを発生させた何らかのイベントがあるときに関連オブジェクトのレコードを変更します。
Apexの動作構造
次の図に示すように(参照:Salesforce開発者ドキュメント)、Apexは完全にオンデマンドで実行されますForce.comプラットフォーム
アクションの流れ
開発者がコードを保存するとき、およびエンドユーザーが以下に示すようにApexコードを呼び出すアクションを実行するとき、アクションの2つのシーケンスがあります-
開発者アクション
開発者がApexコードを作成してプラットフォームに保存すると、プラットフォームアプリケーションサーバーは最初にコードをApexランタイムインタープリターが理解できる一連の命令にコンパイルし、次にそれらの命令をメタデータとして保存します。
エンドユーザーアクション
エンドユーザーがボタンをクリックするかVisualforceページにアクセスしてApexの実行をトリガーすると、プラットフォームアプリケーションサーバーはメタデータからコンパイルされた命令を取得し、結果を返す前にランタイムインタープリターを介してそれらを送信します。 エンドユーザーは、標準のアプリケーションプラットフォーム要求と比較して、実行時間に違いがないことに気付きます。
ApexはSalesforce.comの専用言語であるため、一般的なプログラミング言語がサポートする機能の一部はサポートしていません。 以下は、Apexがサポートしていないいくつかの機能です-
- ユーザーインターフェイスに要素を表示できません。
- SFDCが提供する標準の機能を変更することはできません。また、標準の機能の実行を妨げることもできません。
- 複数のスレッドを作成することも、他の言語でできるため不可能です。
Apex構文について
通常、Apexコードには、他のプログラミング言語で慣れ親しんでいる多くのものが含まれています。
可変宣言
厳密に型指定された言語として、Apexでデータ型を持つすべての変数を宣言する必要があります。 次のコード(下のスクリーンショット)に見られるように、lstAccは、アカウントのリストとしてデータ型で宣言されています。
SOQLクエリ
これは、Salesforceデータベースからデータを取得するために使用されます。 以下のスクリーンショットに示すクエリは、Accountオブジェクトからデータを取得しています。
ループ文
このループステートメントは、リストの繰り返し、または指定された回数のコードの繰り返しに使用されます。 以下のスクリーンショットに示されているコードでは、反復は記録の数と同じです。
フロー制御ステートメント
このコードでは、Ifステートメントがフロー制御に使用されます。 特定の条件に基づいて、特定のコードの実行を実行するか停止するかが決定されます。 たとえば、次のコードでは、リストが空であるか、レコードが含まれているかを確認しています。
DMLステートメント
データベース内のレコードに対してレコードの挿入、更新、アップサート、削除操作を実行します。 たとえば、次のコードは、新しいフィールド値でアカウントを更新するのに役立ちます。
以下は、Apexコードスニペットがどのように見えるかの例です。 このチュートリアルでは、これらすべてのApexプログラミングの概念をさらに学習します。