SalesforceのApexとフローはどのように使い分けるべき?プロが徹底解説
この記事でわかること
- Salesforceのプロセスの自動化とは?
- Salesforce Apexのメリット・デメリットは?
- Salesforce フローのメリット・デメリットは?
- フローとApexはどちらを利用すべきか?検討の
執筆者 取締役 / CTO 内山文裕
日々Salesforceを使って業務をされている方へ、「この作業、単純作業だし毎日同じことの繰り返しで辛いな。。。自動化できたらな。。。」と思われることありませんか?
そのお悩み、Salesforceの機能を使って解消できるかもしれません!毎日決まった時刻に実行する処理や、何かのアクションをトリガーに実行する処理のことを「プロセスの自動化」と表現されることがあります。
プロセスの自動化の実現方法には、フローとApexがあり、本記事ではそれぞれのメリット・デメリットをご紹介した上で、Salesforceのプロセスの自動化においてフローを使用するか、Apexを使用するかについて、検討方法をご紹介いたします。
参照:Salesforceフローとは?基本機能からレコードトリガフローの使い方も具体例と一緒に徹底解説!
参照:Salesforce(セールスフォース)は何がすごい?機能やメリット・デメリットを簡単に解説!
目次
1. Salesforceのプロセスの自動化とは
Salesforceのプロセスの自動化は、繰り返し行われるタスクや処理を効率的に実行するための手段です。これにより、企業は業務プロセスを効率化し、従業員がより高付加価値のタスクに集中できるようになります。Salesforceでは、主にフローとApexによってプロセスの自動化が実現されます。
2. フローとは
フローは、Salesforceのビジュアルなワークフロービルダーであり、ドラッグアンドドロップでビジネスロジックを構築できます。これにより、管理者や開発者がプログラム開発の知識を持たずとも簡単にプロセスの自動化を実現することができます。
参照:Salesforceフローとは?基本機能からレコードトリガフローの使い方も具体例と一緒に徹底解説!
フローのメリット
コーディング不要
コードを書くことなくプロセスの自動化を実現できます。
直感的なインターフェース
繰り返し処理や分岐処理がフローチャートのように表示されるため、誰でも簡単に使いこなすことができます。
短い開発時間
コードを書かずにプロセスの自動化を作成できるため、開発時間が短くなります。
フローのデメリット
制約の数・パフォーマンス
フローは1時間あたり2000回の同時実行制限や、1つのフローで取得できるレコード数が最大50,000件といった制約があります。これらの制約により、複雑なフローを自動化するような高度なビジネスロジックには対応できない場合があります。例えば処理対象の件数が多い状態でループするような処理を行い、更にはそのループ内で関連レコードの取得や更新処理を行うことで、前述の制約に対してより引っかかりやすい状況を招きやすくなります。
3. Apexとは
Apexは、Salesforce独自のプログラミング言語で、Javaに似た構文が採用されています。Apexを使用することで、より高度なビジネスロジックや複雑なプロセスの自動化を実現できます。
Apexのメリット
柔軟性
Apexはプログラミング言語であるため、フローでは対応できない複雑なロジックやカスタマイズが可能です。また処理の実行タイミングをCron形式(秒、分、時、日、月、曜日、年)で指定できることから、フローよりも柔軟な起動設定を行うことができます。
パフォーマンス
Apexはフローよりも高速に実行されるため、大量のデータを扱う場合や高速な処理が求められる場合に適しています。
外部連携
Apexを使用することで、外部システムやAPIとの連携が可能になります。
Apexのデメリット
学習曲線
ApexはJavaをベースとしたプログラミング言語であるため、フローよりも学習曲線が急です。特に、プログラミング経験がないユーザーにとっては、Javaの知識に加えてApexの知識をキャッチアップしなければならないため、すぐに理解して構築に用いることは難易度が高いでしょう。
開発時間
Apexでの構築はプログラミングが必要なため、直感的に構築が可能なフローよりも一般的には開発時間がかかります。また、Apexコードはテストクラスを作成し、75%のコードカバレッジを達成する必要があります。これを達成しないと、Salesforceの本番環境にApexコードをハネイすることができません。
メンテナンス
メンテナンスにおいてもApexはプログラミングで処理が構築されているため、フローと比較して運用時のメンテナンスが比較的難しくなります。特に、開発者がプロジェクトから離れた場合、新しい開発者がコードの理解をできるようになるまでやそのコードに対して修正をかけられるようになるまで、より時間がかかります。
4. フローとApex、どちらを利用すべきか?
ここまでSalesforceでプロセスの自動化を実現する2大方法としてフローとApexを挙げ、それぞれのメリット・デメリットをご紹介してきました。これらの情報を踏まえて、フローとApexのどちらを用いてプロセスの自動化を実現すべきなのか、検討方針を表にまとめました。皆様のご担当されている案件の要件や体制と照らし合わせながら、どちらを選ぶべきなのか是非チェックしてみてください。
5.決めきれない場合はどうしたら良い?
チェックの結果、いかがでしたでしょうか?上記の表に照らし合わせても、「どちらとも言い難い!」という結論に至った方も中にはいらっしゃるのではないでしょうか。そんな場合には、”どちらも使う”という方法をご一考してみてください。
実は、フローの中からApexで定義した処理を呼び出すことができます。
- どうしてもフローでは実現できない処理があるが、それ以外はフローで実現できる
- Apexで実装しなければならない処理以外は、運用の中で開発者でなくともメンテナンスできるようにしておきたい
このような要件もよくあるのでは?と思いますので、その際にはフロー・Apexのいいとこ取りも念頭に置きながらご検討を進めてみてはいかがでしょうか。
ただし、この案を採択する場合、どこからどこまでをフロー or Apexのどちらで実現するのか、設計の段階で検討しなければいけないことが増える点にはご留意ください。
6. まとめ
Salesforceのプロセスの自動化において、フローとApexのどちらを使用するかは、プロジェクトの要件、リソース、スキルによって異なります。フローは簡単で直感的なツールであり、コーディングの知識がなくてもプロセスの自動化を実現できますが、制約やパフォーマンスの問題があります。一方、Apexは高度なビジネスロジックやカスタマイズが可能であり、外部システムとの統合も容易ですが、開発スキルやメンテナンスが必要です。
最終的には、プロジェクトの目的とリソースを考慮し、適切な選択肢を選ぶことが重要です。プロジェクトの要件が簡単であり、開発リソースが限られている場合は、フローを使用することを検討してください。一方、高度なビジネスロジックや外部システムとの統合が必要であれば、Apexの使用を検討してください。どちらの選択肢もSalesforceプラットフォーム内で強力な自動化を実現するための有効な方法です。
ストラではフロー・Apexのどちらを用いた開発もご支援できる体制を整えております。自社のケースの場合どちらにすべきなのか判断がつかないなど、開発に対するご不安やSalesforceの導入や活用においてお困りごとがありましたら、お問い合わせフォームよりお気軽にご相談ください。
執筆者 取締役 / CTO 内山文裕
青山学院大学卒業後、株式会社ユニバーサルコムピューターシステムに入社。
大手商社のB2B向けECサイトの構築にて会員登録、見積・注文機能、帳票出力などECにおける主要機能のフロント画面・バックエンドの開発に従事。 その後アクセンチュア株式会社に入社。デジタルコンサルタントとしてWebフロントエンド・モバイルアプリの開発やアーキ構築を主に、アパレル・メディア・小売など業界横断的にシステム開発を支援。また、ビッグデータを活用したマーケティング施策の策定やMAツールの導入・運用支援にも従事。
2022年2月にStrh株式会社の取締役CTOに就任。デジタルプロダクト開発の支援やMAツール導入・運用支援を行っている。
▼保有資格
Salesforce認定アドミニストレーター
Salesforce認定Java Scriptデベロッパー