メタデータの整理
学習の目的
- 未パッケージメタデータをパッケージに整理する主要な戦略を挙げる。
- ロック解除済みパッケージがどのように相互連動できるか判断する。
- 3 個のパッケージ開発モデルを説明し、それぞれを使用するときを説明する。
パッケージ開発の原則の実践
お疲れさまでした。前の単元で、パッケージを作成して、Trailhead Playground に DreamHouse アプリケーションをインストールしました。ここでは、パッケージ開発の主要ないくつかの原則を実践する方法を説明します。小さい規模から開始して、成果を重ねていく方法でも問題ありません。
パッケージへのメタデータの整理には、次のことがあてはまります。
- 反復的なプロセスになることがある。
- ゼロか十かという話ではない。
新規または既存のカスタムアプリケーションのメタデータの整理
DreamHouse LWC は、新しいアプリケーションをゼロから構築して、それをロック解除済みパッケージにパッケージ化する方法を示すよい例です。そこで、DreamHouse アプリケーションを組織に導入して、今後のカスタマイズを管理しましょう。なお、既存のカスタムアプリケーションの新しい機能を更新するときも、同じプロセスに従えます。
まとめると、DreamHouse は次の方法を示すために作成されました。
- Salesforce CLI、プロジェクト、ロック解除済みパッケージを、アプリケーションライフサイクルに統合する。
- メタデータの整理とパッケージの境界の作成のベストプラクティスを採用する。
- 新しいアプリケーション構築時にロック解除済みパッケージを実装する。
DreamHouse LWC のロック解除済みパッケージの作成後は、次のことが可能です
- アプリケーションのソースを独立してテストおよびリリースする。
- 他のメタデータからアプリケーションスキーマ (カスタムオブジェクト) を分離する。
- プロセスを繰り返し、新しい機能を追加して、アプリケーションを継続的に拡張する。
- アプリケーションのバージョンを管理する。
- 既存のバージョンのアップグレードとして、2 番目のバージョンをインストールする。
DreamHouse メタデータ
メタデータ | 説明 |
---|---|
スキーマ | Broker (ブローカー)、Property (物件)、Favorite (お気に入り) のカスタムオブジェクトを含みます。 例: Broker__c、Property__c、Favorite__c |
Lightning アプリケーションおよびコンポーネント | 物件を調査し、物件詳細を確認します。 例: Property_Explorer.flexipage-meta.xml、Property_Record_Page.flexipage-meta.xml |
プロセス (フロー) | 新しい物件が追加されたとき、または価格が変更されたときに、通知を送信します。 例: Advertise_New_Property-2.flow-meta.xml、Price_Change_Push_Notification-1.flow-meta.xml |
Einstein サービス | 画像処理を適用して、アップロードされた画像から家の詳細を自動的に識別します。 例: EinsteinVisionController.cls |
ボット | ユーザーが、Facebook Messenger、Slack、または Alexa を利用して物件を検索できるようにします。 例: HandlerFindProperties.cls |
組織の既存のメタデータの分割
新しいプロジェクトでパッケージ開発ライフサイクルを使用することは非常に合理的です。一方で、リリースの期間、あるいは数年にわたり変更セット開発を使用していた人であれば、どこから開始すべきか説明がほしいと感じているでしょう。組織のコンテンツを、別々のプロジェクト、そして最終的にはパッケージディレクトリへと、どのようにして解きほぐすのでしょうか?
秘密の調味料のレシピを提供したいところですが、アクションプランを規定する人はいません。未パッケージメタデータの分割をどのように進めるかは、科学の面とアート面をあわせもっています。メタデータのどのかけらが、どの Salesforce DX プロジェクトに適合するか決める上で、最適に判断できるのはあなたです。
開始するには、次の質問に答えてください。
- 開発チームが、アプリケーション、新しい機能、カスタマイズを独立してリリースできるようにするかどうか?
- アプリケーションを示すメタデータを識別できるかどうか?
- 別々の機能のモジュールにメタデータを整理できるか?
- この機能またはアプリケーションの未管理パッケージを作成するとき、どのような連動関係を確認できるか?
複数のアプリケーションおよびカスタマイズが組織にある場合、Salesforce DX プロジェクト間に連動関係があると想定してください。
メタデータを解きほぐす 3 つのモデル
実際のシナリオでは、通常、これらの戦略の組み合わせを採用して、それらがビジネス上の必要性に最適に合うように調整します。
モデル | 説明 |
---|---|
アプリケーションベース | アプリケーションを示すメタデータを識別します。このアプローチは DreamHouse アプリケーションのパッケージ作成と似ていますが、例外として、メタデータはすでに組織に存在しています。 |
カスタマイズベース | Sales Cloud、Service Cloud、AppExchange アプリケーションへのカスタマイズなど、本番組織のカスタマイズおよび機能変更用の未パッケージのメタデータを整理します。 |
共有ライブラリ | 相互連動関係が存在する場合、共通の Salesforce DX パッケージを使用して、一連の Apex クラス、または共通で使用されているカスタムオブジェクトを整理します。構築する他のパッケージは、この共通パッケージと連動できます。 |
出発点としての未管理パッケージの使用
未管理メタデータを複数のパッケージに整理するには、最初は次のワークフローに従ってみましょう。
- 本番組織から、未パッケージの自己完結型メタデータの小さいセットを選択します。アプリケーション、既存のアプリケーションのカスタマイズ、機能または機能単位、もしくは標準オブジェクトのカスタマイズを示すメタデータを選択します。
- 組織メタデータのコレクション全体から識別したメタデータを分離するための未管理パッケージを作成します。メタデータを追加して、システムがどの連動メタデータを自動的に取得するか確認します。このステップは、メタデータのあいまいな連動関係の確認に役立ちます。
- project retrieve start を使用して、未管理パッケージからソースを取得します。
- パッケージメタデータを管理する Salesforce DX プロジェクトと Git リポジトリを設定します。
- project deploy start でこのメタデータをスクラッチ組織にプッシュして、これがロック解除済みパッケージに追加するメタデータであることを確認します。
- --no-namespace フラグを使用して、ロック解除済みパッケージを作成します。
- ロック解除済みパッケージをテストおよびリリースします。
- ロック解除済みパッケージが Sandbox でのすべての CI 実行と UAT に合格したら、パッケージバージョンを昇格します。
- ロック解除済みパッケージを本番組織にインストールします。
メタデータのパッケージを作成すると、メタデータは自動的にパッケージに移動します。エンティティの完全な名前は組織およびパッケージのメタデータを識別するため、組織にすでにあるメタデータを上書きし、現在パッケージに含まれていることを示すように内部参照を更新します。
パッケージの連動関係について
ロック解除済みパッケージの主要な価値は、一連の相互連動パッケージを開発および管理できることです。
- ロック解除済みパッケージは、AppExchange パッケージと連動できます。AppExchange パッケージを使用している場合、そのパッケージの独自のカスタマイズをロック解除済みパッケージに配置できます。ロック解除済みパッケージをインストールすると、AppExchange パッケージが示されます。
- ロック解除済みパッケージは、他のロック解除済みパッケージと連動できます。たとえば、従業員が経費レポートを提出するために使用できる新しいアプリケーションを作成しているとしましょう。アプリケーションは、既存の給与支払アプリケーションと、いくつかのバックエンドインテグレーション機能を共有しています。このシナリオでは、経費レポートのロック解除済みパッケージは、給与支払アプリケーションのロック解除済みパッケージと連動します。
- ロック解除済みパッケージは他のロック解除済みパッケージと連動でき、他のロック解除済みパッケージは、さらに別のロック解除済みパッケージと連動できます。複数のレベルの連動関係がサポートされています。
sfdx-project.json ファイルの packageDirectories セクションで連動関係を指定します。連動関係のサポートにより、ロック解除済みパッケージは、充実した連動関係フレームワークを使用したモジュール形式開発を促進します。プロジェクト定義ファイルについての詳細は、『Salesforce DX 開発者ガイド』を参照してください。