「SalesforceのApexとは何でしょうか?」と聞かれて答えられますか?
Salesforceを使い始めてからしばらく経って、「ある程度Salesforceのことわかってきた!」という人も、「Apexはよくわからん…!」という方も多いのではないでしょうか?
今回はApexの概要と自動化処理でおなじみのフローとの違いについて解説していきます。
この記事を読めば、Apexの特徴やどんな場面で使うのかを説明できるようになることでしょう。
最近の話題沸騰中のAgentforceとの違いについても整理していますので、ぜひ最後までご覧ください。
Apexの概要
まずはApexの概要から説明します。 Apexとは何かと聞かれた際に、私は以下のように説明します。
“Apexとは、Salesforce上で動作するプログラミング言語で、 標準機能では実現できない高度な業務自動化や、 独自の機能拡張を実現するために使われる。”
Apexを理解するためのポイントは以下の3つです。
- 実装にはプログラミングをする必要がある (Agentforceなどの生成AIとは別物)
- フローなどの標準機能では実現できない組織独自の業務自動化に使う
- Apexを使うことは必須ではない
つまり、Salesforce上で何か自動化処理を行いたいとなった場合にプログラミングする、そのプログラミング言語がApexなのです。
そのためApexはJavaやC、Pythonといったシステム開発で用いられるプログラミング言語の一種と言えるでしょう。
このApexを用いて、業務自動化に使うことが大半ですが、Salesforceの自動化処理といえば、 フローという標準機能も有名です。
次にフローとApexでは何が違うのかを見ていきましょう。
Apexとフローの比較
Apexの特徴
まずは、フローと比較しながらApexの特徴を説明していきます。
いくつかの観点で比較をしていますが、Apexの特徴は複雑・大量・外部連携が得意ということです。
シンプルな業務自動化であればフローを使うのを推奨しますが、複雑な条件の処理、大量レコードの処理、外部システムとの連携ではApexのほうが柔軟かつ高速に処理できます。
| フロー | Apex | |||
|---|---|---|---|---|
| 開発スピード | ○ | 画面操作で視覚的に構築できるため、簡単なものであれば即日実装も可能 | △ | コードの記述に加え、テストクラスの作成も必須なため、工数がかかる |
| 学習難易度 | ○ | 処理の流れが視覚的にわかり、プログラミング未経験者でも学びやすい | △ | プログラミングの基礎知識や、特有の文法・設計思想の学習が必要 |
| メンテナンス性 | ○ | 処理の流れが図になっているため、開発者以外でも仕様の把握や修正が可能 | △ | コードを読み書きできる開発者でないとメンテナンスが困難で、属人化しやすい |
| 複雑なロジック | △ | フロー図が迷路のように複雑化し、メンテナンス性が著しく低下する | ○ | コードで記述するため、複雑な条件分岐や計算も、スッキリと管理・記述できる |
| 大量データ処理 | △ | 数千件以上のデータを扱う場合、処理速度の低下のリスクが高まる | ○ | 大量データを高速かつ安全に処理するための仕組みが備わっている |
| 外部システム連携 | × | 外部から呼び出されるAPIの作成は不可能で、外部を呼び出す機能も限定的 | ○ | 独自のAPIを自由に作成・公開でき、外部システムと双方向の柔軟な連携が可能 |
※サンブリッジが独自に調査した情報をもとに作成しております
Apexの起動条件
次に、フローと比較しながらApexの起動条件を説明していきます。
どちらもほぼ同じ条件で起動しますが、自分だけのカスタム画面の作成や外部システムとのデータ連携の実装の際にはApexを使う必要があります。
一方でレコード操作時のシンプルな業務自動化であれば、フローを使うことをお勧めします。
こちらもシンプルな要件であればフロー、複雑な要件であればApexと覚えておくと良いと思います。
| 起動するきっかけ | フロー | Apex |
|---|---|---|
| レコードの操作 (作成・更新・削除時) |
可能(レコードトリガーフロー) | 可能(Apexトリガー) |
| ユーザーのアクション (ボタンクリック時など) |
可能(画面フロー)
※簡単な入力フォームや、ステップ形式の画面の作成に最適 |
可能(LWC/Visualforceと連携)
※自由度の高いオリジナルな画面を実装する場合に必須 |
| 特定の時間 | 可能(スケジュールトリガーフロー)
※「毎日深夜1時に実行」など、シンプルなスケジュールに |
可能(スケジュールApex)
※「毎月第2火曜日に実行」など、より複雑なスケジュールに |
| 外部システム連携 | 不可能 | 可能
※外部システムとの連携はApexの独壇場 |
※サンブリッジが独自に調査した情報をもとに作成しております
専門用語解説
ここで、Apexで使われる専門用語を解説します。 Apexを調べていく中で、最初のうちはApexクラス?Apexトリガー?テストクラス?とわからなくなることもあると思います。
以下の表で簡単に解説していますので、イメージとともになんとなく覚えてみましょう。
実装や本番組織にリリースする際に重要となるポイントは以下の2つです。
- Apexトリガーは自動化のスイッチの役割なので、具体的な処理はApexクラスに存在するメソッドに記載すること
- Apexクラスを本番環境にリリースするときは、テストクラスが必要であること
| 概要 | イメージ・具体例 | |
|---|---|---|
| Apexクラス | いわゆるApex、Apexクラスの中に関連する処理(メソッド)のコードを記述する | 「フレンチ料理集」「中華料理集」といったレシピ集 |
| メソッド | Apexクラスの中にある、具体的な処理を記述したコードのまとまり | 「鮭のムニエル」「麻婆豆腐」といったレシピ集の中の1つのレシピ |
| Apexトリガー | Salesforceのレコード操作をきっかけに動く「自動化のスイッチ」 | お客様からのオーダー |
| テストクラス | 作成したプログラムが正しく動くかを確認するための「シミュレーション用プログラム」 | お客様に料理を出す前の試食 |
※サンブリッジが独自に調査した情報をもとに作成しております
Apex活用事例
ここまででApexの概要はご理解いただけたのではないでしょうか。
最後に、Apexを用いて何ができるのか、例を一つご紹介します。
(例)商談受注時、社内の基幹システム(ERP)への売上確定と請求処理の開始
- Salesforceの商談が「クローズ済み」に更新された際、Apexが起動します。
- Apexは、商談、関連する取引先、および商品情報をまとめて取得し、ERPの受注・請求処理を同期的に呼び出します。
- 外部システムで受注が正常に登録されると、受注IDなどの情報を取得して、Salesforceの商談レコードに記録します。
- もしERP側でエラーが発生した場合は、商談の更新処理をロールバックしてユーザーにエラーを通知することも可能です。
今回の例では、標準のフローでは対応が難しい、複数のオブジェクトにまたがる計算や外部システムとの連携を行っています。
このような処理を実装することで、営業担当や営業事務の負担を減らすことが可能です。
まとめ
いかがでしたでしょうか。Apexの特徴やフローとの違いは理解いただけたでしょうか。
Salesforceで実現したいことに、Apexが必要になりそうと思った方もいらっしゃるのではないかと思います。
複雑な自動化処理や外部システムとの連携など、Apex開発が必要であればぜひサンブリッジにお問い合わせください!
それ、サンブリッジなら実現できます!
Salesforceで解決するビジネス課題
【ダウンロード資料】Salesforce導入・開発を検討されているお客様必見
数あるSalesforceベンダー企業のなかから、サンブリッジが選ばれる理由はなぜか。課題別にどんなソリューションがあるのかといった観点で、実際にサンブリッジが対応した事例やご利用企業様からの評価などをご紹介します。(全16ページ)