
はじめに
こんにちは!Salesforceチームの原田です。
今回は、SalesforceのAPI使用状況をSlackに通知する仕組みについてご紹介します。
SalesforceのAPIコール数とは、外部システムからSalesforceへ行われるAPI呼び出しの合計回数を指します。 Salesforceはマルチテナント環境で複数企業がサーバーリソースを共有しているため、すべての顧客が公平に利用できるよう 24時間あたりに実行できるAPIリクエスト数の上限 が定められています。
この上限を超えるとAPIリクエストが拒否され、外部連携の処理が止まってしまう可能性があります。
ビザスクでも複数の外部サービスとSalesforceを連携しているため、API使用量の“傾向を早めに把握できる仕組み”が必要でした。
この記事では、こうした背景をふまえて
API使用量を定期的にSlackへ通知し、閾値を超えている場合は注意メッセージを付与する仕組み の概要と実装ポイントをまとめています。
従来のAPI使用量監視の課題
Salesforceでは以下の方法でAPIコール数を確認できます。
ただし、これらの方法には次のような課題がありました。
- ページを定期的に見に行く必要があり、気づくのが遅れやすい
- メール通知は見落としやすい(特にSlack中心のチームでは埋もれがち)
- 閾値を“超えたあと”にしか通知されず、使用量の変化をリアルタイムに把握できない
こうした理由から、「もっと早く・確実に・Slackで気づける仕組み」が必要でした。
改善策:API使用量を自動監視してSlackへ通知する仕組み
今回の改善では、API使用量をSalesforce内で自動的に監視し、
閾値を超えているかどうかに関わらず、定期的にSlackへ使用状況を通知する仕組みを実装しました。
現在の使用量を定期共有することで、急激な増加にも早期に気づきやすくなります。
閾値を超えた場合は追加の注意文言を付けることで、アラートとしても機能します。
Salesforce側の実装ポイント
API使用量の取得
OrgLimits.getMap() を利用し、DailyApiRequests から直近24時間のAPI使用量と上限値を取得します。
閾値判定のロジック
カスタムメタデータに閾値を保持し、
使用率が閾値を超えているかどうかを判定します。
閾値未満でも通常の状況をSlackに通知します。
Scheduled Apexによる定期実行
Schedulable を実装し、1時間ごとなど任意の間隔でAPI使用量をチェックします。
Slack Webhook への通知
Slack送信用クラスを使用し、使用状況をSlackチャンネルへ投稿します。
閾値超過時は注意文言を追加します。
簡易実装サンプル(Apex)
/**
* 組織のAPI使用状況を定期的にSlackへ通知するクラスの簡易サンプルです。
* ※SlackNotifier や DAO クラスの実装は省略しています。
*/
public with sharing class OrgApiUsageAlert implements Schedulable {
/**
* Scheduled Apex のエントリーポイント
*/
public void execute(SchedulableContext sc) {
notifyApiUsage();
}
/**
* API使用状況を取得し、Slackへ通知するメイン処理
*/
private void notifyApiUsage() {
// カスタムメタデータから各種設定値を取得(実装は DAO に委譲)
EnvironmentSetting__mdt env = EnvironmentSettingDAO.getInstance();
// Salesforceが保持するAPI使用状況(直近24時間)
System.OrgLimit dailyApi = OrgLimits.getMap().get('DailyApiRequests');
Decimal usagePercent = calcPercent(dailyApi.getValue(), dailyApi.getLimit());
// SlackNotifier は Webhook 送信をまとめたユーティリティクラス(実装は記事では割愛)
SlackNotifier.post(
buildMessage(usagePercent, env.ApiUsageThreshold__c)
);
}
/**
* 使用率を算出(例:45.3% → 45% に丸める)
*/
private Decimal calcPercent(Decimal used, Decimal limit) {
return (used / limit * 100).setScale(0, RoundingMode.HALF_UP);
}
/**
* Slack に送るメッセージを組み立てる
*/
private String buildMessage(Decimal percent, Decimal threshold) {
String msg = '【API使用状況(直近24時間)】\n';
msg += '● 使用率:' + percent + '%\n';
// 閾値超過時のみ注意文言を追加
if (percent > threshold) {
msg += '*※ しきい値(' + threshold + '%)を超えています ※*\n';
}
return msg;
}
}
まとめ
今回、SalesforceのAPI使用状況を定期的にSlackへ通知する仕組みを実装しました。 標準のメール通知では気づきにくかったAPI使用量の変化を、 チーム全体で素早く共有できるようになる点が大きなポイントです。
今後は、通知頻度のチューニングや、増減傾向をもとにした分析など、 実運用の中で得られた知見をもとに改善を進めていく予定です。
おわりに
ビザスクではエンジニアの仲間を募集しています! 少しでもビザスク開発組織にご興味を持たれた方は、ぜひ一度カジュアルにお話ししましょう! recruit.visasq.co.jp