Salesforce(セールスフォース)は顧客管理や営業活動の効率化を図るために、業務を自動化する機能を備えています。

とはいえ既存の機能では対応しきれない、複雑な処理やビジネスロジックを追加したいケースもあるはずです。

この記事ではSalesforceの機能を拡張するプログラミング言語、Apexを解説します。

プログラミング言語Apexとは?

Apexはセールスフォース社が提供するCRMソフトウェア、「Salesforce」専用のプログラミング言語です。

Salesforce上の機能を拡張する際に使用する、オブジェクト指向のプログラミング言語になります。

オブジェクト指向とは役割をもったモノごとにクラス分けをして、モノとモノの関係性を定義しながらシステムを構築するシステム構成のことです。

SalesforceでApexを利用すると、既存の機能では対応しきれない複雑な処理や独自のビジネスロジックを追加できます。

例えば「商談の進捗が切り替わったタイミングで関係者へメールを送信する」などです。

結果として、顧客管理や営業支援における効率をさらに向上できるでしょう。

なおApexは、Salesforceの「設定」から「開発者コンソール」をクリックして利用します。

プログラミング言語Apexの特徴

構文がJavaに似ている

Apexの構文は、プログラミング言語として広く使われているJavaに似ています。

その理由はApexがJavaに基づいた変数・構文を使用しているからです。

そのためプログラミング経験がある人にとって、Apexは比較的扱いやすい言語といえるでしょう。

ちなみに、ApexはSalesforce独自の機能とシームレスに連携できるなど、Javaとは一部異なる部分もあります。

大文字小文字の区別がない

Apexには大文字小文字の区別がないという特徴があります。

変数に名前をつける場合「CAT」「Cat」「cat」と統一しなくても、コンパイルエラーにならないということです。

Javaに限らずほとんどのプログラミング言語は大文字小文字を区別することからも、意外に思われるかもしれません。

とはいえネーミングルールはJava標準を推奨しているので、コーディングでは大文字小文字を区別したほうが良いです。

具体的にはクラスの名前は大文字から、メソッドは小文字の動詞から始めます。

予約語が多い

Apexは、Javaと比べて予約語が多いのも特徴です。

予約語とはプログラミング言語において、代えのきかない特別なキーワードを指します。

実際にJavaに掲載されている予約語数はおよそ50ですが、Apexには約120個もの予約語が存在します。

Apexに予約語数が多い理由は、独自の機能を多数サポートしているからです。

プログラミング言語Apexの使い方・コード

Apexでプログラミングを行うにあたって覚えておきたいのが、「Apexトリガ」と「Apexクラス」です。

Apexトリガー

ApexトリガーはApexを「どのタイミングで実行するか」を記述するタイマーです。

レコードの挿入(insert)・更新(update)・削除(delete)の前後のほか、レコード復元後を含む7つのタイミングで設定できます。

トリガーを定義する際の構文は、次のとおりです。

trigger トリガー名 on オブジェクト名(タイミング){

行いたい処理

}

「after update」を例にすると、データの更新後に処理が実行されます。

トリガーはSalesforce上で直接作成・編集できるので、自動化の実現が比較的容易です。

Apexクラス

Apexクラスは「どんなプログラムを開始するか」を記述する設計図のことです。

変数とメソッドをまとめたもので、オブジェクト指向プログラミングの重要な概念の1つになります。

変数はオブジェクトの状態、メソッドは挿入や削除などのアクションを実行します。

基本的なクラスを定義する構文は、次のとおりです。

アクセス修飾子 class クラス名{

フィールドやメソッド

}

なお、Apexクラスはトリガーと異なり、明示的に呼び出さなければなりません。

Apexのメリット・デメリット

ここでは、プログラミング言語Apexのメリット・デメリットを見ていきましょう。

Apexプログラミング言語のメリット

大量のデータ処理や高速なデータ処理に適している

Apexはトリガー処理や非同期処理を通じて、複雑なビジネスロジックを実現します。

結果としてSalesforceの機能性は向上し、顧客管理や営業活動をさらに効率化できるでしょう。

コードの正確性と信頼性が高い

Apexはオブジェクト名や項目名などを直接参照することで、コンパイルエラーを早期に発見できるのが強みです。

またSalesforceはマルチテナント環境で動作するため、メタデータを保護してセキュリティと信頼性も担保します。

テストや管理・運用がしやすい環境が整っている

Apexの実行環境は、マルチテナント環境のLightningプラットフォームです。

単体テストの作成・実行のサポートが組み込まれており、カスタムApexコードの動作を確認できます。

さらにコードは異なるバージョンのAPIに保存され、プラットフォームがバージョンアップしても影響を最小限に抑えられます。

Apexプログラミング言語のデメリット

Salesforceフローより開発に時間がかかる

Apexの構築はプログラミングスキルが必須で、直感的に構築できるSalesforceフローより開発に時間がかかります。

ちなみにApexコードは、作成したテストクラスで75%のコードカバレッジ達成しないと反映されません。

運用・メンテナンスが比較的難しい

Apexの構築には、ある程度のスキルと理解が必要です。

開発者がプロジェクトの途中で離脱した場合、引き継いだ人はまずコードを理解する必要があります。

業務工数を含めて、運用・メンテナンスにはある程度時間を見ておいたほうが良いでしょう。

【注意点】Salesforceはガバナ制限を意識して開発する

SalesforceにおけるApex開発では、ガバナ制限を意識しましょう。

ガバナ制限とは特定のユーザーがサーバーリソースを占有したゆえに、他のユーザーへ影響が及ぶことを阻止する制限のことです。

マルチテナント環境では複数のユーザーがリソースを共有しています。

特定のユーザーが多くのリソースを必要とするApex処理を行うと、他のユーザーは残ったわずかなリソースしか使えない状況に陥ってしまいます。

そこからさらに複数のユーザーでリソースを分け合うと、通常の倍以上の処理時間がかかることもあるのです。

ガバナ制限は、すべてのユーザーが公平にリソースを使えるようにする制限です。

Apexでガバナ制限を回避するためにも、適切なバルク処理やバッチ処理の設計、エラーハンドリングの構築を心がけましょう。

まとめ

ApexはSalesforce専用のプログラミング言語で、既存の機能で対応しきれない複雑な処理やビジネスロジックを追加できます。

他にも大量のデータ処理や高速なデータ処理に向いていたり、セキュリティが担保されていたりするのがメリットです。

プログラミング経験が浅い開発者が開発する場合は、運用・メンテナンスにも時間がかかることを留意します。

セールスフォース社が提供するドキュメントやトレイルヘッドもうまく活用して、顧客管理や営業支援の効率化を実現しましょう。