Salesforce と外部システムの連携パターン図解:同期・非同期・バッチの選び方
このページには広告リンクを含みます。
Salesforce 外部システム連携の6パターン
Salesforce Architects の Integration Patterns は、連携を次の6つに分けています。名前を覚えると、社内や委託先との会話が揃います。

| パターン | 向き | タイミング | 典型的な場面 | 主な手段 |
|---|---|---|---|---|
| Request and Reply | Salesforce → 外部 | 同期 | 画面で与信の結果をその場で見る | External Services、Flow の HTTP コールアウト、Apex コールアウト |
| Fire and Forget | Salesforce → 外部 | 非同期 | 受注を基幹に知らせる | プラットフォームイベント、Pub/Sub API、変更データキャプチャ |
| Batch Data Synchronization | 双方向 | 非同期 | 顧客マスタの夜間同期 | ETL ツール+Bulk API 2.0 |
| Remote Call-In | 外部 → Salesforce | 同期・非同期 | 基幹から商談を作成・更新 | REST API、Composite API、Bulk API 2.0 |
| UI Update Based on Data Changes | Salesforce のデータ変更 → 画面 | 非同期 | ケースの完了を管理者の画面に自動で知らせる | プラットフォームイベント+Lightning コンポーネント |
| Data Virtualization | Salesforce から外部を参照 | 同期 | 基幹の請求履歴をコピーせず表示 | Salesforce Connect |
同期か非同期かの判断基準
同期は「結果が返るまで利用者を待たせる」連携です。向いているのは、少ないデータで、その場で結果が要る場面に限られます。
Apex のコールアウトには、1トランザクション100回、累計の待ち時間120秒という上限があります。既定の時間切れは10秒です。公式の連携パターンは、時間切れの危険を減らす案の1つとして、コールアウトの時間切れを5秒に設定する方法を挙げています。5秒を超えるトランザクションが50を超えて走る設計にも、公式は注意を促しています。
Request and Reply では、Salesforce 側の変更は成功の応答を受けてから確定させます。外部の処理は、同じ要求が2回届いても壊れないように作ります(べき等)。一意のメッセージ ID と upsert を使う方法が示されています。
非同期は「受け付けだけ確認して、処理は相手に任せる」連携です。外部の停止や遅延が利用者に伝わらないのが利点です。ただし、失敗に気付く仕組みを別に作る必要があります。
REST API・Composite API・Bulk API 2.0 の使い分け
外部から Salesforce に書き込むときの選び方です。
| 手段 | 件数の目安 | 向いている場面 | ハマる点 |
|---|---|---|---|
| REST API | 少量 | 1件ずつの作成・更新・upsert | 既定では1件ごとにコミットされる |
| Composite API | 少量 | 親子を一度に作る、まとめて成功か失敗にしたい | HTTP 200 でも副要求が失敗していることがある。本文を確認する |
| Bulk API 2.0 | およそ2,000件超 | 大量の取り込み、非同期 | 並列処理で、バッチごとに別のトランザクション |
| SOAP API、Apex の独自 Web サービス | 少量 | 既存の連携の維持 | 公式の評価は Suboptimal(次善) |
Bulk API 2.0 の取り込みは、直近24時間で1億5,000万レコードが上限で、Salesforce が10,000件ごとに内部のバッチに分けます。1ジョブのファイルは150MBまでで、base64 への変換で増える分を見込むと、元のデータは100MB以内にします。バッチが別のトランザクションなので、全件が一度に成功するとは限りません。子レコードは親のキーでまとめておくと、ロックの競合を減らせます。
REST API、SOAP API、Bulk API の呼び出しは、組織の API 要求の割り当てに数えられます。割り当ては24時間あたりの回数で、Enterprise Edition と Unlimited Edition などでは「100,000+ライセンス数×ライセンス種別ごとの回数+追加購入分」で決まります。たとえば Salesforce ライセンス1つあたりは、Enterprise で1,000回、Unlimited で5,000回です。REST API の応答ヘッダー Sforce-Limit-Info で使用量を見られます。エディションの違いはエディションの比較も確かめてください。
データローダやデータインポートウィザードは、データの取り込みや移行を人が行うときの道具です。Salesforce Architects は、これらを連携の基盤にしないよう書いています。
バッチ同期では、最後に成功した時点を記録する制御テーブルやウォーターマーク、両方のシステムの ID を持つ外部キーの項目を用意します。夜間など、利用者とかち合わない時間に走らせます。
プラットフォームイベント・変更データキャプチャ・Outbound Message
Salesforce から外へ非同期で知らせる手段は複数あります。公式の評価と制限を並べました。
| 手段 | 何を送るか | 保持期間 | 位置づけ |
|---|---|---|---|
| プラットフォームイベント | 自分で定義した内容。上限1MB | 3日 | Flow でも Apex でも発行できる。連携パターンの評価は Best |
| 変更データキャプチャ(CDC) | レコードの変更内容。形式は決まっている。上限1MB | 3日 | 項目の変更を送るのに向く。連携パターンの評価は Best |
| Pub/Sub API | イベントを購読する口 | 3日 | 新しい発行・購読の連携に推奨 |
| Outbound Message | XML の通知。1メッセージ100通知まで | 24時間 | 追加投資の予定なし。連携パターンの評価は Suboptimal(次善) |
CDC は、既定で5オブジェクトまでで、それ以上は追加の契約が要ります。変更後の値は入りますが変更前の値は入らないため、状態の遷移を判断するには別の工夫が必要です。
プラットフォームイベントで間違えやすい点が2つあります。
- ロールバックされない。発行後に元のトランザクションが失敗しても、イベントは取り消されません。購読側がコミット済みのデータを読むなら、Publish After Commit にします。
- Salesforce は再送しない。発行は1回で、購読側がリプレイ ID を使って取り直します。購読側に「どこまで読んだか」を覚える仕組みが要ります。
Outbound Message は Salesforce が再試行を行う点が便利ですが、24時間たつと未配信のメッセージは失われます。既存の連携を今すぐ作り直す必要はありませんが、新規で選ぶ理由は少なくなっています。
レコードトリガーフローの非同期パスも、単純なコールアウトには向いています。元の保存のコミットの後に動くためです。順番は保存時の実行順序で確かめられます。
データを持ち込まない選択:Salesforce Connect
見るだけでよいデータをコピーすると、同期の仕組みと食い違いの対応を背負います。Salesforce Connect は外部のテーブルを外部オブジェクトとして扱い、画面を開いたときに取りに行きます。使うには別途ライセンスが要ります。
向いているのは、少量を見る・検索する・編集する場面です。バッチ処理やデータの複製には使いません。外部の応答待ちの上限は設定で最大120秒で、外部オブジェクトには使えない機能もあります。

iPaaS や MuleSoft を入れるべきか
1対1の連携が数本なら、ここまでの手段で足ります。連携先が増え、変換や順序の制御が複雑になると、中間のツールを検討します。公式の連携パターンは、複雑な変換やオーケストレーションをミドルウェアに任せるよう書いています。
MuleSoft Anypoint は別途ライセンスが要ります。同じ役割の ESB や ETL がすでに社内にあれば、それを使う選択も公式のガイドが認めています。他の iPaaS も、判断の軸は同じです。
要件を聞くときの質問を整理しておきます。編集部のおすすめです。
- どちらのシステムが正のデータを持つか
- 1日の件数と、一番多い時間帯の件数はいくつか
- 片方が止まったとき、業務はどうするか
- 重複して届いたときに、何で同じものと判断するか
- 失敗を誰がいつ見て、どう再実行するか
関連記事
- Salesforce フローの種類と選び方:プラットフォームイベントで動くフローの位置づけ
- 保存時の実行順序を図解:コミット後に動く処理
- ループ内DMLの直し方:受け取った大量データの処理で止まらないために
- エディションと料金の比較:契約で変わる範囲
- 認定資格のロードマップ:連携の設計を学ぶ順序
よくある質問
- Salesforce と外部システムの連携方法はどう選びますか?
- Salesforce の外部システム連携は、どちらから動くか、すぐ結果が要るか、データ量はどのくらいかの3点で選びます。少量ですぐ結果が要るなら REST API などの同期、待てるならプラットフォームイベント、大量なら Bulk API 2.0 が基本です。
- Outbound Message は今後も使えますか?
- Outbound Message は引き続き使えますが、Salesforce は追加の投資を予定していないとしています。新しい連携では、Salesforce Architects が勧めるプラットフォームイベントや Pub/Sub API を先に検討します。
- Bulk API 2.0 はいつ使いますか?
- 公式の連携パターンでは、Salesforce に取り込む件数がおよそ2,000件を超えるときに Bulk API 2.0 を候補にしています。上限は24時間あたり1億5,000万レコードで、処理は非同期です。
- プラットフォームイベントはロールバックされますか?
- プラットフォームイベントは元のトランザクションと一緒にロールバックされません。購読側がコミット済みのデータに頼るときは、Publish After Commit の設定を使います。