進行状況の追跡を始めよう
Trailhead のホーム
Trailhead のホーム

メタデータの整理

学習の目的

この単元を完了すると、次のことができるようになります。
  • 未パッケージメタデータをパッケージに整理する主要な戦略を挙げる。
  • ロック解除済みパッケージがどのように相互連動できるか判断する。
  • 3 個のパッケージ開発モデルを説明し、それぞれを使用するときを説明する。

パッケージ開発の原則の実践

これで完了です。前の単元で、パッケージを作成して、Trailhead Playground に DreamHouse アプリケーションをインストールしました。ここでは、パッケージ開発の主要ないくつかの原則を実践する方法を説明します。小さい規模から開始して、成果を重ねていく方法でも問題ありません。

パッケージへのメタデータの整理には、次のことがあてはまります。

  • 反復的なプロセスになることがある。
  • ゼロか十かという話ではない。

新規または既存のカスタムアプリケーションのメタデータの整理

DreamHouse は、新しいアプリケーションをゼロから構築して、それをロック解除済みパッケージにパッケージ化する方法を示すよい例です。そこで、DreamHouse アプリケーションを組織に導入して、今後のカスタマイズを管理しましょう。なお、既存のカスタムアプリケーションの新しい機能を更新するときも、同じプロセスに従えます。

まとめると、DreamHouse は次の方法を示すために作成されました。

  • Salesforce CLI、プロジェクト、ロック解除済みパッケージを、アプリケーションライフサイクルに統合する。
  • メタデータの整理とパッケージの境界の作成のベストプラクティスを採用する。
  • 新しいアプリケーション構築時にロック解除済みパッケージを実装する。

DreamHouse のロック解除済みパッケージの作成後は、次のことが可能です

  • アプリケーションのソースを独立してテストおよびリリースする。
  • 他のメタデータからアプリケーションスキーマ (カスタムオブジェクト) を分離する。
  • プロセスを繰り返し、新しい機能を追加して、アプリケーションを継続的に拡張する。
  • アプリケーションのバージョンを管理する。
  • 既存のバージョンのアップグレードとして、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 クラス、または共通で使用されているカスタムオブジェクトを整理します。構築する他のパッケージは、この共通パッケージと連動できます。

出発点としての未管理パッケージの使用

未管理メタデータを複数のパッケージに整理するには、最初は次のワークフローに従ってみましょう。

  1. 本番組織から、未パッケージの自己完結型メタデータの小さいセットを選択します。アプリケーション、既存のアプリケーションのカスタマイズ、機能または機能単位、もしくは標準オブジェクトのカスタマイズを示すメタデータを選択します。
  2. 組織メタデータのコレクション全体から識別したメタデータを分離するための未管理パッケージを作成します。メタデータを追加して、システムがどの連動メタデータを自動的に取得するか確認します。このステップは、メタデータのあいまいな連動関係の確認に役立ちます。
  3. force:mdapi:retrieve を使用して、未管理パッケージからソースを取得します。
  4. パッケージメタデータを管理する Salesforce DX プロジェクトと Git リポジトリを設定します。
  5. force:mdapi:convert を実行して、ソースを Salesforce DX 形式に変換します。
  6. force:source:push でこのメタデータをスクラッチ組織にプッシュして、これがロック解除済みパッケージに含めるメタデータであることを確認します。
  7. --nonamespace フラグを使用して、ロック解除済みパッケージを作成します。
  8. ロック解除済みパッケージをテストおよびリリースします。
  9. ロック解除済みパッケージが Sandbox でのすべての CI 実行と UAT に合格したら、パッケージバージョンを昇格します。
  10. ロック解除済みパッケージを本番組織にインストールします。

メタデータのパッケージを作成すると、メタデータは自動的にパッケージに移動します。エンティティの完全な名前は組織およびパッケージのメタデータを識別するため、組織にすでにあるメタデータを上書きし、現在パッケージに含まれていることを示すように内部参照を更新します。

パッケージの連動関係について

ロック解除済みパッケージの主要な価値は、一連の相互連動パッケージを開発および管理できることです。

  • ロック解除済みパッケージは、AppExchange パッケージと連動できます。AppExchange パッケージを使用している場合、そのパッケージの独自のカスタマイズをロック解除済みパッケージに配置できます。ロック解除済みパッケージをインストールすると、AppExchange パッケージが示されます。
  • ロック解除済みパッケージは、他のロック解除済みパッケージと連動できます。たとえば、従業員が経費レポートを提出するために使用できる新しいアプリケーションを作成しているとしましょう。アプリケーションは、既存の給与支払アプリケーションと、いくつかのバックエンドインテグレーション機能を共有しています。このシナリオでは、経費レポートのロック解除済みパッケージは、給与支払アプリケーションのロック解除済みパッケージと連動します。
  • ロック解除済みパッケージは他のロック解除済みパッケージと連動でき、他のロック解除済みパッケージは、さらに別のロック解除済みパッケージと連動できます。複数のレベルの連動関係がサポートされています。

sfdx-project.json ファイルの packageDirectories セクションで連動関係を指定します。連動関係のサポートにより、ロック解除済みパッケージは、充実した連動関係フレームワークを使用したモジュール形式開発を促進します。Salesforce DX プロジェクトファイルについての詳細は、『Salesforce DX 開発者ガイド』を参照してください。