ロック解除済みパッケージの作成、テスト、リリース
スクラッチ組織でのプロジェクトの構築とテスト
他の Salesforce DX プロジェクトと同様に、まず自分のスクラッチ組織で作業を開始します。対象の環境でパッケージを構築してインストールする前に、アプリケーションを実行してテストできます。
-
GIFter
ディレクトリにいることを確認します。
GIFter プロジェクトには、そのまま使用できるスクラッチ組織設定ファイルが用意されています。
- まだ Dev Hub 組織に接続していない場合は、Dev Hub 組織にログインします。
sfdx auth:web:login -d -a DevHub
- スクラッチ組織を作成します。
sfdx force:org:create -s -f config/project-scratch-def.json
次のような応答が表示されます。Successfully created scratch org: 00D1100000BvDK3EAN, username: test-ou0arkv1qbow@example.com
これで、使用可能なスクラッチ組織が作成され、プロジェクトワークスペースのデフォルトとして設定されました。
- 次に、
force-app
フォルダから新しく作成したスクラッチ組織にすべてのソースをプッシュします。sfdx force:source:push
組織にプッシュされたすべてのソースのリストが表示されます。=== Pushed Source STATE FULL NAME TYPE PROJECT PATH ───── ──────────────────────────────────── ──────────────────── ───────────────────────────────────────────────────────────────────────── Add GIFter CustomApplication force-app/main/default/applications/GIFter.app-meta.xml Add SearchGIPHY/SearchGIPHY.auradoc AuraDefinitionBundle force-app/main/default/aura/SearchGIPHY/SearchGIPHY.auradoc Add SearchGIPHY/SearchGIPHY.cmp AuraDefinitionBundle force-app/main/default/aura/SearchGIPHY/SearchGIPHY.cmp Add SearchGIPHY/SearchGIPHY.cmp AuraDefinitionBundle force-app/main/default/aura/SearchGIPHY/SearchGIPHY.cmp-meta.xml Add SearchGIPHY/SearchGIPHY.css AuraDefinitionBundle force-app/main/default/aura/SearchGIPHY/SearchGIPHY.css Add SearchGIPHY/SearchGIPHY.design AuraDefinitionBundle force-app/main/default/aura/SearchGIPHY/SearchGIPHY.design Add SearchGIPHY/SearchGIPHY.svg AuraDefinitionBundle force-app/main/default/aura/SearchGIPHY/SearchGIPHY.svg Add SearchGIPHY/SearchGIPHYController.js AuraDefinitionBundle force-app/main/default/aura/SearchGIPHY/SearchGIPHYController.js Add SearchGIPHY/SearchGIPHYHelper.js AuraDefinitionBundle force-app/main/default/aura/SearchGIPHY/SearchGIPHYHelper.js Add SearchGIPHY/SearchGIPHYRenderer.js AuraDefinitionBundle force-app/main/default/aura/SearchGIPHY/SearchGIPHYRenderer.js Add ChatterHelper ApexClass force-app/main/default/classes/ChatterHelper.cls Add ChatterHelper ApexClass force-app/main/default/classes/ChatterHelper.cls-meta.xml Add GIPHY CspTrustedSite force-app/main/default/cspTrustedSites/GIPHY.cspTrustedSite-meta.xml Add GIFter FlexiPage force-app/main/default/flexipages/GIFter.flexipage-meta.xml Add GIFter_UtilityBar FlexiPage force-app/main/default/flexipages/GIFter_UtilityBar.flexipage-meta.xml Add GIFter PermissionSet force-app/main/default/permissionsets/GIFter.permissionset-meta.xml Add GiphyMedia0 RemoteSiteSetting force-app/main/default/remoteSiteSettings/GiphyMedia0.remoteSite-meta.xml Add GiphyMedia1 RemoteSiteSetting force-app/main/default/remoteSiteSettings/GiphyMedia1.remoteSite-meta.xml Add GIPHY StaticResource force-app/main/default/staticresources/GIPHY.resource Add GIPHY StaticResource force-app/main/default/staticresources/GIPHY.resource-meta.xml Add jquery331 StaticResource force-app/main/default/staticresources/jquery331.js Add jquery331 StaticResource force-app/main/default/staticresources/jquery331.resource-meta.xml Add GIFter CustomTab force-app/main/default/tabs/GIFter.tab-meta.xml
ソースの中に、構築する GIFter アプリケーションへのアクセス権を管理するために使用する権限セットがあります (GIFter という名前です)。
- 組織のデフォルトユーザをこの権限セットに割り当てます。
sfdx force:user:permset:assign -n GIFter
=== Permsets Assigned USERNAME PERMISSION SET ASSIGNMENT ───────────────────────────── ───────────────────────── test-ou0arkv1qbow@example.com GIFter
- では、アプリケーションを開いて試してみましょう。
組織を開いてアプリケーションランチャーから GIFter を参照することもできますが、ここではさらに 1 歩進んで、GIFter を直接開いてみます。sfdx force:org:open -p lightning/n/GIFter
[GIPHY Search Terms (GIPHY 検索語)] に「funny animals (面白い動物)」と入力した場合、表示は次のようになります。 - アプリケーションを試してみましょう。お楽しみください。
これで、アプリケーションが期待どおりに機能することを確認できました。次に、パッケージを作成しましょう。
ロック解除済みパッケージの作成
パッケージには 2 つの部分があります。1 つはパッケージで、もう 1 つはパッケージバージョンです。
パッケージは、実際に何を作成するかを示すマニフェストで、パッケージバージョンは、ある時点で構築およびインストールしている内容に関するメタデータとコードのスナップショットです。
そのため、最初のステップは、パッケージを作成し、名前や説明など、変更される可能性の低い情報を指定することです。さらに、作成するパッケージの種類も選択します。この場合は、ロック解除済みパッケージです。
- 任意のテキストエディタ で
sfdx-project.json
を開きます。
GIFter は、いつでも変更できるオープンソースのプロジェクトです。この手順を確実に完了させるために、開始時のプロジェクトファイルを次のようなものにします。{ "packageDirectories": [ { "path": "force-app", "default": true } ], "namespace": "", "sfdcLoginUrl": "https://login.salesforce.com", "sourceApiVersion": "50.0" }
- 必要に応じて、
id
、versionName
、versionNumber
など既存のパラメータをいくつか削除します。Salesforce CLI のバージョンと一致するようにsourceApiVersion
を更新します。忘れずに保存しましょう。
- パッケージを作成します。
sfdx force:package:create -n GIFter -d "Using GIPHY to find GIFs and post to Chatter" -r force-app -t Unlocked -v DevHub
パラメータでは次の重要な情報を指定します。-
-n
はパッケージ名。この名前は別名で、後続のパッケージ化コマンドを実行するときに使用できます。 -
-r
は、パッケージのコンテンツが含まれるディレクトリです。 -
-t
は、パッケージの種類で、この場合は、Unlocked (パッケージ解除済み) です。
-
これで、パッケージの別名 (GIFter) がパッケージ ID (0Ho) に関連付けられます。
=== Ids NAME VALUE ───────────────────── ────────────────── Package Id 0Hoxxx
パッケージの定義が完了したので、パッケージの特定のバージョンを作成できます。このパッケージバージョンは、さまざまな組織にインストールされるアイテムです。アプリケーションを更新するときには、更新されたソースを含む新しいパッケージバージョンを作成します。
-
Sfdx-project.json
ファイルを開きます。package:create
コマンドを実行すると、重要な詳細が追加されてプロジェクトファイルが更新されます。packageDirectories
に、定義したパッケージ名が表示されますが、バージョン名とバージョン番号はプレースホルダになっています。また、このコマンドによってpackageAliases
セクションが作成され、パッケージ名 (別名) がその関連するパッケージ ID (0Ho) に対応付けられます。{ "packageDirectories": [ { "path": "force-app", "default": true, "package": "GIFter", "versionName": "ver 0.1", "versionNumber": "0.1.0.NEXT" } ], "namespace": "", "sfdcLoginUrl": "https://login.salesforce.com", "sourceApiVersion": "50.0", "packageAliases": { "GIFter": "0Hoxxx" } }
versionName
は自由に設定できます。作成する新しいバージョンごとに変更しなくてもかまいません。さらに重要なのは、versionNumber
が NEXT キーワードの使用に基づいて自動的に増分されることです。残りの部分はそのままにしておくことができます。
- GIFter の最初のバージョンをリリースする準備ができているとします。
versionName
とversionNumber
を更新します。"versionName": "Summer '20", "versionNumber": "1.0.0.NEXT"
-
sfdx-project.json
を保存します。
- この情報セットを使用して、最初のパッケージバージョンを作成します。
sfdx force:package:version:create -p GIFter -d force-app -k test1234 --wait 10 -v DevHub
-
-p
は、パッケージ ID (0Ho) に対応付けられるパッケージの別名です。 - -
d
は、パッケージのコンテンツが含まれるディレクトリです。 -
-k
は、不正にインストールされないようにパッケージを保護するインストールキーです。
-
Successfully created the package version [08cxxx]. Subscriber Package Version Id: 04txxx. Package Installation URL: https://login.salesforce.com/packaging/installPackage.apexp?p0=04txxx As an alternative, you can use the "sfdx force:package:install" command.
これで、このパッケージを別の組織にインストールする準備が整いました。
スクラッチ組織でのパッケージバージョンのインストールとテスト
TP (または、実際の場合は Sandbox や本番組織) にパッケージをインストールする前に、常にまず、新しく作成したスクラッチ組織でテストすることをお勧めします。そこで、以前に実行したいくつかのステップを繰り返しましょう。ただし今回は、直前に作成したパッケージバージョンを使用してアプリケーションをスクラッチ組織にインストールします。
- スクラッチ組織を作成します。
sfdx force:org:create -s -f config/project-scratch-def.json
- パッケージバージョンの別名を使用してパッケージをスクラッチ組織にインストールします。
sfdx force:package:install --wait 10 --publishwait 10 --package GIFter@1.0.0-1 -k test1234 --noprompt
この操作には少し時間がかかることがあります。完了すると、次のメッセージが表示されます。Successfully installed package [04t_xxx]
以前に使用したforce:source:push
コマンドの代わりに install コマンドを効果的に使用することができました。
- 権限セットを割り当てます。
sfdx force:user:permset:assign -n GIFter
- 次に、スクラッチ組織を開いて、期待どおりに動作するかを確認しましょう。
sfdx force:org:open -p lightning/n/GIFter
アプリケーションは期待どおりに動作しました。[Setup (設定)] に移動して [Installed Packages (インストール済みパッケージ)] を選択すると、GIFter パッケージがインストールされていることを確認できます。
![[Installed Packages (インストール済みパッケージ)] ダイアログでインストール済みパッケージを確認できます。GIFter がリストされ、バージョン番号とインストール日時も表示されています。](https://res.cloudinary.com/hy4kyit2a/f_auto,fl_lossy,q_70/learn/projects/quick-start-unlocked-packages/create-test-and-deploy-your-unlocked-package/images/ja-JP/dcc64a0aa6bf1d7d364dba2f0d8552e9_installed-packages.png)
いいですね! いよいよ、Trailhead Playground にインストールします。
Trailhead Playground (TP) へのパッケージバージョンのインストール
当然ですが、TP にパッケージバージョンをインストールする場合も、同じコマンドをいくつか使用します。ただし、スクラッチ組織とは異なり、TP はすでに存在しているため、作成するステップはありません。
- パッケージをインストールします。今回は TP を対象とします。
sfdx force:package:install -u MyTP --wait 10 --package GIFter@1.0.0-1 -k test1234 --noprompt
- 完了したら、権限セットを割り当てます。
sfdx force:user:permset:assign -n GIFter -u MyTP
- 最後に、組織を開いてアプリケーションを実行します。
sfdx force:org:open -p lightning/n/GIFter -u MyTP
ロック解除済みパッケージを使用したアプリケーションの作成、テスト、リリースに成功しました。素晴らしいですね。
設定の確認は行いません。[Verify Step (ステップを確認)] をクリックして、プロジェクトの次のステップへ進んでください。