Salesforce APIは外部システムとの連携において欠かせない技術であり、REST APIやBulk API 2.0などを活用することで、効率的にデータを取得できます。
本記事では、Salesforceの導入サポート、開発・連携を行う(株)FDCのエンジニアチームが、APIによるデータ取得の仕組みから、接続アプリケーションの作成、実際のデータ取得まで、具体的な手順を詳しくご紹介します。

Salesforce APIによるデータ取得の仕組み
Salesforce APIを理解するには、まずAPIによるデータ取得の基本的な仕組みを把握することが重要です。APIはApplication Programming Interfaceの略で、異なるシステム同士が相互に通信し、データをやり取りするための規約です。
APIによるデータ通信の基本構造
Salesforce APIを使用したデータ取得は、「リクエスト(要求)」と「レスポンス(応答)」という2つの要素で構成されています。
| 要素 | 説明 | 具体例 |
|---|---|---|
| リクエスト | 外部システムからSalesforceに対してデータを要求する通信 | 「取引先データを取得したい」というリクエストを送信 |
| レスポンス | Salesforceがリクエストを処理し、結果を返す通信 | 要求された取引先データをJSON形式で返送 |
HTTP通信プロトコルの役割
Salesforce APIは、インターネット上の標準的な通信規格であるHTTP(Hypertext Transfer Protocol)を使用してデータをやり取りします。HTTPによる通信の流れは以下のようになります。
- 認証情報の準備:外部システムがアクセストークンなどの認証情報を取得
- HTTPリクエストの送信:必要なデータを指定してSalesforceにリクエストを送信
- サーバー側の処理:Salesforceがリクエストを受け取り、データベースから該当データを検索
- HTTPレスポンスの返送:処理結果とデータをJSON形式で外部システムに返送
- データの活用:外部システムが受け取ったデータを解析し、業務で活用
Salesforce APIのアーキテクチャ特性
Salesforceのアーキテクチャは、すべてのデータとメタデータがAPI経由でアクセス可能に設計されています。これにより、画面操作で行える処理のほとんどをAPIでも実行できます。
- マルチテナント型アーキテクチャ:複数の組織が同じインフラを共有しながら、データは完全に分離
- メタデータドリブン設計:オブジェクトや項目の定義情報もAPIで取得可能
- RESTベースの設計:REST APIはURLとHTTPメソッドでリソースにアクセス
出典:Salesforce Trailhead – Salesforce アーキテクチャについて
データ取得リクエストの構成要素
Salesforce APIでデータを取得する際のHTTPリクエストには、以下の要素が含まれます。
| 構成要素 | 内容 |
|---|---|
| エンドポイントURL | アクセス先のSalesforce APIのURL(例:https://yourInstance.salesforce.com/services/data/v61.0/query/) |
| HTTPメソッド | GET(データ取得)、POST(データ作成)、PATCH(データ更新)など |
| HTTPヘッダー | 認証情報(Authorizationヘッダー)やコンテンツタイプなど |
| クエリパラメータ | 取得するデータの条件(SOQL文など) |
レスポンスデータの形式
Salesforceからのレスポンスは、JSON(JavaScript Object Notation)形式で返されることが一般的です。JSONは人間にも機械にも読みやすいデータ形式で、以下のような構造を持ちます。
- ステータスコード:200(成功)、401(認証エラー)、404(データが見つからない)など
- データ本体:要求されたレコードの項目と値
- メタ情報:総件数、次ページのURLなど
Salesforce APIの種類とデータ取得における選び方
Salesforceでは、用途に応じて複数のAPIが提供されています。データ取得を行う際には、処理するデータ量や取得頻度に応じて最適なAPIを選択することが重要です。
主要なAPI種類とその特徴
| API種類 | 適用シーン | 特徴 |
|---|---|---|
| REST API | リアルタイムデータ取得 | HTTP通信を使用し、シンプルで扱いやすい。JSON形式でデータをやり取り |
| SOAP API | エンタープライズ統合 | XML形式を使用。厳密な型定義が必要な場合に適している |
| Bulk API 2.0 | 大量データの一括取得 | 10,000件以上のレコード処理に最適。非同期処理で効率的 |
| UI API | ユーザーインターフェース連携 | レイアウト情報とデータを同時に取得可能 |
出典:Salesforce公式ヘルプ – どのAPIを使用するか?
データ量に応じたAPI選択の目安
- 少量データ(数百件程度):REST APIが最適。リアルタイムでの取得が可能
- 中量データ(数千件程度):REST APIまたはSOQL クエリを活用
- 大量データ(10,000件以上):Bulk API 2.0を使用することで、1日あたり最大150,000,000レコードまで処理可能
ステップ1:接続アプリケーション(Connected App)の作成
Salesforce APIでデータを取得するには、まず接続アプリケーションを作成してOAuth認証の設定を行う必要があります。これは外部システムがSalesforceに安全にアクセスするための認証情報を管理する仕組みです。
接続アプリケーション作成の具体的手順
- Salesforceにログインし、右上の歯車アイコンから「設定」を選択
- クイック検索ボックスに「アプリケーションマネージャー」と入力
- 「新規接続アプリケーション」ボタンをクリック
- 基本情報を入力(接続アプリケーション名、API参照名、連絡先メールアドレス)
- 「API(OAuth設定の有効化)」セクションで以下を設定:
- 「OAuth設定の有効化」にチェックを入れる
- コールバックURL:開発環境の場合は「https://localhost」などを指定
- 選択したOAuthスコープ:「データへのアクセスと管理(api)」を追加
- 「保存」をクリックして作成完了
出典:Salesforce公式ヘルプ – API インテグレーション用のOAuth設定の有効化
Consumer KeyとConsumer Secretの取得
接続アプリケーション作成後、Consumer Key(コンシューマ鍵)とConsumer Secret(コンシューマの秘密)が生成されます。これらは認証に必要な重要な情報です。
- 作成した接続アプリケーションの詳細画面を開く
- 「コンシューマーの詳細を管理」ボタンをクリック
- IDの検証後、Consumer KeyとConsumer Secretを確認してメモ
注意:Consumer Secretは他者に知られないよう厳重に管理してください。
ステップ2:OAuth認証によるアクセストークンの取得
データ取得の前に、OAuthフローを使用してアクセストークンを取得する必要があります。このトークンがAPIリクエストの認証に使用されます。
OAuth 2.0クライアント認証フロー
最もシンプルな認証方法として、ユーザー名・パスワードフロー(Resource Owner Password Credentials)があります。
アクセストークン取得のリクエスト例
以下のようなPOSTリクエストを送信します:
| パラメータ | 説明 |
|---|---|
| grant_type | password |
| client_id | 取得したConsumer Key |
| client_secret | 取得したConsumer Secret |
| username | Salesforceのユーザー名 |
| password | Salesforceのパスワード + セキュリティトークン |
エンドポイント:https://login.salesforce.com/services/oauth2/token(本番環境)
出典:Salesforce開発者ガイド – 接続アプリケーションおよびOAuth 2.0による認証
セキュリティトークンの取得方法
パスワードには通常のパスワードとセキュリティトークンを結合したものを使用します。
- Salesforceにログインし、右上のユーザーアイコンをクリック
- 「設定」→「私の個人情報」→「私のセキュリティトークンのリセット」を選択
- 登録メールアドレスに新しいセキュリティトークンが送信される
ステップ3:REST APIを使用したデータ取得の実装
アクセストークンを取得したら、REST APIを使用して実際にSalesforceからデータを取得できます。
SOQLクエリによるデータ取得
REST APIでは、SOQLクエリを実行してレコードを取得します。Query リソース(/services/data/vXX.X/query/)を使用します。
取引先(Account)データ取得の例
GETリクエスト例:
- エンドポイント:
https://yourInstance.salesforce.com/services/data/v61.0/query/?q=SELECT+Id,Name,Industry+FROM+Account+LIMIT+10 - ヘッダー:
Authorization: Bearer アクセストークン
レスポンスはJSON形式で返され、取得したレコードの情報が含まれます。
出典:Salesforce開発者ガイド – SOQLクエリを実行する
個別レコードの取得
レコードIDが分かっている場合は、sObject Rowsリソースを使用して直接取得できます。
- エンドポイント:
/services/data/vXX.X/sobjects/Account/{レコードID} - HTTPメソッド:GET
REST APIのクエリパラメータ
| パラメータ | 用途 |
|---|---|
| q | SOQLクエリ文字列(スペースは+または%20に置換) |
| queryLocator | 次ページのデータを取得する際に使用 |
| fields | 取得する項目のリスト |
ステップ4:Bulk API 2.0による大量データ取得
10,000件以上の大量データを取得する場合は、Bulk API 2.0を使用することで効率的な処理が可能です。REST APIと比較して、非同期処理により大規模データセットを扱えます。
Bulk API 2.0のクエリジョブ作成手順
- クエリジョブの作成:POSTリクエストで
/services/data/vXX.X/jobs/queryにジョブを作成 - ジョブの実行状態確認:GETリクエストでジョブのステータスを確認
- 結果の取得:ジョブが完了したら、結果をCSV形式でダウンロード
Bulk API 2.0の処理制限
- 1日あたり最大150,000,000レコードまで処理可能
- クエリ結果の有効期限は7日間
- 取得できるファイル数は最大15個まで
- 1ファイルあたりの最大サイズは1GB
出典:Salesforce開発者ガイド – 要求の処理方法(Bulk API 2.0)
Bulk API 2.0とBulk API 1.0の違い
| 項目 | Bulk API 2.0 | Bulk API 1.0 |
|---|---|---|
| インターフェース | RESTベース、シンプル | XMLベース、複雑 |
| データ形式 | CSV、JSON | CSV、XML、JSON |
| バッチ管理 | 自動分割 | 手動管理が必要 |
データ取得時の重要な注意点とベストプラクティス
APIコール数制限の管理
Salesforceには24時間あたりのAPIコール数に制限があります。エディションによって上限が異なるため、効率的なデータ取得が重要です。
| エディション | 24時間あたりの上限 |
|---|---|
| Professional Edition | 15,000 + (ライセンス数 × 1,000) |
| Enterprise Edition | 100,000 + (ライセンス数 × 1,000) |
| Unlimited Edition | 100,000 + (ライセンス数 × 1,000) |
API制限の確認方法
- Salesforce設定画面から「システムの概要」を確認
- REST APIのLimitsリソース(
/services/data/vXX.X/limits)を使用して、プログラムから現在の使用状況を取得可能
効率的なデータ取得のためのポイント
- 複合リソースの活用:Composite APIを使用して複数の操作を1回のAPIコールで実行
- 適切な項目選択:必要な項目のみをSELECT句で指定し、データ転送量を削減
- WHERE句の活用:取得するレコードを絞り込むことで、処理時間を短縮
- インデックス項目の活用:WHERE句では、インデックスが設定されている項目を使用することでクエリパフォーマンスが向上
エラーハンドリングとリトライ処理
API通信では、ネットワークエラーやレート制限エラーが発生する可能性があります。以下のエラーコードに応じた適切な処理が必要です。
- 401 Unauthorized:アクセストークンの有効期限切れ。再認証が必要
- 429 Too Many Requests:APIコール数の制限に達した。待機時間を設けてリトライ
- 500 Internal Server Error:サーバー側のエラー。指数バックオフでリトライ
実装例:PythonでのREST API活用
実際の開発では、プログラミング言語のライブラリを活用することで、効率的にSalesforce APIを利用できます。Pythonの場合、requestsライブラリやsimple-salesforceライブラリが広く使われています。
基本的な実装の流れ
- 必要なライブラリのインストール(requests、simple-salesforceなど)
- OAuth認証を実行してアクセストークンを取得
- 取得したトークンをヘッダーに設定してAPIリクエストを送信
- レスポンスをJSON形式でパースして、必要なデータを抽出
データ取得時の実装ポイント
- トークンの管理:アクセストークンは環境変数や設定ファイルで管理し、コードに直接記述しない
- ページネーション対応:大量データの場合、nextRecordsUrlを使用して次ページを取得
- ログ出力:エラー発生時のデバッグのため、リクエスト内容とレスポンスをログに記録
まとめ:Salesforce APIによるデータ取得の実現
本記事では、Salesforce APIを使用したデータ取得の全体像から具体的な実装手順まで解説しました。APIの基本的な仕組みを理解した上で、接続アプリケーションの作成、OAuth認証、REST APIやBulk API 2.0を活用することで、Salesforceに格納されたデータを外部システムから効率的に取得できます。
データ取得を成功させるためには、以下のポイントが重要です。
- リクエストとレスポンスの仕組みの理解
- 処理するデータ量に応じた適切なAPIの選択
- APIコール数制限を考慮した効率的な実装
- セキュリティトークンやConsumer Secretの適切な管理
- エラーハンドリングとリトライ処理の実装
2025年現在、SalesforceではSpring ’25リリースにより、API バージョン21.0から30.0が廃止される予定です。最新のAPIバージョン(v61.0以降)を使用することで、将来にわたって安定したデータ取得が可能になります。
初めてSalesforce APIに取り組む方も、本記事で紹介した基本的な仕組みとステップに従うことで、確実にデータ取得を実現できます。まずは少量データでREST APIを試し、徐々に大量データ処理へとステップアップしていくことをお勧めします。
またこの記事を読んでもAPI連携に関して調整、開発が難しそうだと感じられるのであれば、、弊社(株)エフ・ディー・シーが提供している「SFsolution」をおすすめします。
これはSalesforce導入・活用サポートサービスで、数多くの企業様にご利用いただいています。興味をお持ちの方はお問い合わせ、もしくは資料ダウンロードをしていただければ幸いです。
