Code Builder で package.xml
を使ってメタデータを取得・デプロイする方法
package.xml
を使うことで、取得(retrieve) や デプロイ(deploy) するメタデータを細かく指定できます。
1. package.xml
を使う場合の手順
Code Builder で package.xml
を使ってメタデータを取得・デプロイする基本的な流れは以下の通りです。
(1) package.xml
の作成
まず、manifest
フォルダを作成し、その中に package.xml
を作成します。
package.xml
の作成手順
- Code Builder 内で
manifest
フォルダを作成(まだない場合)mkdir manifest
-
manifest
フォルダ内にpackage.xml
を作成touch manifest/package.xml
-
package.xml
に必要なメタデータの記述を追加(記述方法は後述)
(2) package.xml
を使ってメタデータを取得
Sandbox から 指定したメタデータ を Code Builder にダウンロードするには、以下のコマンドを実行します。
sf project retrieve start --manifest manifest/package.xml --target-org MySandbox
-
--manifest manifest/package.xml
→package.xml
を使って取得 -
--target-org MySandbox
→ 取得先の Salesforce 組織(Sandbox)を指定
(3) package.xml
を使ってメタデータをデプロイ
開発したクラスや LWC などを Sandbox にデプロイ するには、以下のコマンドを実行します。
sf project deploy start --manifest manifest/package.xml --target-org MySandbox
-
--manifest manifest/package.xml
→package.xml
に記載されたメタデータをデプロイ -
--target-org MySandbox
→ 送信先の Salesforce 組織(Sandbox)を指定
2. package.xml
に含めるべきメタデータの基準
(1) 含めるべき Apex クラス・トリガー
- 開発したクラス・トリガー だけを取得する(すべて取得すると管理が大変)
- テストクラス も含める(特に本番環境にデプロイする場合)
例
<types>
<members>MyApexClass</members>
<members>MyTestClass</members>
<name>ApexClass</name>
</types>
(2) 含めるべきオブジェクト・フィールド
-
標準オブジェクト ではなく、カスタムオブジェクト(
__c
が付く)を対象にすることが多い - カスタムフィールド も個別に指定可能(オブジェクトごとに管理)
例
<types>
<members>CustomObject__c</members>
<name>CustomObject</name>
</types>
<types>
<members>CustomObject__c.CustomField__c</members>
<name>CustomField</name>
</types>
(3) 含めるべき LWC(Lightning Web Components)
- 開発した LWC コンポーネントのみを取得
-
LightningComponentBundle
を指定する
例
<types>
<members>myLightningComponent</members>
<name>LightningComponentBundle</name>
</types>
(4) フローやプロセスビルダー
- 画面フロー(Screen Flow)
- オートメーション(プロセスビルダー)
- フローの名前を指定する
例
<types>
<members>MyFlow</members>
<name>Flow</name>
</types>
(5) 設定情報(Custom Metadata, Custom Labels など)
設定情報(カスタムメタデータ、カスタムラベル)も含めることが可能。
例
<types>
<members>MyCustomMetadata__mdt</members>
<name>CustomMetadata</name>
</types>
<types>
<members>MyCustomLabel</members>
<name>CustomLabel</name>
</types>
3. package.xml
の具体的な記述例
以下は、Apex クラス・トリガー・カスタムオブジェクト・LWC・フローなどを含めた package.xml
のサンプルです。
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
<types>
<members>MyApexClass</members>
<members>MyTestClass</members>
<name>ApexClass</name>
</types>
<types>
<members>MyTrigger</members>
<name>ApexTrigger</name>
</types>
<types>
<members>CustomObject__c</members>
<name>CustomObject</name>
</types>
<types>
<members>CustomObject__c.CustomField__c</members>
<name>CustomField</name>
</types>
<types>
<members>myLightningComponent</members>
<name>LightningComponentBundle</name>
</types>
<types>
<members>MyFlow</members>
<name>Flow</name>
</types>
<types>
<members>MyCustomMetadata__mdt</members>
<name>CustomMetadata</name>
</types>
<types>
<members>MyCustomLabel</members>
<name>CustomLabel</name>
</types>
<version>58.0</version>
</Package>
4. package.xml
を活用した開発のポイント
-
適切なメタデータだけを選ぶ
- 不要なクラスやオブジェクトを含めると、デプロイの管理が難しくなる
- 開発したもの、または関連するものだけを指定する
-
本番環境へのデプロイ時にテストクラスを含める
- 本番環境(Production)では
testLevel=RunLocalTests
を指定してテストを実行するのが推奨される
- 本番環境(Production)では
-
メタデータを追加したら
package.xml
も更新する- 新しいクラスやフィールドを追加した場合、
package.xml
も適宜更新
- 新しいクラスやフィールドを追加した場合、
5. まとめ
✅ package.xml
を使う場合の基本手順
-
manifest/package.xml
を作成 sf project retrieve start --manifest manifest/package.xml --target-org MySandbox
- 開発を進める
sf project deploy start --manifest manifest/package.xml --target-org MySandbox
✅ 含めるべきメタデータの基準
- Apex クラス・トリガー:開発したもの+テストクラス
- カスタムオブジェクト・フィールド:開発対象のもの
- LWC(Lightning Web Components):作成したコンポーネント
- フロー・プロセスビルダー:開発対象のフロー
- 設定情報(Custom Metadata, Custom Labels):必要なもの
これで、Code Builder で package.xml
を使ったメタデータ管理ができるようになります!🚀