
第二世代パッケージ 管理ツール のPackage Visualizerを触ってみた
こんにちは、遠藤です。
先日開催したゆるっとSalseforce #9では、第二世代パッケージ用の管理ツール「Package Visualizer」について取り上げさせていただきました。この記事ではイベントで紹介した内容をベースに改めてPackage Visualizerの機能についてまとめています。
Package Visualizer とは
Package Visualizerは、Salesforce Labsが提供するアプリで、AppExchangeサイトの以下のページで公開されています。
https://appexchange.salesforce.com/appxListingDetail?listingId=a0N3u00000MSnbuEAD
「Second-Generation Packages Visualizer for ISV Partners」と謳っているように、第二世代パッケージを可視化するツールになります。可視化といってもなにかグラフなどインサイトを提供するわけではなく、sfdxコマンドを叩かなくてもPackage Visualizerがインストールされている組織に属するパッケージの一覧と詳細が確認できるといった機能を主に提供しています。
また「 for ISV Partners」と書いてありますが、ロック解除済みパッケージにも使えます。インプリでロック解除済みパッケージを使用するケースでも利用することができそうです。
Package Visualizerの詳細については、AppExchangeのアプリのページにリンクがある以下のQuipページにまとまっています。一次情報はこちらになりますので基本的にはこちらのQuipを参照することをオススメします。
Package Visualizerのセットアップ方法
Quip「Package Visualizer Guide」には色々書いてありますが、システム管理者での確認であれば、インストールURL(現在v1.14)を叩いてDev Hub組織にインストールするだけです。
パッケージをインストール
「Package Visualizer Guide」に記載されているInstall URLにアクセスして「管理者のみにインストール」を選択してインストールします。

CSP信頼済みサイトとリモートサイトの設定を許可するとインストールが開始されます。

Package Visualizerの開き方
Package Visualizerの起動は、パッケージにはアプリケーションが入っていないので、タブを直に開きます。
ランチャーから開く場合は以下のように「Package」などで絞込んで開きます。

また「Package Visualizer Guide」の「Setup and Configuration」はPackage Visualizerを開いて、以下のアイコンから表示できます。

システム管理者以外で使えるようにする
「Setup and Configuration」を開くと、ログインユーザが必要な設定が満たされているかどうかを確認できます。(Pacakge Visualizerタブの参照権限は必要です。)

リモートサイト設定とCSP信頼済みサイトは、インストール時に許可済みなので、システム管理者以外が利用する場合に必要な手順は権限セットの追加のみになります。
2つの権限セット「Package Visualizer Permission」と「Package Visualizer Push Upgrade Permission」を目的のユーザに割り当てます。

Package Visualizerでできること
AppExchangeのページの説明の箇条書きに沿ってできることを確認してみます。
1. Visualize all Package, Package Versions, and Package Subscribers in Developer Hub.
Dev Hubに所属するパッケージとパッケージバージョンおよび登録者組織の一覧と詳細の確認ができます。
以下、Pacakge Visualizerを開いた画面ですが、左のリストにはDev Hubに所属するパッケージの一覧され、右ペインでは選択したパッケージの情報を確認することができます。

パッケージ詳細の「Versions」タブでは、パッケージ バージョンを確認できます。

「Subscribers」タブでは、パッケージをインストールしている組織の一覧を確認できます。「Package Version Id」がレコードIdなのでどのバージョンをインストールしているのかひと目でわかりにくいのは残念ポイントです。

「Push Upgrade Requests」タブでは過去にスケジュールされた転送アップグレードのステータスを確認できます。

2. Visualize Package Version Ancestry
パッケージの祖先を可視化は第二世代パッケージの特徴であるバージョンのブランチをツリー表示できるちょっとした機能です。
特に管理パッケージはバージョンをブランチすることは基本無いので、利用シーンはあまりなさそうです。

補足
第二世代管理パッケージのプロジェクトファイルでの上位パッケージの指定 | Salesforce DX 開発者ガイド | Salesforce Developers に解説がありますが、現在はバージョンをブランチするには「--skipancestorcheck」オプションが必要となり、基本は線形にバージョン管理することが推奨されています。
3. Ability to Schedule Push Upgrade for 2GP Managed and Unlocked Packages
第二世代パッケージの転送アップグレードができます。
転送アップグレードのスケジュールは以下の手順で行います。
(現在、弊社にはセキュリティレビューを通している第二世代管理パッケージが無いのでロック解除済みパッケージで確認しています。)
1. パッケージ バージョンの一覧で目的のバージョンの「Show Details」を選択

2.「Push Upgrades」タブを開き、対象組織にチェックを入れ「Upgrade」ボタンをクリックする

即時実行の場合は、「日付」「時間」を空のまま「Schedule」をクリック

成功メッセージが表示されます。

4. Ability to Request App Analytics Log Files
App Analytics ログの取得をリクエストできます。
こちらは、LMO(LMAがインストールされている組織)に登録されている管理パッケージが対象の機能で、ロック解除済みパッケージでは使用できません。
パッケージ詳細の「Request AppAnalytics」をクリックして、取得するログの種類を選択します。

利用状況データのデータ型を選択して[Next]をクリックします。

各データ型の違いについてはISVForceガイドを参照ください
Package Usage Log: パッケージ利用状況概要
Package Usage Summary: パッケージ利用状況ログ
Subscriber Snapshot: 登録者のスナップショット
ログを取得する期間と形式を指定して「Submit」すればログの取得リクエストが発行されますが、セキュリティレビューが未通過で、LMAに登録していないパッケージは使用できません。

5. Ability to quickly check for Developer Hub's 2GP specific Org Limits.
以下の制限を確認できます。
Active Scratch Orgs: 有効なスクラッチ組織の割り当て
Daily Scratch Orgs: 1 日のスクラッチ組織の割り当て
Package2 Version Creates: 1日に作成できる 管理 2GP パッケージバージョンの最大数
Package2 Version Creates without Validation:「--skipvalidation」を指定して、1日に作成できる 管理 2GP パッケージバージョンの最大数?


参考情報
スクラッチ組織のサポートされているエディションと割り当て | Salesforce DX 開発者ガイド | Salesforce Developers
第二世代管理パッケージのバージョンの作成と更新 | Salesforce DX 開発者ガイド | Salesforce Developers
6. Integrated with LMA Application.
Package Visualizerのパッケージバージョン詳細からライセンスの活動タイムライン(Activity Timeline)とライセンスの変更(Modify License)が可能です。
[Versions]タブでパッケージバージョンの[Show Details]をクリックして、パッケージバージョンの詳細を開くと、LMAがインストールされている組織では[Lisence Management App]タブが表示されます。

社内では第二世代の管理パッケージをリリースしていないので動作は確認できませんでしたが、以下のような画面が表示されるそうです。


ただ、バージョンの詳細ページから表示するので、LMAと比較すると使い勝手は悪そうです。[Subscribers]タブにあればよかったのですが。
Package Visualizerの用途
一通り機能について解説してみましたが、LMAやApp Analyticsのログリクエストについては専用のアプリのほうが使い勝手がよく、Package Visualizerのこれらの機能を実際に使う機会は少なそうです。
とすると他に代替方法が乏しい転送アップグレードがメインの用途となりそうです。
転送アップグレードについては、弊社co-meetingのHPのAppExchangeアプリ開発/運用Tipsの2GPの連載記事にて改めて解説する予定ですので、そちらを公開した際にはぜひご参照ください。