2020.06.05

SalesforceのAPIを知って連携ツールを使いこなそう 【第1回】

この記事は下記の記事をもとに、2020年6月現在の最新の情報に書き換えたものです。

SalesforceのAPIを知って連携ツールを使いこなそう 【第1回】
https://www.terrasky.co.jp/blog/2013/130709_001294.php
こんにちは、荒木です。

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 を使用した接続に切り替わります。

DataLoaderでの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コールについて、一覧にまとめます。
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 では実行する処理の演算子を、サーバサイドに登録するジョブに対して指定します。 以下に指定可能なジョブの演算子をまとめます。
ジョブの演算子 操作種類 概要
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をどのように使用しているかをとりあげてみたいと思います。
21 件
     
  • banner
  • banner

関連する記事