Salesforce API連携の概要
API連携にはREST API、SOAP API、Bulk APIなどのAPIが用意されており[2]、外部システムからTask Relay(Salesforce)へアクセスする際は目的に適したAPIを選択する必要がある。
API接続で、Task Relayのオブジェクトの項目を取得することができる。
REST APIは軽量なJSON/HTTPを用いたリソース指向設計で、モバイルやWebアプリケーションに適し、SOAP APIはエンタープライズ向けの高度に構造化されたXMLベースのプロトコルで、大容量データを扱う際に適している[3]。
以下では、外部システムがSalesforceと連携する際の一般的な準備手順、その後にREST API、SOAP APIそれぞれの具体的な連携手順をまとめる。
外部システムからSalesforceと連携する際の準備#
-
APIユーザー/接続アプリの作成
本番環境で外部システムからSalesforceへアクセスさせる場合は、システム連携専用のユーザーを作成し、最低限の権限セット(必要なオブジェクトの参照/更新権限)とAPI Enabled権限を付与する。OAuth 2.0で連携する場合は Connected App を作成し、クライアントID・クライアントシークレットを取得する。この手順は組織のセキュリティポリシーに従って設定する。 -
認証方法の選択とアクセストークン取得
外部システムがSalesforce APIを呼び出すにはアクセストークン(セッションID)が必要である。一般的にはOAuth 2.0のAuthorization CodeフローやJWT Bearerフローを使う。クライアントアプリが少なくサーバー間連携のみの場合はUsername-Passwordフローも利用できる。認証後に返されるアクセストークンとインスタンスURLをヘッダーに付与してAPIを呼び出す。公式のQuick Startでは検証用にSalesforce CLIを使ってログインし、コマンド sf org display –target-org <username> でアクセストークンとInstance Urlを取得する手順を紹介している[5]。表示された長いアクセストークンとInstance Urlを控え、失効後は再取得する[6]。 -
エンドポイントURL・APIバージョンの確認
API呼び出しは https://<InstanceURL>/services/data/vXX.X/ (REST API)やWSDLに定義されたエンドポイント(SOAP API)に対して行う。インスタンスURLはアクセストークン取得時に返される。
REST APIによる連携手順#
REST APIはJSON/HTTPを利用したリソース指向のAPIで、組織のレコード作成や取得、SOQLクエリ実行など幅広い操作が可能である。公式ドキュメントのQuick Startに基づく基本手順は次のとおり。
-
Developer Editionへの登録 – 上記準備1参照。
-
認証とアクセストークン取得 – Salesforce CLIやOAuth 2.0を使って認証し、長いアクセストークンとInstance URLを取得する[7][5]。CLIでは sf org login web でブラウザ認証を行い、sf org display –target-orgでトークンを確認する[8]。アクセストークンの失効後は再取得する必要がある[6]。
-
バージョン一覧の取得 – 利用可能なAPIバージョンを確認するには、インスタンスURLに /services/data/ を付けてGETリクエストを送る[9]。レスポンスには "url":"/services/data/v21.0" などのバージョンエントリが含まれる[10]。
-
利用可能なリソース一覧の取得 – 特定バージョンのリソースを確認するには /services/data/vXX.X/ にGETリクエストを送信し、sobjects や query など利用可能なリソースを確認する[10]。レスポンスで sobjects が含まれていることが確認できる[11]。
-
オブジェクト一覧の取得 – /services/data/vXX.X/sobjects/ にアクセスすると、利用できる標準およびカスタムオブジェクトのリストが返され、Account オブジェクトがあることが示されている[11]。
-
オブジェクトメタデータの取得 – 特定オブジェクトの基本情報(ラベルや最近使用したレコードなど)は /sobjects/<ObjectName>/ で取得できる[12]。詳細な項目情報は /sobjects/<ObjectName>/describe/ で取得する[13]。
-
SOQLクエリの実行 – /query?q=<SOQL> にGETリクエストを送ってSOQLを実行する[14]。例として SELECT FirstName, LastName FROM Contact を実行すると、records 配列に各コンタクトのIDと名前が返される[15]。
-
レコードの更新 – レコードを更新するには、対象オブジェクトとレコードIDのURLに対してPATCHメソッドを使い、JSON本文で変更項目を送る。公式例では Account レコードの BillingCity を更新するためにJSONファイル patchaccount.json を用意し、curl https://<InstanceURL>/services/data/v64.0/sobjects/Account/<RecordId> -X PATCH -H "Authorization: Bearer <token>" -H "Content-Type: application/json" -d @patchaccount.json を実行する[16]。更新後のレスポンスはHTTP/1.1 204 No Contentで、ページを更新して変更を確認する[17]。
SOAP APIによる連携手順#
SOAP APIはエンタープライズ向けの機能豊富なXMLベースのAPIで、取扱うオブジェクトと操作がWSDLファイルに明確に定義される。公式のSOAP API Quick Startは次の手順を示している。
-
Developer Editionへの登録 – 前述の準備1と同様。テスト用のDeveloper EditionでAPIコードを実装・検証し、本番ではAPIアクセス権が有効なエディション(Enterprise/Unlimited/Performance等)に実装することを推奨している[18]。
-
WSDLファイルの取得 – SOAP APIでは、組織ごとに生成されるWSDLファイルがWebサービスインターフェースを定義する。WSDLは組織の管理者から入手するか、API設定画面から自分で生成する。WSDL生成の手順として、管理者権限を持つユーザーでログインし、Setupで「API」を検索してAPIページを開き、Enterprise WSDL または Partner WSDL をダウンロードする[19]。Enterprise WSDLは組織固有のカスタムオブジェクトを含み、Partner WSDLは柔軟な汎用オブジェクト記述を提供する。
-
開発環境へWSDLをインポート – WSDLを取得したら開発プラットフォームにインポートしてクライアントクラスを生成する。Java環境ではSalesforceが提供するWeb Service Connector(WSC)のwsdlcユーティリティを利用し、java -classpath pathToJar/force-wsc-XX.X.x-uber.jar com.sforce.ws.tools.wsdlc pathToWsdl /wsdlDir /outputDir コマンドでWSDLからJARファイルを生成し、それをアプリケーションに組み込む[20]。Microsoft Visual StudioではIDEの「Web参照の追加」機能でWSDLを指定し、プロキシクラスを生成して使用する[20]。
-
サンプルコードの実装 – SOAP APIではセッション管理を含む複数の手順を踏む。公式サンプル(Java)では次のAPI呼び出しを行う[21]。
-
login() – 認証エンドポイントに対してユーザー名とパスワードを送信し、ログインに成功するとユーザー情報とセッションID(sessionId)を取得する。以後のリクエストではこのセッションIDをSOAPヘッダーに含める。
-
describeGlobal() – 組織で利用可能な全オブジェクトのリストを取得する[21]。このメソッドはセッションごとに1回程度呼び出す。
-
describeSObjects() – 特定オブジェクトのメタデータ(フィールドの型や長さ、アクセス権限、参照先関係など)を取得する[21]。
-
query() – SOQLクエリを実行し、例として SELECT FirstName, LastName FROM Contact を実行してクエリ結果を取得する[21]。
-
logout() – セッションを終了する。
SOAP APIを使う際は、認証やセッション維持、XML解析が必要となるが、Enterpriseアプリケーションで大量データや複雑な型を扱う場合に有効である。[3] で述べられているように、SOAP APIは構造化/型付けされたXMLを用いるため、標準化やデータ厳格性が求められるシステムに適している。
API選択のポイント#
· 軽量なモバイル/Webアプリとの連携や簡易なデータ操作 → REST APIが適している。JSONベースで通信量が少なく、ブラウザやモバイルアプリから直接呼び出しやすい[3]。
· エンタープライズシステム間連携や厳格な型指定・バッチ処理が必要 → SOAP APIやBulk APIの利用を検討する。SOAP APIはXMLで厳格なスキーマを持ち、大量データを扱える[3]。Bulk APIは非同期バルク処理向け。
まとめ#
外部システムからSalesforceにデータを連携するには、開発環境の準備とAPIユーザーの作成、OAuth 2.0などによる認証とアクセストークン取得、適切なエンドポイントに対するRESTまたはSOAPリクエストの実装が必要である。REST APIのQuick StartではcURLを用いたバージョン・リソース取得、オブジェクトメタデータ参照、SOQLクエリ、レコード更新の具体例が示されている[9][10][16]。SOAP APIのQuick Startでは、WSDLファイルを生成し開発環境へインポートした上で、login()→describeGlobal()→describeSObjects()→query()→logout() などの手順でクライアントアプリケーションを構築する方法が解説されている[21]。
このように、連携の目的やシステム要件に応じてAPIの種類と認証方式を選択し、正しい手順でアクセストークン/セッションIDを取得してリクエストを行うことが、外部システムとSalesforceを安全かつ効率的に統合する鍵となる。