AppExchange アプリケーションのパッケージ化
この単元を完了すると、次のことができるようになります。
- 名前空間の主な特長を挙げる。
- AppExchange パートナー向けの「管理-リリース済み」パッケージの利点を説明する。
- 「管理-ベータ」パッケージをインストールした場合、「管理-リリース済み」パッケージをインストールした場合の影響についてそれぞれ説明する。
パッケージとは、アプリケーションを顧客に配布するために使用するコンポーネント (Java JAR ファイルや Ruby GEM など) のコンテナで、一意の名前空間が指定された一連のメタデータが含まれます。パッケージには、個々のコンポーネントのような小さなものから、一連の関連アプリケーションといった大きなものまで格納できます。
Salesforce プラットフォームでは本質的に、設計を漸進的にテストして、随時適応させていくアジャイルな開発モデルが推奨されます。「管理-ベータ」パッケージは、こうしたテスト & 変更アプローチをサポートします。
「管理-リリース済み」パッケージは、稼働中の製品に使用します。顧客は、アプリケーション上に構築したビジネスプロセスを中断することなく、時間と共に進化する安定したアプリケーションを望んでいます。「管理-リリース済み」パッケージにより、顧客のカスタマイズを破損することなく、アプリケーションに付属する知的財産を保護できます。
「管理-リリース済み」パッケージは次のものを備えています。
- Apex の知的財産の保護
- API アクセスが可能なコンポーネントの組み込みのバージョン管理サポート
- 前のバージョンを分岐およびパッチする機能
- 登録者にパッチやメジャー更新をシームレスに転送する機能
- インストールで競合が発生しないようにすべてのコンポーネントに一意の名前を指定
- ライセンスごとに登録者のアクセスを制御する機能
アプリケーションのパッケージ化および配布のライフサイクルを見てみましょう。
- アプリケーションのバージョン 1 を「管理-リリース済み」パッケージで公開します。
- 顧客がパッケージをインストールします。
- 顧客がアプリケーションをカスタマイズします。
- アプリケーションのバージョン 2 を「管理-リリース済み」パッケージで公開します。
- 顧客が既存のパッケージ上にパッケージの新しいバージョンをインストールします。
「管理-リリース済み」パッケージは、顧客が既存のバージョン上に新しいバージョンをインストールできるため、アップグレード可能ということになります。未管理パッケージ (通常、パートナーが使用することはありません) や「管理-ベータ」パッケージはアップグレードできません。
Salesforce プラットフォームは詳細なカスタマイズが可能で、多くの場合、顧客がアプリケーションをカスタマイズしています。新しいバージョンがリリースされるときに顧客にとって重要なことは、アプリケーションに一定の一貫性があり、各自のカスタマイズが破損されないことです。
「管理-リリース済み」パッケージは、新しいバージョンの影響を最小眼に抑える安全策がとられています。たとえば、顧客またはオブジェクトが使用可能になっている Apex メソッドは削除できません。詳細は、『ISVforce ガイド』の「管理パッケージで使用可能なコンポーネント」セクションを参照してください。
ここでは当社のルールを破り、パッケージを作成するものと同じ組織でシンプルなアプリケーションを設定します。パッケージを作成できるのは、Partner Developer Edition (PDE) 組織と Developer Edition 組織のみです。ですから、前回の単元で作成した PDE 組織を使用します。
パッケージ化を実際に行うために、ごくごくシンプルなアプリケーションを順を追って作成していきます。ここでは、カスタムオブジェクトを表示する 1 ページのアプリケーションを作成します。
- [設定] メニューに移動します。
- Lightning Platform ホームページで、[アプリケーションを追加する] をクリックします。
- [アプリケーションのクイックスタート] ページに、次のとおり入力します。
項目 値 アプリケーション Trail Tracker 表示ラベル トレイル 表示ラベル (複数形) トレイル
- [Create (作成)] をクリックします。
- [私のアプリケーションに移動] をクリックします。
これで完成です。このアプリケーションを試してみましょう。
- [新規] をクリックします。
- [トレイル名] に、「AppExchange パートナーの基本」と入力します。
- [保存] をクリックします。
アプリケーションでレコードを作成しました。とても簡単です。
すべての AppExchange アプリケーションおよび一部の OEM (組み込み) アプリケーションについては、顧客が既存の組織にアプリケーションをインストールしてカスタマイズしています。次のシナリオについて考えます。
- 顧客が Vendor__c という API 参照名のカスタムオブジェクトを作成しています。
- アプリケーションにも Vendor__c という API 参照名のカスタムオブジェクトがあります。
このアプリケーションをインストールすると、顧客のオブジェクトが上書きされるのでしょうか? そんなことはありません。この窮地を救ってくれるのが名前空間です。
競合を回避するために、管理パッケージには必ず名前空間が指定されます。名前空間は Salesforce 全体で一意のため、管理パッケージをインストールしたときに、顧客や他のパートナーが行ったカスタマイズと競合することがありません。
開発組織には名前空間を 1 つだけ設定できます。その名前空間を使用して作成できるパッケージは 1 つのみですが、そのパッケージを更新して新しいバージョンをリリースできます。
組織で名前空間を作成すると、その組織内の各コンポーネントに名前空間が追加されます。その組織でパッケージを作成する場合は、パッケージに追加する各コンポーネントにも名前空間が指定されます。次のカスタムオブジェクトには、(1) 組織に TrailApp_Test1 という名前空間があること、および (2) Trail (トレイル) オブジェクトの API 参照名が TrailApp_Test1__Trail__c であることが示されています。
ただし、名前空間を追加しても、オブジェクトや項目への参照がある、Salesforce 以外のアイテム (JavaScript など) は更新されません。これらの参照は自身で更新する必要があります。
名前空間は一意のため、まず、一番大切なパッケージ組織の名前空間を選択します。顧客に表示されるのは、AppExchange にアップロードするパッケージに使用する名前空間です。会社名が AW Computing ならば、名前空間を awc や awcomputing などとするとよいでしょう。
この名前空間をベータパッケージ組織で使用しないでください。一番大切なパッケージ組織で使用できなくなります。
名前空間を作成して、アプリケーションをパッケージ化できるようにします。
- [設定] から、[クイック検索] ボックスに「パッケージ」と入力し、[パッケージ] をクリックします。
- ページの [開発者設定] セクションで、[編集] を選択します。
- 名前空間を設定する場合は、[次へ] をクリックします。
- [名前空間プレフィックス] に値を入力します。後々使用するつもりの名前はここに入力しないでください。
- [使用可能か調べる] をクリックします。使用可能な名前空間が見つかるまでステップ 4 ~ 5 を繰り返します。
- [選択内容の確認] をクリックします。
- [保存] をクリックします。
「管理-リリース済み」パッケージが、アプリケーションの販売や配布には最適ながら、テストには不向きな理由は、特定のコンポーネントを管理パッケージに追加した後に変更できないためです。たとえば、アプリケーションを開発中に、Larry、Curly、Moe、John という 4 つのカスタムオブジェクトを作成するとします。アプリケーションをテストする段階になって John は不要だと判断します。けれども、John オブジェクトも「管理-リリース済み」パッケージに含まれているため、削除できません。
この問題を回避するために、「管理-ベータ」パッケージが用意されています。ベータパッケージのコンポーネントは、「管理-リリース済み」パッケージが作成されるまで、パッケージ組織で編集できます。
続いて、「管理-ベータ」パッケージを作成する手順に進みます。
- パッケージページが表示されていない場合は、[設定] から、[クイック検索] ボックスに「パッケージ」と入力し、[パッケージ] をクリックします。
- [パッケージ] セクションで、[新規] をクリックします。
- [パッケージ名] に「Trail App (トレイルアプリケーション)」と入力します。
- [管理済み] チェックボックスをオンにしてこのオプションを有効にします。確認メッセージが表示されたら、[OK] をクリックします。
- [保存] をクリックします。
- [コンポーネント] サブタブで、[追加] をクリックします。
- [Trail Tracker] アプリケーションを選択して、[パッケージに追加] をクリックします。パッケージにいくつかの依存コンポーネントが追加されました。
- [パッケージリストに戻る] をクリックします。
ここで必要な「管理-ベータ」パッケージがデフォルトで作成されます。
ベータバージョンはメジャーリリースとみなされないため、パッケージのバージョン番号は変わりません。
パッケージを別の組織にインストールする準備ができたら、アップロードします。
- パッケージのリストのパッケージ名をクリックします。
- [アップロード] をクリックします。
- [パッケージの詳細] セクションに次のとおり入力します。
項目 値 バージョン名 Trail App Test 1 説明 「AppExchange パートナーとしてのアプリケーションの作成」トレイルの進行中に作成した簡単なアプリケーションのベータパッケージ。
-
[アップロード] をクリックします。アップロードが正常に完了すると、インストール URL を記したメッセージが表示されます。
- パッケージのインストールに使用するインストール URL をコピーします。
- 組織からログアウトします。
- インストール URL をブラウザに貼り付けます。
- 表示されたログインページに、単元 2 で作成した Trailhead Test 組織のログイン情報を入力します。
- 表示されたページで、[インストール] をクリックします。
- [完了] をクリックします。
- アプリケーションメニューからアプリケーションを選択して、インストールされていることを確認します。
これでパッケージの基本を理解することができました。
- パッケージは Partner Developer Edition 組織または Developer Edition 組織で作成する必要があります。
- パッケージを作成する場合は一意の名前空間を選択します。
- テスト組織で望ましい名前空間を使い切ってしまわないようにします。後で後悔することになります。
- テストサイクル中は、内容を簡単に変更できる「管理-ベータ」パッケージを使用します。
- 「管理-リリース済み」パッケージは最終テストにのみ使用します。
おめでとうございます。開発サイクルで「管理-ベータ」パッケージを使用するためのスキルをすべて習得することができました。後は練習を重ねていくのみです。