Skip to main content

ロック解除済みパッケージの作成、テスト、リリース

メモ

メモ

日本語で受講されている方へ
このバッジの Trailhead ハンズオン Challenge は英語で受講していただく必要があります。英語の意味についてはかっこ内の翻訳をご参照ください。Trailhead Playground では (1) [Locale (地域)] を [United States (米国)] に、[Language (言語)] を [English (英語)] に切り替えて、(2) 英語の値のみをコピーして貼り付けてください。こちらの指示に従ってください。

翻訳版 Trailhead を活用する方法の詳細は、自分の言語の Trailhead バッジを参照してください。

スクラッチ組織でのプロジェクトの構築とテスト

他の Salesforce DX プロジェクトと同様に、まず自分のスクラッチ組織で作業を開始します。対象の環境でパッケージを構築してインストールする前に、アプリケーションを実行してテストできます。

  1. GIFter ディレクトリにいることを確認します。
    GIFter プロジェクトには、そのまま使用できるスクラッチ組織設定ファイルが用意されています。
  2. まだ Dev Hub 組織に接続していない場合は、Dev Hub 組織にログインします。
    sf org login web --set-default-dev-hub --alias DevHub
  3. スクラッチ組織を作成します。
    sf org create scratch --set-default --definition-file config/project-scratch-def.json
    次のような応答が表示されます。
    Your scratch org is ready.
    これで、使用可能なスクラッチ組織が作成され、プロジェクトワークスペースのデフォルトとして設定されました。
  4. 次に、force-app フォルダーから新しく作成したスクラッチ組織にすべてのソースをリリースします。
    sf project deploy start
    組織にリリースされたすべてのソースのリストが表示されます。
    === 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    jquery360                             StaticResource        force-app/main/default/staticresources/jquery360.js
    Add    jquery360                             StaticResource        force-app/main/default/staticresources/jquery360.resource-meta.xml
    Add    GIFter                                CustomTab             force-app/main/default/tabs/GIFter.tab-meta.xml
    ソースの中に、構築する GIFter アプリケーションへのアクセス権を管理するために使用する権限セットがあります (GIFter という名前です)。
  5. 組織のデフォルトユーザーをこの権限セットに割り当てます。
    sf org assign permset --name GIFter
    === Permsets Assigned
    USERNAME                       PERMISSION SET ASSIGNMENT
    ─────────────────────────────  ─────────────────────────
    test-ou0arkv1qbow@example.com  GIFter
  6. では、アプリケーションを開いて試してみましょう。

    組織を開いてアプリケーションランチャーから GIFter を参照することもできますが、ここではさらに 1 歩進んで、GIFter を直接開いてみます。
    sf org open --path lightning/n/GIFter
    [GIPHY Search Terms (GIPHY 検索語)] に「funny animals (面白い動物)」と入力した場合、表示は次のようになります。[GIPHY Search Terms (GIPHY 検索語)] ウィンドウでは、キーワードに基づいてアニメーション GIF を検索できます。[Search Terms (検索語)] に検索語を入力すると、条件に一致する画像が表示されます。
  7. アプリケーションを試してみましょう。お楽しみください。

これで、アプリケーションが期待どおりに機能することを確認できました。次に、パッケージを作成しましょう。

ロック解除済みパッケージの作成

パッケージには 2 つの部分があります。1 つはパッケージで、もう 1 つはパッケージバージョンです。

パッケージは、実際に何を作成するかを示すマニフェストで、パッケージバージョンは、ある時点で構築およびインストールしている内容に関するメタデータとコードのスナップショットです。

そのため、最初のステップは、パッケージを作成し、名前や説明など、変更される可能性の低い情報を指定することです。さらに、作成するパッケージの種類も選択します。この場合は、ロック解除済みパッケージです。

  1. 任意のテキストエディター でsfdx-project.json を開きます。

    GIFter は、いつでも変更できるオープンソースのプロジェクトです。この手順を確実に完了させるために、開始時のプロジェクトファイルを次のようなものにします。
    {
      "packageDirectories": [
        {
          "path": "force-app",
          "default": true
        }
      ],
      "namespace": "",
      "sfdcLoginUrl": "https://login.salesforce.com",
      "sourceApiVersion": "55.0"
    }
  2. 必要に応じて、idversionNameversionNumber など既存のパラメーターをいくつか削除します。Salesforce CLI のバージョンと一致するように sourceApiVersion を更新します。忘れずに保存しましょう。

  3. パッケージを作成します。
    sf package create --name GIFter --description "Using GIPHY to find GIFs and post to Chatter" --path force-app --package-type Unlocked --target-dev-hub DevHub

これで、パッケージの別名 (GIFter) がパッケージ ID (0Ho) に関連付けられます。

=== Ids
NAME                  VALUE
───────────────────── ──────────────────
Package Id           0Hoxxx

 パッケージの別名またはパッケージ ID を忘れても、sf package list を実行すれば、Dev Hub で作成したすべてのパッケージをリストできます。

パッケージバージョンの作成

パッケージの定義が完了したので、パッケージの特定のバージョンを作成できます。このパッケージバージョンは、さまざまな組織にインストールされるアイテムです。アプリケーションを更新するときには、更新されたソースを含む新しいパッケージバージョンを作成します。

重要: このプロジェクトでは、パッケージバージョンのワークフローを説明しています。コマンドラインの例をコピーして貼り付ける場合は、固有の情報に置き換えてハンズオン Challenge を完了してください。

  1. sfdx-project.json ファイルを開きます。
    sf 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": "55.0",
       "packageAliases": {
          "GIFter": "0Hoxxx"
       }
    }
    versionName は自由に設定できます。作成する新しいバージョンごとに変更しなくてもかまいません。さらに重要なのは、versionNumber が NEXT キーワードの使用に基づいて自動的に増分されることです。残りの部分はそのままにしておくことができます。
  2. GIFter の最初のバージョンをリリースする準備ができているとします。
    versionNameversionNumber を更新します。
    "versionName": "Summer '22",
    "versionNumber": "1.0.0.NEXT"
  3. sfdx-project.json を保存します。
  4. この情報セットを使用して、最初のパッケージバージョンを作成します。
    sf package version create --package GIFter --path force-app --installation-key test1234 --wait 10 --target-hub-org DevHub
この操作には、数分かかる場合があります。完了すると、このパッケージバージョンを組織にインストールするのに必要な情報が表示されます。出力には次の情報が含まれます。
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 "sf package install" command.

これで、このパッケージを別の組織にインストールする準備が整いました。

スクラッチ組織でのパッケージバージョンのインストールとテスト

TP (または、実際の場合は Sandbox や本番組織) にパッケージをインストールする前に、常にまず、新しく作成したスクラッチ組織でテストすることをお勧めします。そこで、以前に実行したいくつかのステップを繰り返しましょう。ただし今回は、直前に作成したパッケージバージョンを使用してアプリケーションをスクラッチ組織にインストールします。

  1. スクラッチ組織を作成します。
    sf org create scratch --set-default --definition-file config/project-scratch-def.json
  2. パッケージバージョンの別名を使用してパッケージをスクラッチ組織にインストールします。
    sf package install --wait 10 --publish-wait 10 --package GIFter@1.0.0-1 --installation-key test1234 --no-prompt
    この操作には少し時間がかかることがあります。完了すると、次のメッセージが表示されます。
    Successfully installed package [04t_xxx]
    以前に使用した project deploy start コマンドの代わりに install コマンドを効果的に使用することができました。
  3. 権限セットを割り当てます。
    sf org assign permset --name GIFter
  4. 次に、スクラッチ組織を開いて、期待どおりに動作するかを確認しましょう。
    sf org open --path lightning/n/GIFter

アプリケーションは期待どおりに動作しました。[Setup (設定)] に移動して [Installed Packages (インストール済みパッケージ)] を選択すると、GIFter パッケージがインストールされていることを確認できます。

[Installed Packages (インストール済みパッケージ)] ダイアログでインストール済みパッケージを確認できます。GIFter がリストされ、バージョン番号とインストール日時も表示されています。

いいですね! いよいよ、Trailhead Playground にインストールします。

Trailhead Playground (TP) へのパッケージバージョンのインストール

当然ですが、TP にパッケージバージョンをインストールする場合も、同じコマンドをいくつか使用します。ただし、スクラッチ組織とは異なり、TP はすでに存在しているため、作成するステップはありません。

  1. パッケージをインストールします。今回は TP を対象とします。
    sf package install --target-org MyTP --wait 10 --package GIFter@1.0.0-1 --installation-key test1234 --no-prompt
  2. 完了したら、権限セットを割り当てます。
    sf org assign permset --name GIFter --target-org MyTP
  3. 最後に、組織を開いてアプリケーションを実行します。
    sf org open --path lightning/n/GIFter --target-org MyTP

ロック解除済みパッケージを使用したアプリケーションの作成、テスト、リリースに成功しました。素晴らしいですね。

設定の確認は行いません。[Verify Step (ステップを確認)] をクリックして、プロジェクトの次のステップへ進んでください。

無料で学習を続けましょう!
続けるにはアカウントにサインアップしてください。
サインアップすると次のような機能が利用できるようになります。
  • 各自のキャリア目標に合わせてパーソナライズされたおすすめが表示される
  • ハンズオン Challenge やテストでスキルを練習できる
  • 進捗状況を追跡して上司と共有できる
  • メンターやキャリアチャンスと繋がることができる