この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Salesforce CLI の API バージョンとソース API バージョンのしくみ

Salesforce CLI は、組織へのメタデータのリリース時や組織からのメタデータの取得時に、API バージョンとソース API バージョンの両方を使用します。この 2 つの設定は、同じような名前で、同じ値に設定されることが多いですが、異なる働きをします。

単純化のために、このトピックでは apiVersionsourceApiVersion と表記します。最初にそれぞれの意味を定義します。

apiVersion
apiVersion 値は HTTPS の要求や応答の形式を決定します。

具体的には、apiVersion は HTTPS の要求や応答の処理に使用されるメタデータ API のコアバージョンを指します。メタデータソースを組織にリリースする場合、Salesforce CLI は Connection オブジェクトに apiVersion 値を設定し、HTTPS 要求の URL を SOAP API または REST API で使用します。現在、メタデータ取得用の REST API がないため、Salesforce CLI では Connection オブジェクトに設定された apiVersion の値を使用して SOAP エンドポイントの URL が作成されます。

sourceApiVersion
sourceApiVersion の値は HTTPS の要求や応答でのメタデータの形式を決定します。

Salesforce CLI は、マニフェストファイル (package.xml) の <version> 要素を設定するときに sourceApiVersion 値を使用します。package.xml ファイルは、リリースまたは取得時に、それぞれ HTTPS 要求または応答に組み込まれます。

次の 2 つの例は、2 つの設定がどのように連動するかを示しています。
  • 取得: たとえば、Summer '22 リリース (API バージョン 55.0) でメタデータ型に新しい項目が追加されたとします。sourceApiVersion54.0 に設定してから force:source:retrieve コマンドを実行すると、取得したメタデータにはこの新しい項目が追加されません。ただし、sourceApiVersion55.0 に設定して同じように取得すると、新しい項目を含むメタデータが返されます。
  • リリース: 同様に API バージョン 55.0 でメタデータ型に新しい項目が追加されたとします。sourceApiVersion54.0 に設定し、この新しい項目を含むローカルメタデータファイルをリリースしようとすると、リリースに失敗します。新しい項目でメタデータを正常にリリースするには、sourceApiVersion55.0 以上に設定する必要があります。

Salesforce CLI 設定の優先順位

apiVersionsourceApiVersion を設定する方法は複数あります。また、これらの方法を明示的に指定していない場合は Salesforce CLI が複数の方法のいずれかでそれらの値を決定します。次の優先順位のリストを参照して、実際の環境での 2 つの設定の優先度を判断してください。リストの上位の設定が下位の設定よりも優先されます。この優先順位がメタデータのリリースと取得にどのように影響するかについては、このセクションの後の例を参照してください。

apiVersion: 優先順位
  1. --apiversion コマンドフラグ。
  2. SFDX_API_VERSION 環境変数。
  3. apiVersion ローカル設定変数。
  4. apiVersion グローバル設定変数。
  5. 対象組織でサポートされている最高の API バージョン。
sourceApiVersion: 優先順位
  1. マニフェストファイル (package.xml) 内の <version> 要素。
  2. sfdx-project.json ファイルの sourceApiVersion プロパティ。
  3. --apiversion コマンドフラグ。
  4. SFDX_API_VERSION 環境変数。
  5. apiVersion ローカル設定変数。
  6. apiVersion グローバル設定変数。
  7. 対象組織でサポートされている最高の API バージョン。

設定の優先順位を表すリリースの例

以下の例では、さまざまなユースケースを想定し、リリース後の結果を示しています。例では、force:source:deploy を使用していますが、force:source:pushforce:mdapi:deploy も同様に使用できます。

設定: apiVersion はローカル設定変数 (sfdx config:set apiVersion=55.0) を使用して 55.0 に設定されます。sourceApiVersion は、sfdx-project.json ファイルで 54.0 に設定されています。
コマンド: sfdx force:source:deploy --sourcepath force-app

結果: Salesforce CLI は、API バージョン 55.0 のエンドポイントにリリース要求を送信します。要求とともに送信されるマニフェストの <version> 要素の値は 54.0 です。これは、リリースされるメタデータソースが API バージョン 54.0 の形態であることを意味します。

設定: apiVersion はローカル設定変数を使用して 55.0 に設定されます。sourceApiVersion は、sfdx-project.json ファイルで 54.0 に設定されています。
コマンド: sfdx force:source:deploy --sourcepath force-app --apiversion=56.0

結果: Salesforce CLI は、API バージョン 56.0 のエンドポイントにリリース要求を送信します。要求とともに送信されるマニフェストの <version> 要素の値は 54.0 です。これは、リリースされるメタデータソースが API バージョン 54.0 の形態であることを意味します。

設定: apiVersion はローカル設定変数を使用して 55.0 に設定されます。SFDX_API_VERSION 環境変数は 56.0 に設定されます。sourceApiVersionsfdx-project.json では設定されていません。
コマンド: sfdx force:source:deploy --sourcepath force-app

結果: Salesforce CLI は、API バージョン 56.0 のエンドポイントにリリース要求を送信します。要求とともに送信されるマニフェストの <version> 要素の値は 56.0 です。これは、リリースされるメタデータソースが API バージョン 56.0 の形態であることを意味します。

設定: apiVersion はローカル設定変数を使用して 55.0 に設定されます。sourceApiVersion は、sfdx-project.json ファイルで 54.0 に設定されています。マニフェストファイルの <version> 要素は、53.0 に設定されます。
コマンド: sfdx force:source:deploy --manifest ./package.xml

結果: Salesforce CLI は、API バージョン 55.0 のエンドポイントにリリース要求を送信します。要求とともに送信されるマニフェストの <version> 要素の値は 53.0 です。これは、リリースされるメタデータソースが API バージョン 53.0 の形態であることを意味します。

設定: なし。組織でサポートされる API の最大バージョンは 56.0 です。
コマンド: sfdx force:source:deploy --sourcepath force-app

結果: Salesforce CLI は、API バージョン 56.0 のエンドポイントにリリース要求を送信します。要求とともに送信されるマニフェストの <version> 要素の値は 56.0 です。これは、リリースされるメタデータソースが API バージョン 56.0 の形態であることを意味します。

設定の優先順位を表す取得の例

以下の例では、さまざまなユースケースを想定し、取得後の結果を示しています。例では、force:source:retrieve を使用していますが、force:source:pullforce:mdapi:retrieve も同様に使用できます。

設定: apiVersion はローカル設定変数 (sfdx config:set apiVersion=55.0) を使用して 55.0 に設定されます。sourceApiVersion は、sfdx-project.json ファイルで 54.0 に設定されています。
コマンド: sfdx force:source:retrieve --sourcepath force-app

結果: Salesforce CLI は、API バージョン 55.0 の SOAP エンドポイントに取得要求を送信します。要求とともに送信されるマニフェストの <version> 要素の値は 54.0 です。これは、取得されるメタデータソースが API バージョン 54.0 の形態であることを意味します。

設定: apiVersion はローカル設定変数 (sfdx config:set apiVersion=55.0) を使用して 55.0 に設定されます。sourceApiVersion は、sfdx-project.json ファイルで 54.0 に設定されています。
コマンド: sfdx force:source:retrieve --sourcepath force-app --apiversion 56.0

結果: Salesforce CLI は、API バージョン 56.0 の SOAP エンドポイントに取得要求を送信します。要求とともに送信されるマニフェストの <version> 要素の値は 54.0 です。これは、取得されるメタデータソースが API バージョン 54.0 の形態であることを意味します。

設定: apiVersion はローカル設定変数を使用して 55.0 に設定されます。SFDX_API_VERSION 環境変数は 56.0 に設定されます。sourceApiVersionsfdx-project.json では設定されていません。
コマンド: sfdx force:source:retrieve --sourcepath force-app

結果: Salesforce CLI は、API バージョン 56.0 の SOAP エンドポイントに取得要求を送信します。要求とともに送信されるマニフェストの <version> 要素の値は 56.0 です。これは、取得されるメタデータソースが API バージョン 56.0 の形態であることを意味します。

設定: apiVersion はローカル設定変数を使用して 55.0 に設定されます。sourceApiVersion は、sfdx-project.json ファイルで 54.0 に設定されています。マニフェストファイルの <version> 要素は、53.0 に設定されます。
コマンド: sfdx force:source:retrieve --manifest ./package.xml

結果: Salesforce CLI は、API バージョン 55.0 の SOAP エンドポイントに取得要求を送信します。要求とともに送信されるマニフェストの <version> 要素の値は 53.0 です。これは、取得されるメタデータソースが API バージョン 53.0 の形態であることを意味します。

設定: なし。組織でサポートされる API の最大バージョンは 56.0 です。
コマンド: sfdx force:source:retrieve --sourcepath force-app

結果: Salesforce CLI は、API バージョン 56.0 の SOAP エンドポイントに取得要求を送信します。要求とともに送信されるマニフェストの <version> 要素の値は 56.0 です。これは、取得されるメタデータソースが API バージョン 56.0 の形態であることを意味します。