この記事は下記の記事をもとに、2020年6月現在の最新の情報に書き換えたものです。
SalesforceのAPIを知って連携ツールを使いこなそう 【第1回】
https://www.terrasky.co.jp/blog/2013/130709_001294.php
SalesforceのAPIを知って連携ツールを使いこなそう 【第1回】
https://www.terrasky.co.jp/blog/2013/130709_001294.php
こんにちは、荒木です。
Salesforceを導入するにあたって、データ連携は様々なシーンで必要となります。 例えば、初期移行や基幹システムとのデータの同期、他システムやクラウドとのSOA等々・・・。
このようなニーズから、世の中にはSalesforceとのデータ連携ツールが数多く存在します。 では、目的に合ったツールや使用方法はどのように選定すればよいでしょう?
Salesforceには外部から接続するための様々なAPIが公開されています。 このような疑問を解決するためには、ツールが使用しているAPIを知ることも重要です。
今回はSalesforceのAPIと、それを使用している連携ツールについての内容を、3回の連載に分けて紹介したいと思います。
Salesforceを導入するにあたって、データ連携は様々なシーンで必要となります。 例えば、初期移行や基幹システムとのデータの同期、他システムやクラウドとのSOA等々・・・。
このようなニーズから、世の中にはSalesforceとのデータ連携ツールが数多く存在します。 では、目的に合ったツールや使用方法はどのように選定すればよいでしょう?
Salesforceには外部から接続するための様々なAPIが公開されています。 このような疑問を解決するためには、ツールが使用しているAPIを知ることも重要です。
今回はSalesforceのAPIと、それを使用している連携ツールについての内容を、3回の連載に分けて紹介したいと思います。
Salesforce APIの種類
まず、Salesforceで公開されているAPIを紹介します。(Spring'20 時点)
API名 | プロトコル | 操作対象 | 操作 | 概要 |
---|---|---|---|---|
SOAP API | SOAP | レコード | CRUD | 標準的なAPIです。 レコードの操作以外にも、定義されたメタデータの取得やユーザパスワードの変更、メール送信などのユーティリティ機能も用意されています。 大容量のデータを操作することもできますが、効率性はBulk APIに劣ります。 |
メタデータ | Read | |||
ユーティリティ | ||||
Bulk API | REST | レコード | CRUD | 大容量のデータを操作することに適しています。 サーバサイドで非同期に処理するためSOAP APIより効率的で、処理時間やAPIコール数を抑えることができます。 ただし、結果受け取りのためにはポーリングを行う必要があります。 |
REST API | REST | レコード | CRUD | 軽量なデータを操作することに適しています。 実装が容易であり通信量も軽量ですが大容量のデータを扱うことには適していません。ブラウザアプリやモバイルとの連携に最適です。 |
Metadata API | SOAP | メタデータ | CRUD | 組織のカスタマイズを操作します。 SOAP APIでは扱えない属性の取得や、メタデータの更新が行えます。 |
Streaming API | Bayeux | 更新イベント | Push | サーバからクライアントへデータの更新を通知します。 しかし、プロトコルの仕組みやAPIの制限上、通知の保証が難しいためコアデータの連携には適していません。 Web画面に埋め込み、ユーザへ更新情報を通知するなどの使用方法が挙げられます。 |
Apex SOAP API | SOAP | Apex | Exec | SOAP Webサービスとして公開されたApexを起動します。 |
Apex REST API | REST | Apex | Exec | RESTful Webサービスとして公開されたApexを起動します。 |
Chatter REST API | REST | Chatter | CRUD | Chatterの操作に最適化されたREST APIです。 SOAP APIやREST APIでもChatterの大半の操作が可能ですが、特定の操作に関してはこのAPIを使用する必要があります。 |
Tooling API | SOAP / REST | 開発 | - | ApexやVisualforceの開発者向けのAPIです。 ApexやVisualforceの管理、デバッグログやヒープダンプの参照など、カスタム開発ツールを作成するための機能が用意されています。 |
ユーザインターフェース API | REST | ユーザーインターフェース | CRUD | モバイルアプリケーションや独自のWebサイトなどを構築する際に使用する開発者向けのAPIです。効率よく適切なユーザーインターフェースを作るために便利な機能が用意されています。 |
Analytics REST API | REST | Analyticsデータ | CRUD | プログラムからAnalyticsのデータセット、レンズ、ダッシュボードにアクセスするためのAPIです。 |
「DataLoader」はどのようなAPIが使われているか?
みなさんお馴染みのDataLoader ではAPIをどのように使用しているか知っていますか?DataLoaderは、SOAP API と Bulk API の2種類のAPIを使用しています。
デフォルトでは SOAP API を使用した接続を行いますが、「Settings」-「Use Bulk API」 にチェックを入れると Bulk API を使用した接続に切り替わります。
デフォルトでは SOAP API を使用した接続を行いますが、「Settings」-「Use Bulk API」 にチェックを入れると Bulk API を使用した接続に切り替わります。
それでは、Data Loader で使用している2種類のAPIについて掘り下げてみましょう。
SOAP API について学ぶ!
多くの種類のAPIが用意されていますが、まずは標準的な SOAP API を理解することが重要です。
SOAP API はAPIの中でも最も歴史が古く、Spring'12以前までは Web Services API という名称でした。 バージョンアップが繰り返され、現在では30種類以上のAPIコールが備わっています。 データ操作のAPIコールではオブジェクトに対するCRUD操作はもちろん、承認プロセスやCRMオブジェクト特有の機能、ゴミ箱へのアクセスなどが用意されています。
まず知っておくべき標準的なCRUD操作のAPIコールについて、一覧にまとめます。
SOAP API はAPIの中でも最も歴史が古く、Spring'12以前までは Web Services API という名称でした。 バージョンアップが繰り返され、現在では30種類以上のAPIコールが備わっています。 データ操作のAPIコールではオブジェクトに対するCRUD操作はもちろん、承認プロセスやCRMオブジェクト特有の機能、ゴミ箱へのアクセスなどが用意されています。
まず知っておくべき標準的なCRUD操作のAPIコールについて、一覧にまとめます。
APIコール名 | 操作種類 | 概要 |
---|---|---|
query() | Read | SOQLを引数にクエリを実行します。 |
queryAll() | SOQLを引数にクエリを実行します。結果データにゴミ箱のデータ、アーカイブされた活動を含みます。 | |
queryMore() | query()、queryAll() において結果を一度に受け取れなかった場合に残りの結果セットを受け取ります。 | |
retrieve() | IDを指定して一致するレコードを取得します。 | |
getUpdated() | 指定した期間内に追加/更新されたレコードのID、タイムスタンプを取得します。 | |
getDeleted() | 指定した期間内に削除されたレコードのID、タイムスタンプを取得します。 | |
search() | 組織のデータからテキスト検索してレコードを取得します。 | |
create() | Create | レコードを追加します。 |
update() | Update | IDを指定してレコードを更新します。 |
delete() | Delete | IDを指定してレコードを削除します。 |
upsert() | Create / Update | 外部キーを指定してレコードを追加または更新します。 |
Bulk API も知っておこう!
Bulk API は、大容量のデータを操作するために最適化されています。 簡単に言うと件数の多いデータ操作において、SOAP API よりも処理時間やAPIコール数を抑えることができるというAPIです。
じゃあ、どのような処理でも Bulk API を使った方がいいのでは? ...いいえ、そうではありません。
SOAP API は同期処理であることに対して、Bulk API はサーバサイドで非同期に処理が行われます。 また、SOAP API のみアクセス時の細やかなオプション(SOAPヘッダー)を指定することができます。
さらに、Bulk API 特有のバッチ数の制限(24時間に10,000バッチまで)もあります。 これらの違いを理解してAPIを使い分ける必要があります。
なお、Bulk API では実行する処理の演算子を、サーバサイドに登録するジョブに対して指定します。 以下に指定可能なジョブの演算子をまとめます。
じゃあ、どのような処理でも Bulk API を使った方がいいのでは? ...いいえ、そうではありません。
SOAP API は同期処理であることに対して、Bulk API はサーバサイドで非同期に処理が行われます。 また、SOAP API のみアクセス時の細やかなオプション(SOAPヘッダー)を指定することができます。
さらに、Bulk API 特有のバッチ数の制限(24時間に10,000バッチまで)もあります。 これらの違いを理解してAPIを使い分ける必要があります。
なお、Bulk API では実行する処理の演算子を、サーバサイドに登録するジョブに対して指定します。 以下に指定可能なジョブの演算子をまとめます。
ジョブの演算子 | 操作種類 | 概要 |
---|---|---|
insert | Create | レコードを追加します。 |
update | Update | IDを指定してレコードを更新します。 |
delete | Delete | IDを指定してレコードを削除します。削除されたレコードはゴミ箱に格納されます。 |
hardDelete (Bulk V1 タイプのジョブのみ) | Delete | IDを指定してレコードを削除します。削除されたレコードはゴミ箱に格納されません。 |
upsert | Create / Update | 外部キーを指定してレコードを追加/更新します。 |
query (Bulk V1 タイプのジョブのみ) | Read | SOQLを引数にクエリを実行します。結果ファイルはサーバに出力されます。 |
queryall(Bulk V1 タイプのジョブのみ | Read | 上記のqueryと動作は同じですが、こちららはレコードが削除されたかどうかにかかわらず取得します。 |
DataLoader の各メニューについて説明
それではDataLoaderに話を戻して、各メニューがそれぞれどのようなAPIを使用しているのかを見ていきましょう。
機能名 | APIの種類 | 概要 |
Insert | SOAP API | create() コールを使用して、CSVデータを元にレコードの追加を行います。 |
Bulk API | insert のジョブを作成して、CSVデータを元にレコードの追加を行います。 | |
Update | SOAP API | update() コールを使用して、CSVデータを元にレコードの追加を行います。 |
Bulk API | update のジョブを作成して、CSVデータを元にレコードの追加を行います。 | |
Upsert | SOAP API | upsert() コールを使用して、CSVデータを元にレコードの追加または更新を行います。 |
Bulk API | upsert のジョブを作成して、CSVデータを元にレコードの追加または更新を行います。 | |
Delete | SOAP API | delete() コールを使用して、CSVデータを元にレコードの削除を行います。 |
Bulk API | delete のジョブを作成して、CSVデータを元にレコードの削除を行います。 | |
Hard Delete | SOAP API | 使用できません。 |
Bulk API | hard Delete のジョブを作成して、CSVデータを元にレコードの削除を行います。 | |
Export | SOAP API | query() コールを使用して、レコードを抽出しCSVに出力します。 |
Bulk API | query のジョブを作成して、レコードを抽出しCSVに出力します。 | |
Export All | SOAP API | queryAll() コールを使用して、レコードを抽出しCSVに出力します。 |
Bulk API | queryAll のジョブを作成して、レコードを抽出しCSVに出力します。 |
まとめ
連携ツールがどのようにSalesforceのAPIを使用しているのかを知ることで、より深く使用方法について知ることができます。 例えば DataLoader を使用する場合も、使用しているAPIマニュアル等を参照することで、どのメニューを使用すべきか、どのような点に注意すべきかを理解できます。
しかし、DataLoader で使用することができるAPIの機能はほんの一部です。 次回は、弊社のクラウド型連携サービス「DataSpider Cloud」でAPIをどのように使用しているかをとりあげてみたいと思います。
しかし、DataLoader で使用することができるAPIの機能はほんの一部です。 次回は、弊社のクラウド型連携サービス「DataSpider Cloud」でAPIをどのように使用しているかをとりあげてみたいと思います。
21 件