sf と sfdx が連携するしくみ
環境
現在、操作できる環境は、Salesforce 組織 (スクラッチ組織、Dev Hub、本番組織、Sandbox など) と計算環境 (Salesforce Functions をデプロイする場所) のみです。組織の認証は sf と sfdx 間で相互に利用することができます。
具体的には、sfdx でスクラッチ組織を作成したり、組織を認証したり、組織からログアウトしたりすると、sf コマンドはこのようなアクションを優先します。逆の場合も同じで、sf で環境にログインまたは環境からログアウトすると、sfdx コマンドはそのアクションを優先します。
たとえば、sfdx force:org:create でスクラッチ組織を作成したとします。同じプロジェクトで sf env list を実行すると、新しいスクラッチ組織が表示されます。
同様に、sf login org で組織にログインし、sfdx force:org:list を実行すると、ログインした組織が表示されます。
別名
別名は sf と sfdx 間で相互に利用することができます。
たとえば、sfdx force:org:create --setalias MyScratchOrg を実行すると、sf env open --target-env MyScratchOrg のように、sf でこの別名を使用できます。
同様に、sf login org --alias MyDevHub を実行すると、sfdx force:org:open --targetusername MyDevHub のように、sfdx でこの別名を使用できます。
設定変数
設定変数は sf と sfdx 間で相互に利用することができます。ただし、それらの名前は下表に示すように異なります。下表には、sf と sfdx の両方で使用可能なすべての設定変数が記載されています。また、対応する sf 環境変数も記載されています。詳細なリストについては、「環境変数」を参照してください。
| sf 設定変数 | 相当する sfdx 設定変数値 | sf 環境変数 |
|---|---|---|
| disable-telemetry | disableTelemetry | SF_DISABLE_TELEMETRY |
| org-api-version | apiVersion | SF_ORG_API_VERSION |
| org-custom-metadata-templates | customOrgMetadataTemplates | SF_ORG_CUSTOM_METADATA_TEMPLATES |
| org-instance-url | instanceUrl | SF_ORG_INSTANCE_URL |
| org-max-query-limit | maxQueryLimit | SF_ORG_MAX_QUERY_LIMIT |
| org-metadata-rest-deploy | restDeploy | SF_ORG_METADATA_REST_DEPLOY |
| target-dev-hub | defaultdevhubusername | SF_TARGET_DEV_HUB |
| target-org | defaultusername | SF_TARGET_ORG |
target-org と defaultusername を例にして、いくつかの使用事例を実行し、その相互運用のしくみを見てみましょう。残りの設定変数にも同じ動作が適用されます。一般的な規則として、target-org をある値に設定すると、defaultusername も自動的に同じ値に設定されます。また、その逆も同様です。
- アクション: 以下の sfdx コマンドを使用して、スクラッチ組織を作成します。
-
1sfdx force:org:create --setdefaultusername -f config/project-scratch-def.json --setalias my-scratch-org次に、sfdx config:list と sf config list を実行します。
結果: defaultusername と target-org の両方が my-scratch-org に設定されます。
- アクション: 以下の sf コマンドを使用して、target-org 設定変数を別名が uat-testing-org という組織に設定します。
-
1sf config set target-org=uat-testing-org次に、sfdx config:list と sf config list を実行します。
結果: defaultusername と target-org の両方が uat-testing-org に設定されます。
- アクション: 以下の sfdx コマンドを使用して、defaultusername 設定変数を別名が production-org という組織に設定します。
-
1sfdx config:set defaultusername=production-org次に、sfdx config:list と sf config list を実行します。
結果: defaultusername と target-org の両方が production-org に設定されます。
- アクション: 以下の sf コマンドを使用して、defaultusername を設定します。
-
1sf config set defaultusername=other-org結果: sf コマンドを使用して直接 defaultusername を設定することはできないため、エラーになります。
- アクション: 以下の sfdx を使用して、target-org を設定します。
-
1sfdx config:set target-org=other-org結果: sfdx コマンドを使用して直接 target-org を設定することはできないため、エラーになります。
sfdx プラグインを sf にインストールする
sf と sfdx は両方ともオープンソースの CLI フレームワーク (oclif) 上に構築されているため、もともと sfdx 用に構築されたプラグインを sf に適切にインストールして使用することができます。ただし、--help とコマンド出力には、次のような矛盾があります。
- --help コンテンツでは、sfdx でコマンドが実行される可能性が高いことが想定されています。そのため、コマンドの例では sf の代わりに sfdx を使用しており、スペースではなくコロンで区切るなどしています。
- 同様に、コマンド出力にも sfdx スタイルが反映されています。たとえば、@oclif/plugin-commands プラグインをインストールしてから sf commands を実行すると、すべてのコマンドが適切にリストされます。ただし、コマンドはコロンで区切られて表示され、その説明は短い概要ではなく、コマンドの長い説明の最初の行になります