Quip終了に伴うデータエクスポートでお困りの方へ

SalesforceのApexとは?特徴やフローとの違いを解説

目次

初心者でもわかるように解説!Apexの特徴や、利用シーンについて学ぼう

「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クラス?Apexトリガー?テストクラス?と解らなくなることもあると思います。

以下の表で簡単に解説していますので、イメージとともになんとなく覚えてみましょう。
実装や本番組織にリリースする際に重要となるポイントは以下の2つです。

  • Apexトリガーは自動化のスイッチの役割なので、具体的な処理はApexクラスに存在するメソッドに記載すること
  • Apexクラスを本番環境にリリースするときは、テストクラスが必要であること
概要イメージ・具体例
ApexクラスいわゆるApex、Apexクラスの中に関連する処理(メソッド)のコードを記述する「フレンチ料理集」「中華料理集」といったレシピ集
メソッドApexクラスの中にある、具体的な処理を記述したコードのまとまり「鮭のムニエル」「麻婆豆腐」といったレシピ集の中の1つのレシピ
ApexトリガーSalesforceのレコード操作をきっかけに動く「自動化のスイッチ」お客様からのオーダー
テストクラス作成したプログラムが正しく動くかを確認するための「シミュレーション用プログラム」お客様に料理を出す前の試食

※サンブリッジが独自に調査した情報をもとに作成しております

参考:Apexに関するその他記事

Apex活用事例

ここまででApexの概要はご理解いただけたのではないでしょうか。
最後に、Apexを用いて何ができるのか、例を一つご紹介します。

(例)商談受注時、社内の基幹システム(ERP)への売上確定と請求処理の開始

STEP
Salesforceの商談フェーズに合わせてApexが起動

Salesforceの商談が「クローズ済み」に更新された際、Apexが起動します。

STEP
Apexが必要な情報をまとめて取得し、関連処理を呼び出す

商談、関連する取引先、および商品情報をApexがまとめて取得し、ERPの受注・請求処理を同期的に呼び出します。

STEP
受注IDなどの情報を取得し、商談レコードに記録

外部システムで受注が正常に登録されると、Apexが受注IDなどの情報を取得して、Salesforceの商談レコードに記録します。

STEP
ERPでエラー発生時には更新処理をロールバックし、エラー通知

もしERP側でエラーが発生した場合には、商談の更新処理をロールバックしてユーザーにエラー通知も可能です。

今回の例では、標準のフローでは対応が難しい、複数のオブジェクトにまたがる計算や外部システムとの連携を行っています。

このような処理を実装することで、営業担当や営業事務の負担を減らすことが可能です。

まとめ

いかがでしたでしょうか。Apexの特徴やフローとの違いは理解いただけたでしょうか。
Salesforceで実現したいことに、Apexが必要になりそうと思った方もいらっしゃるのではないかと思います。

複雑な自動化処理や外部システムとの連携など、Apex開発が必要であればぜひサンブリッジにお問い合わせください!

それ、サンブリッジなら解決できます!
Salesforceで解決するビジネス課題

サンブリッジがこれまでにご支援してきたSalesforce構築・実装において、お客様の課題がどのように解決したのかを実際の事例やお客様からの評価などを全16ページにまとめました。

サービス・ソリューションに関するお問い合わせ

Salesforce・AWSなど、ご支援に関してご不明な点やご相談はこちらからお問い合わせください。

貴社のビジネス課題を発見し、解決にむけてコンサルタントがご提案いたします。

この記事を書いた人

2024年にサンブリッジに新卒で入社し、Salesforceの導入や運用保守の支援をしています。
初心者だからこそ躓きやすいポイントや、実際にご支援をしてきた中で役に立った情報などを発信していきます。

目次