ベストプラクティス
ユーザ権限
クライアントアプリケーションが SOAP API に接続するとき、最初にログインする必要があります。クライアントアプリケーションは、ログインユーザの権限および共有設定に基づいて動作します。
組織の Salesforce 管理者は、プロファイルおよび権限セットを設定し、ユーザをそれらに割り当てることによって、さまざまな機能やビューの使用を制御します。API にアクセスするには (コールを発行してコール結果を受信するには)、ユーザに「API 対応」権限が割り当てられている必要があります。クライアントアプリケーションは、ログインユーザの権限を介してアクセス権限を付与されるこれらのオブジェクトおよび項目のみをクエリしたり更新したりできます。
共有ルールによってデータへのアクセスを許可されたユーザとしてのログインでは、API はアクセスを確認する追加のクエリを発行する必要があります。それを避けるには、「すべてのデータの編集」権限を持つユーザとしてログインします。
API 利用状況の監視
組織で生成された SOAP API 要求の数を監視するには、次の 2 つの方法があります。
- すべてのユーザが 24 時間以内に送信された API 要求の数を確認できます。この情報を参照するには、[設定] から、 をクリックします。右の列の [API 要求数 (この 24 時間以内)] を参照します。
- ユーザが「すべてのデータの編集」権限を持つ場合、7 日以内に送信された API 要求のレポートを参照できます。情報を参照するには、[レポート] タブをクリックし、[管理レポート] セクションにスクロールして [過去 7 日間の API 使用状況] リンクをクリックします。[集計情報:] ドロップダウンリストにある任意の項目でレポートを並び替えることができます。
クエリの制限
ユーザが同時に実行できるクエリの数は制限されています。ユーザは一度に最大 10 個のクエリカーソルを開くことができます。同じユーザとしてログインしているクライアントアプリケーションが、新しい QueryLocator カーソルを開こうとしたときに、10 個のカーソルがすでに開かれていると、そのうち最も古いカーソルが解放されます。クライアントアプリケーションがリリースされたクエリカーソルを開こうとすると、エラーになります。
複数のクライアントアプリケーションが、同じ username 引数を使用してログインできます。ただし、クエリ制限によってエラーになるリスクが高くなります。
複数のクライアントアプリケーションが同じユーザを使用してログインした場合、そのアプリケーションすべてで同じセッションが共有されます。いずれかのクライアントアプリケーションが logout() をコールすると、すべてのクライアントアプリケーションのセッションが無効になります。クライアントアプリケーションごとに異なるユーザを使用すると、こうした制限を回避しやすくなります。
API 要求の制限
最適なパフォーマンスを維持し、すべてのお客様が Force.com API を使用できるようにするために、Salesforce は次の 2 つの制限を設けることによって、トランザクションの負荷を調整しています。
- 同時 API 要求数の制限
- API 要求数の合計に対する制限
コールが要求制限を超えると、エラーが返されます。
次の表は、20 秒以上の同時要求 (コール) 数について、さまざまな種類の組織に対する制限を示しています。
次の表は、組織の 24 時間あたりの API 要求 (コール) 数の合計に関する制限について示しています。
コール数の制限は、24 時間あたりに組織で行われた API コール数の集計に対して適用されます。この制限は、ユーザごとに適用されるものではありません。組織がこの制限を超過した場合、組織内のすべてのユーザが一時的にブロックされ、追加のコールを行うことができなくなります。直近 24 時間の使用状況が制限値内に収まるまで、コールはブロックされます。
Salesforce データベースサーバの複数インスタンス
Salesforce は数多くのデータベースサーバインスタンスを提供しています。通常組織は地理的な地域ごとに分けられていますが、組織はあらゆるインスタンスに置かれる可能性があります。
コンテンツタイプの要件
API バージョン 7.0 以降では、すべての要求には Content-Type: text/xml; charset=utf-8 などの正しいコンテ��ツタイプの HTTP ヘッダーを含んでいなければなりません。バージョン 7.0 より前の API ではこの要件は適用されません。
圧縮
SOAP API は、HTTP 1.1 仕様で定義された標準を使用した要求と応答の圧縮をサポートしています。いくつかの SOAP/WSDL クライアントでは自動的にサポートされており、他のクライアントへも手動で追加できます。クライアント別の詳細は、https://developer.salesforce.com/page/Tools を参照してください。
クライアントが圧縮をサポートしていることを示すには、HTTP ヘッダー「Accept-Encoding: gzip, deflate」または同様のヘッダーを含める必要があります。クライアントでこのヘッダーが正しく指定されている場合、SOAP API は応答を圧縮します。レスポンスには、「Content-Encoding: deflate」または「Content-Encoding: gzip」のいずれか適切な方が含まれます。「Content-Encoding: deflate」または「gzip」をヘッダーに含めることで、あらゆる要求を圧縮することができます。
HTTP 永続接続
ほとんどのクライアントでは、HTTP 1.1 の永続接続を使用し、複数の要求のソケット接続を再利用したほうがパフォーマンスが向上します。永続接続は通常 SOAP/WSDL クライアントが自動的に処理します。詳細は、次の HTTP 1.1 の仕様を参照してください。
http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.1
HTTP のチャンク
HTTP 1.1 を使用しているクライアントは、チャンクレスポンスを受け取ることがあります。チャンクは通常 SOAP/WSDL クライアントが自動的に処理します。