管理パッケージを使用した AppExchange ソリューションの開発
管理パッケージは、Salesforce パートナーがビジネスアプリケーションを作成して AppExchange で顧客に配布するために使用するツールです。管理パッケージには、開発したアプリケーションの配布、ライセンス、パイロット機能、トラブルシューティング、収益化に役立つ機能が用意されています。
パッケージは、Salesforce の顧客にアプリケーションを販売したり配布したりするためのコンテナです。パッケージを作成してから、アプリケーションを構成する機能、カスタマイズ、スキーマを追加します。パッケージ化するメタデータコンポーネントの例は次のとおりです。
- Apex クラスおよびトリガ
- 標準オブジェクトのカスタム項目
- カスタムメタデータ型
- カスタムオブジェクト
- フロー
- Lightning ページ
- ページレイアウト
パッケージには多くの異なるメタデータコンポーネントを含めることができますが、単一コンポーネント (Visualforce ページなど) をパッケージ化することもできます。
Salesforce では、第二世代管理パッケージ (管理 2GP) と第一世代管理パッケージ (管理 1GP) を提供しています。今後は、すべて管理 2GP を使用して新しいアプリケーションを作成することをお勧めします。第二世代管理パッケージを使用してアプリケーションを作成する場合の利点は次のとおりです。
| 管理 2GP パッケージ | 管理 1GP パッケージ |
|---|---|
| バージョン管理システムが信頼できる情報源 (ソース駆動型システム) になります。 管理 1GP とは異なり、管理 2GP ではパッケージ組織やパッチ組織は使用しません。 |
パッケージ組織がパッケージのメタデータの信頼できる情報源になります。 |
| Dev Hub がパッケージを所有しますが、Dev Hub にはパッケージのメタデータは含まれません。 パートナービジネス組織 (PBO) で Dev Hub を有効化することをお勧めします。 |
パッケージ組織がパッケージを所有します。パッケージのメタデータは、パッケージ組織に存在します。 |
| Dev Hub は、1 つまたは複数のパッケージを所有できるため、パッケージ開発が簡素化されます。 | パッケージ組織は、管理パッケージを 1 つだけ所有できます。すべてのパッケージとすべてのパッチバージョンでは、新規の組織と一意のログイン情報が必要です。 |
| 複数のパッケージで同じ名前空間を使用できます。 | 名前空間は、1 つのパッケージにしか関連付けることはできません。 |
| 公開 Apex クラスおよびメソッドで @namespaceAccessible アノテーションを使用することで、同じ名前空間を使用している複数のパッケージでコードを共有できます。 | パッケージ間でコードを共有する手段は global Apex のみです。 |
| Salesforce CLI を使用して、すべてのパッケージ操作を自動化できます。操作を自動化することで時間を節約でき、チームの生産性が向上します。 | パッケージの作成やアンインストールなど、一部のパッケージ操作は自動化できません。 |
| パッケージは柔軟なバージョン管理か可能で、不要なパッケージバージョンは破棄できます。この柔軟なバージョン管理では、ブランチを使用してパッケージを並行開発することが可能です。 | パッケージのバージョン管理は直線的です。 |
| パッチバージョンは、Salesforce CLI を使用して作成されます。バージョン管理システムが信頼できる情報源となり、パッチ組織はありません。 | パッチ場合は、パッチ組織という特別な組織でのみ作成できます。 |