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

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

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

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

  1. GIFter ディレクトリにいることを確認します。

    GIFter プロジェクトには、そのままで使用できるスクラッチ組織設定ファイルが用意されています。

  2. まだ Dev Hub 組織に接続していない場合は、Dev Hub 組織にログインします。
    sfdx force:auth:web:login -d -a DevHub
  3. スクラッチ組織を作成します。
    sfdx force:org:create -s -f config/project-scratch-def.json

    次のような応答が表示されます。

    Successfully created scratch org: 00D1100000BvDK3EAN, username:
            test-ou0arkv1qbow@example.com

    これで、使用可能なスクラッチ組織が作成され、プロジェクトワークスペースのデフォルトとして設定されました。

  4. 次に、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 という名前です)。

  5. 組織のデフォルトユーザをこの権限セットに割り当てます。
    sfdx force:user:permset:assign -n GIFter
    === Permsets Assigned
    USERNAME                       PERMISSION SET ASSIGNMENT
    ─────────────────────────────  ─────────────────────────
    test-ou0arkv1qbow@example.com  GIFter
  6. では、アプリケーションを開いて試してみましょう。

    組織を開いてアプリケーションランチャーから GIFter を参照することもできますが、ここではさらに 1 歩進んで、GIFter を直接開きましょう。

    sfdx force:org:open -p 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": "43.0"
    }
  2. 必要に応じて、idversionNameversionNumber など既存のパラメータをいくつか削除します。Salesforce CLI のバージョンと一致するように sourceApiVersion を更新します。忘れずに保存しましょう。
  3. パッケージを作成します。
    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
ヒント

ヒント

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

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

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

重要

重要

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

  1. 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": "43.0",
       "packageAliases": {
          "GIFter": "0Hoxxx"
       }
    }

    versionName は自由に設定できます。作成する新しいバージョンごとに変更しなくてもかまいません。さらに重要なのは、versionNumber が NEXT キーワードの使用に基づいて自動的に増分されることです。残りの部分はそのままにしておくことができます。

  2. GIFter の最初のバージョンをリリースする準備ができているとします。

    versionNameversionNumber を更新します。

    "versionName": "Summer '18",
    "versionNumber": "1.0.0.NEXT"
  3. sfdx-project.json を保存します。
  4. この情報セットを使用して、最初のパッケージバージョンを作成します。
    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 や本番組織) にパッケージをインストールする前に、常にまず、新しく作成したスクラッチ組織でテストすることをお勧めします。そこで、以前に実行したいくつかのステップを繰り返しましょう。ただし今回は、直前に作成したパッケージバージョンを使用してアプリケーションをスクラッチ組織にインストールします。

  1. スクラッチ組織を作成します。
    sfdx force:org:create -s -f config/project-scratch-def.json
  2. パッケージバージョンの別名を使用してパッケージをスクラッチ組織にインストールします。
    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 コマンドを効果的に使用することができました。

  3. 権限セットを割り当てます。
    sfdx force:user:permset:assign -n GIFter
  4. 次に、スクラッチ組織を開いて、期待どおりに動作するかを確認しましょう。
    sfdx force:org:open -p lightning/n/GIFter

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

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

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

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

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

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

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

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