Salesforce Apexとは?特長や使い方、トリガとクラス、フローとの違いについても徹底解説!
この記事でわかること
- Salesforce Apexの概要・できること
- Salesforce Apexの開始手順
- ApexトリガーやApexクラスの概要と違い
- Salesforce Apexを学ぶ方法
執筆者 代表取締役社長 / CEO 杉山元紀
Salesforceの標準機能で簡単なビジネスプロセスの自動化ができたけど、より複雑なビジネスプロセスの自動化が出来なくてお悩みのユーザーは少なくないでしょう。
そんなユーザーにおすすめなのが「Salesforce Apex」です。Salesforce専用のプログラミング言語であるApexを活用して、複雑なビジネスプロセスに合わせてコーディングすることで、よりユーザーニーズに合ったプロセスの自動化が実現できます。
本記事では、そんなSalesforce Apexの概要やできること、開始手順などについて解説していきます。Salesforceを用いたアプリケーションで複雑なビジネスプロセスを自動化したいと考えている担当者様は、ぜひ参考にしてみてください。
参照:Salesforce(セールスフォース)とは?製品群や機能、メリット・デメリットを簡単に解説!
目次
Salesforce Apexとは?
Salesforce Apexとは、Salesforceのサーバー上で動作するSalesforce専用のプログラミング言語です。Javaに似た構造となっており、プログラミング経験がある技術者にとってキャッチアップしやすい言語となっています。
こちらでは、Salesforce Apexの基本概要や特徴、できることについて見ていきましょう。
Salesforce Apexの基本概要
Salesforce Apexは、Salesforce専用のオブジェクト指向プログラミング言語です。Javaに似た構文を使用して、データベースのストアドプロシージャのように動作します。
Salesforce Apexを使用することでボタンクリックや関連レコードの更新、Visualforceページなどのほとんどのシステムイベントをビジネスロジックに追加・実行が可能です。特にSalesforce標準搭載の機能では表現できない複雑なビジネスロジックを作成する際に用いられる手法の1つです。
また、作成されたApexコードはLightningプラットフォーム上に保存され、完全なオンデマンドで実行されます。クラウド環境で動作するため、プラットフォーム全体のパフォーマンス維持のために実行時間やデータベース操作数などのガバナンス制限が設定されていることも特徴です。
Salesforce Apex 5つの特長
こちらでは、Salesforce Apexの特長優れている点について5つ解説していきます。
Lightningプラットフォーム標準の構文や機能が統合されており効率的な開発可能
Salesforce Apexでは、Lightningプラットフォームに搭載されている構文や機能が標準で統合されていることが特長の1つです。
標準でサポートされている機能として以下の機能や構文が公式の開発者ガイドにて紹介されています。
- INSERT、UPDATEおよびDELETEなど組み込みDmlException処理を含むデータ操作言語コール
- sObject レコードのリストを返す、インラインの Salesforce Object Query Language(SOQL) と Salesforce Object Search Language (SOSL) のクエリ
- 複数のレコードの一括処理を可能にするループ
- レコード更新の競合を回避するロック構文
- 保存された Apex メソッドから構築できる、カスタムの公開 API コール
- Apex が参照するカスタムオブジェクトまたはカスタム項目を編集または削除しようとすると発行される警告とエラー
上記のような、標準搭載の構文や機能が備わることで開発の効率化やプラットフォームとの高度な連携による処理速度の向上、パフォーマンスの最適化、エラー発生の防止などが期待できます。
Javaに似た構文で比較的使いやすい
Salesforce Apexは、広く使われているJavaの構文に基づいた変数および構文を使用しているため、使いやすいことが特長です。
例えば、変数や式の構文、ブロックおよび条件ステートメント構文やループ構文、配列などがJavaの構文に基づいており、Apexを用いて新しい要素の導入をする際に理解しやすい構文やセマンティックを使用することでLightningプラットフォームの効率的な使用を促進し、簡潔かつ記述しやすいコードを作成できます。
データ指向のため、データベースとの連携が容易に設計できる
Salesforce Apexは、データ指向であることの特長の1つです。ApexはSalesforce上で動作し、データベースとの連携が容易に設計されています。
例えば、Salesforceデータベースを直接操作するためのSOQLなどのクエリやDML操作を簡潔に実行できる構文が提供されており、データベース操作が容易に実行可能です。
データ指向という特性によって、Salesforce Apexはデータを中心としたビジネスロジック構築の効率化が可能となり、豊富なデータモデルに合わせた開発を進められます。
直接参照で定型化された言語のためコードの正確性と信頼性が高い
Salesforce Apexは、オブジェクト名や項目名などのスキーマオブジェクトを直接参照する定型化された言語です。そのため、誤った参照や無効な操作がある状態でコンパイルすればエラーを発生させてエラー箇所の早期発見を促します。
また、Apexコードが依存するメタデータは削除されないように保護されており、一貫性と信頼性が確保されていることも特長の1つです。チェック機能が充実しているため、エラーを事前に防ぎ、コードの正確性を保証してくれます。
テストや管理・運用がしやすい実行環境
Salesforce Apexの実行環境は、すべてLightningプラットフォームにホストされているため、解釈、実行、制御がユーザーのインフラ管理を気にせずできます。
また、他のLightningプラットフォームと同様にマルチテナント型環境となっていることも特長です。複数のユーザーが共有リソースを安全かつ効率的に利用できるようにSalesforce Apexのランタイムエンジンは回避コードから保護されるように設計されており、共有リソースの独占を防ぎます。
実行環境の特長としてテストが容易であることもあげられます。Salesforce Apexでは、単体テストの作成と実行のサポートが組み込まれており、すべてのカスタムApexコードが期待どおりに動作するか確認が可能です。
Apexコードは異なるバージョンのAPIに保存が可能で、これによってプラットフォームのバージョンアップが発生しても影響を最小限に抑えることができます。
Salesforce Apexを用いてできること
こちらでは、Salesforce Apexを用いてできることについて紹介していきます。
Web サービスを開発する
Salesforce Apexを用いることで、Webサービスを開発することが可能です。
Salesforce Apexには、RESTやSOAPなどのWebサービスを簡単に作成・利用ができるAPIが備わっており、企業の既存システムとのデータ連携や外部アプリケーションとのデータ連動などが実装できます。
メールサービスを開発する
Salesforce Apexを用いることで、メールサービスの開発も可能です。
Salesforce Apexの「Messaging」クラスを用いることでSalesforceから自動的にメールを送信する仕組みの構築やトリガーやバッジ処理を活用して、特定条件下で顧客やユーザーに自動通知メールを送るワークフローが作成できます。
複数のオブジェクトに複雑な検証を実行する
Salesforce Apexは、複数のオブジェクトに複雑な検証を実行可能です。
例えば、オブジェクト間のデータの整合性のチェックや特定条件下で複数のオブジェクトを跨いだ計算、検証を実施する際にApexが活用されます。
このようなSalesforce Apexを用いることで、複雑なビジネスルールや条件のカスタム検証が実行可能です。
ワークフローでサポートされていない複雑なビジネスプロセスを作成する
Salesforceには標準のワークフロー機能がついており、ノーコードでさまざまな処理の自動化ができます。標準のワークフローに搭載されていないビジネスプロセスをワークフロー化するうえで、Salesforce Apexが用いられます。
Salesforce Apexの開始手順
こちらでは、Salesforce Apexの開始手順について紹介していきます。
①[設定]から[開発者コンソール]を開いて開始
Salesforce Apexのコード作成やコンパイル、デバッグ、テストなど一連の作業を行うのに使用されるのが総合開発環境の開発者コンソールです。
開発者コンソールは画面右上の[設定]アイコンを選択して[開発者コンソール]をクリックすることで利用できます。
別ウィンドウで開発者コンソールが立ち上がるため、その後[File]-[New]を選択して[Apex Class]または[Apex Trigger]をクリックすることで作成が開始できます。
②[クイック検索]から開始
開発者コンソールから以外にも、クイック検索からApexクラスやApexトリガーページに遷移して、[新規]からコード作成が可能です。
③オブジェクトの管理設定から[トリガ]に移動して開始
Apexトリガーを追加する際には、オブジェクト管理設定の[トリガー]を選択、[新規]をクリックすることでトリガーエディターが立ち上がり、トリガーの定義が行えます。
Salesforce Apexについてのよくある疑問
こちらでは、Salesforce Apexについてよくある疑問について紹介していきます。
Salesforce Apexとフローの違い
Salesforce Apexとフローの大きな違いは、コーディングの有無です。
フローは、Salesforceに標準で搭載されている、コーディング不要でビジネスプロセスの自動化が実現できる機能です。直感的なインターフェースをドラッグアンドドロップしてプロセスを構築していくため、プログラミングの知識がない人でも簡単にプロセスの自動化が実現できます。ただし、標準搭載されている機能にも限りがあるため、複雑なビジネスプロセスの実装は出来ない場合があることが注意点です。
Salesforce Apexは前述の通り、コーディングを行ってビジネスプロセスの自動化を実現できる機能になります。コーディングを行うためプログラミングの知識が必要ですが、その分より複雑なビジネスプロセスの実装に対応可能です。
このように、コーディングの有無や実装できるビジネスプロセスなどの違いがあります。
参照:SalesforceのApexとフローはどのように使い分けるべき?プロが徹底解説
ApexトリガーとApexクラスの違い
こちらでは、ApexトリガーとApexクラスの違いについて紹介していきます。
Apexトリガーとは
Apexトリガーは、Salesforceのデータベース操作(レコードの作成、更新、削除など)に応じて自動的にカスタムロジックを実行するための仕組みです。
トリガーを定義する際の構文は以下のようになっています。
trigger トリガー名 on オブジェクト名 (トリガーイベント) {
処理
}
上記構文の通り、Apexトリガーは指定したオブジェクトに関連するレコードにトリガーイベント(作成、更新、削除など)が発生したタイミングで記載した内容の処理が実行されます。
Apexトリガーで定義できるオブジェクトには制限があり、AccountやContactなどの最上位の標準オブジェクトとカスタムオブジェクト、一部子標準オブジェクトです。
また、トリガーイベントは7種類あり以下の通りです。
トリガーイベント | 概要 |
---|---|
before insert | レコードが作成される前に処理 |
before update | レコードが更新される前に処理 |
before delete | レコードが削除される前に処理 |
after insert | レコードが作成された後に処理 |
after update | レコードが更新された後に処理 |
after delete | レコードが削除された後に処理 |
after undelete | レコードが復元された後に処理 |
トリガーの実装例
こちらでは、トリガーの実装例を実装手順と共に解説していきます。
まずは、開発者コンソールの[File]-[New]-[Apex Trigger]をクリックします。
次に、トリガー名の入力、オブジェクトの選択(Accountを選択)を行い[Submit(送信)]をクリックしてください。
デフォルトのコードが表示されるため、コードを以下のコードに書き換えます。
trigger HelloWorld on Account (before insert) {
System.debug(‘Hello World!’);
}
[Ctrl+S]キーをクリックすることで保存可能です。
実装例のコードでは、Accountオブジェクトにレコードが作成された場合デバッグログに「Hello World!」と示す処理が記されています。
Apexクラスとは
Apexクラスとは、再利用可能な機能の集まりを定義する仕組みです。定義する内容として変数やメソッドが設定されます。
Apexトリガーと異なり、Apexクラスを実行するにはApexトリガーの処理コードに明示的に記載をして呼び出す必要があります。呼び出す必要がありますが、複数の処理で使い回すことが可能なことがメリットです。
Salesforce Apexを学ぶ方法
最後に、Salesforce Apexを学ぶ方法について、紹介していきます。
開発者向けのドキュメントを読む
Salesforce Apexについて学びたい場合は、Salesforce社が公式で出している開発者向けのドキュメントを読むことが効果的です。こちらは開発者向けにSalesforce Apexの基本的な機能から高度な機能までを網羅しています。
サンプルコードやベストプラクティス、各メソッドの使い方などが含まれており効率的な学習に役立つためおすすめです。また、定期的なバージョンアップにも対応しているため、開発者向けのドキュメントを見る習慣をつけることでバージョンアップの際のキャッチアップがスムーズになります。
サンプルプログラムを書きながら勉強する
サンプルプログラムを書きながら勉強することも、効果的な学習方法です。実際にプログラムを記述することでApexの構文や機能の理解が助けられます。また、実際に書いて検証することで、どのような動きをするのか確認することが可能です。
知識だけでなく、実際に記述する経験を身につけることで、実践的なスキルを高めることができます。
Trailhead(トレイルヘッド)を活用する
Trailhead(トレイルヘッド)を活用することもおすすめです。Trailhead(トレイルヘッド)とは、Salesforce公式が提供している無料の学習サイトで、Salesforce製品に関して初心者から上級者まで幅広いレベルに対応した学習コースが揃っています。
コースごとにテストが実施されており、学習やテストの結果からバッジを獲得できるため、モチベーションの維持にもつながりやすいです。
参照:SalesforceのTrailhead(トレイルヘッド)とは?概要や効果的な活用方法について徹底解説
わからない箇所はDeveloper Editionで検証する
上手く理解できない箇所は、Developer Editionで検証することが効果的です。これまで紹介してきた学習方法だけでは、実際にどのような動きをするのか実感できません。
Developer Editionで検証することで、自分の書いたコードが正しく動くかどうかを確認することができ、学習内容の定着を助けてくれます。Developer Editionは無料で利用ができる開発環境のため、Salesforce Apex以外にもSalesforce製品のスキルを身につけたい場合は登録しておくことがおすすめです。
参照:Salesforce Developer Editionとは?概要からサインアップ〜ログインの手順、活用方法まで徹底解説!
まとめ
本記事では、Salesforce Apexの概要や特長、できること、開始手順などについて解説してきました。
Salesforce Apexは、Javaに似た構造をもつSalesforce専用のプログラミング言語で、標準のワークフロー機能では再現できない複雑なビジネスプロセスの自動化に活用されます。コーディングが求められるため高度な知識が必要ですが、その分より高度な機能を実装できるため、Salesforce開発を行う上で活用したい機能といえるでしょう。
ただ、Apexのコードの記述方法やApexクラス、Apexトリガーなどの使用方法が難しいと感じるユーザーさんも少なくないでしょう。ストラでは、Salesforce Apexを含むSalesforce製品の環境設定や運用をご支援いたします。
Salesforcを活用したアプリケーションで、自社の複雑なビジネスプロセスの自動化をしたいと思われるご担当者様は、こちらのお問い合わせフォームよりお気軽にご相談してみてください。
執筆者 代表取締役社長 / CEO 杉山元紀
大学卒業後、株式会社TBI JAPANに入社。株式会社Paykeに取締役として出向し訪日旅行者向けモバイルアプリ及び製造小売り向けSaaSプロダクトの立ち上げを行う。
アクセンチュア株式会社では大手メディア・総合人材企業のセールス・マーケティング領域の戦略策定や業務改革、SFA・MAツール等の導入及び活用支援業務に従事。
株式会社Paykeに再入社し約10億円の資金調達を行いビジネスサイドを管掌した後、Strh株式会社を設立し代表取締役に就任。
▼保有資格
Salesforce認定アドミニストレーター
Salesforce認定Pardotスペシャリスト
Salesforce認定Pardotコンサルタント
Salesforce認定Sales Cloudコンサルタント