Salesforceのガバナ制限とは?Salesforce開発・運用で知っておきたいポイントを詳しく解説
この記事でわかること
- Salesforceのガバナ制限とは?
- ガバナ制限の種類とそれぞれの制限がもたらす影響
- ガバナ制限に対処するための手法
- ガバナ制限を考慮した開発や運用のポイント
- ガバナ制限に関するよくある質問とその回答
執筆者 取締役 / CTO 内山文裕
Salesforceの導入・開発に携わったことのある方は、”ガバナ制限”というワードを耳にしたことがあるかと思います。Salesforceを用いて日々業務を行うなかで「毎日起動されるフローが今日の実行でガバナ制限に引っかかってエラーで止まってしまった!」といった不具合の発生や、「ガバナ制限を考慮した設計をしてほしい」とクライアントから釘を刺されたご経験をお持ちの方もいらっしゃるかもしれません。
Salesforceを最大限に活用するためには、ガバナ制限についての理解が不可欠です。本記事では、そんなガバナ制限についての概要から対処方法に至るまで詳しく解説します。
参照:Salesforceの開発者コンソールの使い方とは?【すぐに使える実例付き】
参照:Salesforce(セールスフォース)は何がすごい?機能やメリット・デメリットを簡単に解説!
1.ガバナ制限とは?
Salesforceが提供するクラウドサービスは、多くの企業やユーザーに利用されています。各顧客のデータは互いにアクセスできないようにそれぞれで管理されていますが、Salesforceのサービスにアクセスするためのネットワークや、フローやApexの処理で用いられるCPU・メモリは共用されています。そのため、リソースを適切に管理し、すべての顧客に公平なサービスを提供するために、Salesforceではガバナ制限が設けられています。ガバナ制限は、システムのパフォーマンスや安定性を維持するための制約であり、それぞれの制限には特定の目的や役割があります。
Governor(ガバナ):調速機、律速機(流量・速度などを一定にする機構)。SalesforceではSalesforceプラットフォーム上のリソース(CPU・ネットワーク)を利用者で公平に分配するための機構という意味で使われている。
参照:SalesforceのApexとフローはどのように使い分けるべき?プロが徹底解説
2.ガバナ制限の種類とその影響
Salesforceには、様々な種類のガバナ制限があります。それぞれの制限がどのような影響をもたらし、どのように対処すべきかを詳しく解説します。
1.Apexコードの制限
Apexコードは、Salesforceプラットフォーム上でカスタムロジックを実行するための言語です。このApexコードには、実行時間の制限やメモリ使用量の制限などがあります。これらの制限を超えるとエラーが発生し、コードの実行が失敗してしまうため、適切な処理フローの設計、エラーハンドリングの構築やリソース管理が必要です。
2.SOQLクエリの制限
SOQL(Salesforce Object Query Language)は、Salesforceデータベースからデータを取得するためのクエリ言語です。SOQLクエリには、1回のトランザクション内で取得できるレコード数や、1日に実行できるクエリ数の制限があります。これらの制限を超えないためにも、効率的なクエリ設計やキャッシュの活用が求められます。
3.APIリクエストの制限
Salesforce APIは、外部システムとの連携やデータのインポート・エクスポートを行う際に利用されます。APIリクエストには、1日あたりのリクエスト数の制限があります。制限を超えると、一時的にAPIの利用ができなくなります。APIの使用計画やバッチ処理の実装が重要です。
4.ワークフローとプロセス制限
ワークフローやプロセスビルダーを使って自動化されたビジネスプロセスは、Salesforceで非常に便利な機能です。しかし、これらの機能にも制限があります。例えば、1時間あたりのトリガー実行回数や、1回のトランザクション内で実行できるアクション数などです。適切な設計や最適化が求められます。
各種制限の閾値はSalesforceによって変更される場合があります。具体的な数値をご確認されたい場合はSalesforce公式のクイックリファレンスを参照ください。また、ご契約中のエディションによっても制限値が異なる場合があります。
3.ガバナ制限に対するベストプラクティス
Salesforceのガバナ制限に対処するためには、いくつかのベストプラクティスがあります。これらのプラクティスを適用することで、ガバナ制限を遵守し、システムのパフォーマンスを向上させることができます。
1.バルク処理の実装
バルク処理は、大量のデータを効率的に処理するための手法です。一度に多くのデータを処理することで、APIリクエスト数やクエリ数を抑えることができます。
2.パフォーマンス最適化
Apexコード内の処理を見直すことで処理時間の短縮を図ったり、クエリの抽出条件・抽出項目を見直しクエリにかかる実行時間の短縮や使用メモリの節約をすることで、パフォーマンスを最適化でき、ガバナ制限への抵触を回避することができます。
3.エラーハンドリング
上記対応をしたとしても、運用する中で保持するデータが増えることで突発的にガバナ制限に抵触してしまうことがあります。ガバナ制限に抵触し処理がエラーとなった場合にも、エラーメッセージを表示する・リカバリ処理を実装するなどの適切なエラーハンドリングを構築しておくことで、万が一の際にも大事な顧客データを守ることができます。
4.ガバナ制限を考慮した開発・運用のポイント
ガバナ制限を考慮した開発や運用には、以下のポイントが重要です。
1.制限を把握する
Salesforceのガバナ制限を遵守するためには、まずは制限をしっかりと把握することが重要です。公式ドキュメントや関連情報を定期的にチェックし、最新の制限を理解しておくことが求められます。
2.システム設計を見直す
ガバナ制限を考慮したシステム設計は、パフォーマンスや運用効率を向上させるうえで不可欠です。システム設計の段階から、ガバナ制限を意識して設計を行いましょう。
3.モニタリングとアラート設定
ガバナ制限に達する前に、問題を検出し対処するために、モニタリングやアラート設定が重要です。Salesforceでは、ガバナ制限の使用状況を確認できるダッシュボードやレポートが提供されています。これらを活用しましょう。
5.ガバナ制限に関するよくある質問と回答
最後に、Salesforceのガバナ制限に関するよくある質問とその回答を紹介します。
Q1: ガバナ制限を超えた場合、どのような対処が必要ですか?
A: ガバナ制限を超えた場合、まずは問題の原因を特定し、原因に応じてシステムの最適化やリソース管理の改善を行うことが求められます。
Q2: ガバナ制限が変更されることはありますか?
A: Salesforceは定期的にアップデートが行われるため、ガバナ制限も変更されることがあります。そのため、定期的に公式ドキュメントや関連情報をチェックし、最新の制限を把握しておくことが重要です。
Q3: ガバナ制限を緩和する方法はありますか?
A: ガバナ制限の緩和は、一部のケースではSalesforceに対して申請が可能です。ただし、通常はシステムの最適化やリソース管理の改善が求められます。緩和申請を検討する前に、まずは自社のシステムやコードを見直し、制限を遵守できるような設計や開発が行われているか確認しましょう。
Q4: ガバナ制限を避けるために、どのようなアーキテクチャ設計が望ましいですか?
A: ガバナ制限を避けるためには、以下のようなアーキテクチャ設計が望ましいです。
モジュール化された設計
機能ごとに独立したモジュールに分けることで、リソースの消費を抑えることができます。
パフォーマンス最適化
システムの応答速度や処理能力を向上させるために、コードのリファクタリングやクエリの最適化、キャッシュの活用などを行います。
バルク処理
大量のデータを効率的に処理するために、バルク処理を実装し、APIリクエスト数やクエリ数を抑えます。
6.まとめ
Salesforceのガバナ制限は、システムのパフォーマンスや安定性を維持するために重要な要素です。制限を理解し、適切な設計や開発を行うことで、Salesforceを最大限に活用することができます。ガバナ制限にかからないよう、本記事でご紹介したような対策を適用し、システムのパフォーマンス向上や運用効率の最適化を図ることが重要です。
ストラでは本記事でご紹介したガバナ制限の対策はもちろん、ご要件に併せてより最適なソリューションをご提案し設計・構築することも可能ですので、お問い合わせフォームより、お気軽にご相談ください。
執筆者 取締役 / CTO 内山文裕
青山学院大学卒業後、株式会社ユニバーサルコムピューターシステムに入社。
大手商社のB2B向けECサイトの構築にて会員登録、見積・注文機能、帳票出力などECにおける主要機能のフロント画面・バックエンドの開発に従事。 その後アクセンチュア株式会社に入社。デジタルコンサルタントとしてWebフロントエンド・モバイルアプリの開発やアーキ構築を主に、アパレル・メディア・小売など業界横断的にシステム開発を支援。また、ビッグデータを活用したマーケティング施策の策定やMAツールの導入・運用支援にも従事。
2022年2月にStrh株式会社の取締役CTOに就任。デジタルプロダクト開発の支援やMAツール導入・運用支援を行っている。
▼保有資格
Salesforce認定アドミニストレーター
Salesforce認定Java Scriptデベロッパー