Salesforce Lightning プラットフォーム API の概要
学習の目的
- 開発の API ファーストアプローチの利点について説明する。
- REST API、SOAP API、Bulk API、および Streaming API の使用事例を挙げる。
- 2 種類の API 制限を挙げ、それぞれの計算方法を説明する。
Salesforce での API ファースト
Salesforce API 環境は、大洋のように広大です。それは、Salesforce で、Salesforce プラットフォームの機能開発に API ファーストアプローチを採用しているためです。API ファーストとは、機能のために堅牢な API を作成してから、UI の設計に取り組むという意味です。このアプローチにより、皆さんのような Salesforce 開発者は、柔軟に最適な方法でデータを操作できます。
Salesforce のお客様とパートナーは常に、Salesforce 機能を拡張する新しい方法や、AppExchange で提供する画期的なアプリケーションについて検討しています。そのため、プラットフォームでの開発のために包括的なツールボックスを提供することは Salesforce の最重要事項です。このアプローチにより、Salesforce も API に基づいて UI を作成し、両方の動作の一貫性を保つことができます。
このモジュールを API ファーストの仲間だと考えてください。これから一緒に API の概要を確認し、Salesforce の API スイートを調べ、いくつかの一般的な API を実際に使用してみます。こうした情報はすべて、プロジェクトに最適な API を選択するときに必要な知識として役立つでしょう。
Salesforce データ API

REST API
REST API は、RESTful 規則に基づいたシンプルながら強力な Web サービスです。あらゆる種類の Salesforce 機能を REST リソースと HTTP メソッドを介して公開します。たとえば、レコードの作成、読み取り、更新、削除 (CRUD)、データの検索またはクエリ、オブジェクトメタデータの取得、組織の制限に関する情報のアクセスなどができます。REST API では、XML と JSON の両方がサポートされます。
REST API は、使いやすい軽量の要求/応答フレームワークであるため、モバイルアプリケーションや Web アプリケーションの作成に適しています。
SOAP API
SOAP API は、同名の業界標準プロトコルに基づいた堅牢で強力な Web サービスです。Web Services Description Language (WSDL) ファイルを使用して、API でデータにアクセスするためのパラメータを厳密に定義します。SOAP API では、XML のみがサポートされます。SOAP API 機能のほとんどは、REST API でも使用できます。どちらの標準がニーズにより合致するかで判断してください。
SOAP API は WSDL ファイルを API とコンシューマ間の正式な契約として使用するため、サーバ間インテグレーションの作成に適しています。
Bulk API
Bulk API は、大量データの一括読み込みまたはクエリに特化した RESTful API です。ここでいう大量とは、50,000 レコード以上を意味します。Bulk API は非同期です。つまり、要求を送信したら、後で戻って結果を確認できます。この方法は、大量のデータを処理する場合に推奨されます。Bulk API には 2 つのバージョン (1.0 と 2.0) があります。どちらのバージョンも大量のデータを処理できますが、このモジュールでは使いやすい Bulk API 2.0 を使用します。
Bulk API は、組織への初回データ読み込みなど、大量のデータを扱う作業を実行する場合に適しています。
ストリーミング API
ストリーミング API は、データが変更されたらトリガされる通知の設定に特化した API です。publish-subscribe (pub/sub) モデルを使用します。このモデルでは、特定の種類のデータ変更をブロードキャストするチャネルにユーザが登録できます。
pub/sub モデルでは、ポーリングが不要になるため、API 要求数が削減されます。ストリーミング API は、これを使用しないと変更の有無を頻繁にポーリングする必要が生じてしまうといったようなアプリケーションの作成に適しています。
API アクセスと認証
SOAP API login() コールを除く、すべての API コールには認証が必要です。サポートされている OAuth フローのいずれかを使用するか、SOAP API login() コールから取得したセッション ID で認証できます。使用を開始するには、選択した API の開発者ガイドを参照してください。
API の制限
API 制限には 2 種類あります。同時制限は、同時に実行される長時間コール (実行時間が 20 秒以上) の数を制限します。合計制限は、直近の 24 時間内に実行されたコールの数を制限します。
同時制限は組織種別によって異なります。Trailhead Playground の場合、同時に実行できる長時間コールは 5 個に制限されます。Sandbox 組織の場合、長時間コールは 25 個に制限されます。
合計制限は、購入した組織のエディション、ライセンスの種類、および拡張パックに応じて異なります。たとえば、Enterprise Edition 組織の制限は、Salesforce ライセンスあたり 1,000 コール、Partner Community ライセンスあたり 200 コールです。Additional API Calls パックがある場合、同じ Enterprise Edition 組織の制限に 4,000 コールが追加されます。合計制限も、組織のエディションに基づいた最小数と最大数の対象となりますが、ここでは取り上げません。詳細は、「リソース」セクションの「Salesforce Developer の制限および割り当てクイックリファレンス」リンクを参照してください。
- [システムの概要] ページの [API 使用状況] ボックス。([設定] から、[クイック検索] ボックスに「システムの概要」と入力し、[システムの概要] を選択します。)
- REST API の Sforce-Limit-Info 応答ヘッダーで返される情報。
- SOAP API のレスポンスボディ (<type>API REQUESTS</type> 内) で返される情報。
- Lightning Platform REST API の /limits コール。
- 使用量ベースのエンタイトルメントの [API Request Limit per Month (月間 API 要求制限)]。ここには、組織の API コールの 30 日間の集計が表示されます。
どの API を使用するか?
インテグレーションに最適な API を選択することは重要な判断です。ここでは、最もよく使用されている API について、サポートされるプロトコル、データ形式、通信パラダイム、使用事例の情報を提供します。今後、使用する API を検討する際には、このセクションを参考にしてください。
4 つのデータ API についてはすでに取り上げました。各 API の詳細は、次に説明します。
API 参照名 | プロトコル | データの形式 | コミュニケーション |
---|---|---|---|
REST API | REST | JSON、XML | 同期 |
SOAP API | SOAP (WSDL) | XML | 同期 |
Chatter REST API | REST | JSON、XML | 同期 (写真の処理は非同期) |
ユーザインターフェース API | REST | JSON | 同期 |
Analytics REST API | REST | JSON、XML | 同期 |
Bulk API | REST | CSV、JSON、XML | 非同期 |
メタデータ API | SOAP (WSDL) | XML | 非同期 |
ストリーミング API | Bayeux | JSON | 非同期 (データのストリーム) |
Apex REST API | REST | JSON、XML、カスタム | 同期 |
Apex SOAP API | SOAP (WSDL) | XML | 同期 |
Tooling API | REST または SOAP (WSDL) | JSON、XML、カスタム | 同期 |
REST API を使用するケース
REST API では、Salesforce を操作するための強力かつ便利で、シンプルな REST ベースの Web サービスインターフェースを提供します。インテグレーションや開発が容易になるという利点があり、モバイルアプリケーションや Web プロジェクトで使用するためのテクノロジの選択としては最適です。特定のプロジェクトでは、REST API を他の Salesforce REST API と一緒に使用する場合もあります。レコードの作成、参照、更新、削除を行う UI を作成するには (リストビュー、アクション、連動選択リストの UI の作成を含む)、ユーザインターフェース API を使用します。Chatter、コミュニティ、おすすめの UI を作成するには、Chatter REST API を使用します。処理するレコード件数が多い場合は、REST 規則に基づいて大規模データセットの処理用に最適化されている Bulk API を使用することを検討してください。
SOAP API を使用するケース
SOAP API では、Salesforce を操作するための強力かつ便利で、シンプルな SOAP ベースの Web サービスインターフェースを提供します。SOAP API を使用して、レコードを作成、取得、更新、または削除できます。また、SOAP API を使用して、検索の実行などを行うことができます。SOAP API は、Web サービスをサポートしている言語で使用できます。
たとえば、SOAP API を使用して、Salesforce を組織の ERP や会計システムと統合できます。また、リアルタイムの販売情報やサポート情報を会社のポータルに配信し、重要なビジネスシステムに顧客情報を入力することもできます。
Chatter REST API を使用するケース
特にモバイルアプリケーションで、Chatter フィード、ユーザ、グループ、フォロワーを表示するには、Chatter REST API を使用します。Chatter REST API では、ファイル、おすすめ、トピック、通知、Data.com の購入などにプログラムを介してアクセスすることもできます。Chatter REST API は、Facebook や Twitter などのフィードを提供する他の企業から公開されている API に似ていますが、Chatter 以外の Salesforce 機能も公開されます。
ユーザインターフェース API を使用するケース
Analytics REST API を使用するケース
Analytics アセット (データセット、レンズ、ダッシュボードなど) には、プログラムで Analytics REST API を使用してアクセスできます。Analytics Platform に直接クエリを送信します。Analytics Platform にインポートされたデータセットにアクセスします。レンズを作成および取得します。XMD 情報にアクセスします。データセットバージョンのリストを取得します。Analytics アプリケーションを作成および取得します。Analytics ダッシュボードを作成、更新、および取得します。アプリケーションの連動関係のリストを取得します。ユーザが使用可能な機能を決定します。スナップショットを操作します。複製データセットを操作します。
Bulk API を使用するケース
Bulk API は、REST 規則に基づいており、大規模データセットの読み込みまたは削除用に最適化されています。Bulk API を使用して複数のバッチを送信することにより、多数のレコードを非同期でクエリ、queryAll、挿入、更新、更新/挿入または削除できます。バッチはバックグラウンドで処理されます。
一方、SOAP API は、一度に少数のレコードを更新するリアルタイムのクライアントアプリケーション用に最適化されています。SOAP API を使用しても多数のレコードを処理することはできますが、数十万のレコードがデータセットに含まれている場合には実用性に欠けます。Bulk API は、千から百万単位のレコードのデータを簡単に読み込めるように設計されています。
Bulk API の最も簡単な使用方法は、CSV ファイルを使ってデータローダでレコードの処理ができるようにすることです。データローダを使用すると、独自のクライアントアプリケーションを作成する必要がなくなります。
メタデータ API を使用するケース
メタデータ API を使用して、組織のカスタマイズを取得、リリース、作成、更新、または削除します。最も一般的な使い方は、Sandbox またはテスト組織から本番環境への変更の移行です。メタデータ API はカスタマイズを管理し、データ自体ではなくメタデータモデルを管理できるツールを構築するためのものです。
- Visual Studio Code 向け Salesforce 拡張機能には、軽量で拡張可能な VS Code エディタを使用して Salesforce Platform 上で開発を行うためのツールが含まれています。これらのツールでは、開発組織 (スクラッチ組織、Sandbox、DE 組織)、Apex、Aura コンポーネント、Visualforce を操作する機能が提供されています。
- Ant 移行ツールは、スクリプトまたはコマンドラインを使用してローカルディレクトリと Salesforce 組織間でメタデータを移動する場合に最適です。
ストリーミング API を使用するケース
ストリーミング API を使用して、Salesforce レコードまたはカスタムペイロードに基づいて、ほぼリアルタイムのデータストリームを受信します。Salesforce レコードの変更の場合は、変更されたときに通知が公開されます。カスタム通知の場合は、イベントメッセージを公開できます。登録者は、プッシュ技術をシミュレートする Bayeux プトロコルの実装である CometD を使用して通知を受信できます。クライアントは、Apex トリガを使用するか、プロセスビルダーと Flow Builder を宣言的に使用して、一部のイベント種別に登録することもできます。
ニーズに合ったストリーミングイベント種別を使用してください。
PushTopic イベント: 定義する SOQL クエリに基づいて Salesforce レコードへの変更を受信します。通知には、SOQL クエリで指定する項目のみが含まれます。変更データキャプチャイベント: 変更された項目すべてと共に Salesforce レコードへの変更を受信します。変更データキャプチャには、PushTopic イベントよりもサポートされる標準オブジェクトが多く、変更に関する情報が含まれるヘッダー項目など、追加の機能が提供されます。プラットフォームイベント: 事前定義されたスキーマを使用してカスタムイベントデータを公開および受信します。注文情報などのビジネスデータを含め、定義すればどのようなデータでも使用できます。プラットフォームイベントを定義して、送信するデータを指定します。通知を受信するには、プラットフォームイベントチャネルに登録します。汎用イベント: 定義されたスキーマを使用しない任意のペイロードを公開および受信します。Apex REST API を使用するケース
Apex クラスと Apex メソッドを公開し、外部アプリケーションが REST アーキテクチャによってコードにアクセスできるようにする場合は、Apex REST API を使用します。Apex REST API は、認証のため OAuth 2.0 およびセッション ID の両方をサポートしています。
Apex SOAP API を使用するケース
Apex メソッドを SOAP Web サービス API として公開し、外部アプリケーションが SOAP によってコードにアクセスできるようにする場合は、Apex SOAP API を使用します。
Apex SOAP API は、認証のため OAuth 2.0 およびセッション ID の両方をサポートしています。
Tooling API を使用するケース
Salesforce メタデータを他のシステムと統合するには、Tooling API を使用します。メタデータ型は sObject として公開されるため、複合型の 1 つのコンポーネントにアクセスできます。この項目レベルのアクセスにより、複合型のメタデータに対する操作時間を短縮できます。Force.com アプリケーション用のカスタム開発ツールを作成することもできます。たとえば、Tooling API を使用して、Apex クラスとトリガや Visualforce ページとコンポーネントの作業コピーを管理およびリリースすることができます。また、チェックポイントまたはヒープダンプマーカーの設定、匿名 Apex の実行、ログ記録情報およびコードカバー率情報へのアクセスも行うことができます。
REST と SOAP は両方ともサポートされています。