[2020年版8月版]おすすめのAppExchangeアプリ開発方法〜概要編〜

弊社では自社でもAppExchangeアプリの開発を行い、顧問Salesforceプログラマとして他社のAppExchangeアプリの開発のお手伝いもしております。
Trailheadに記載されているAppExchangeアプリ開発手順が古くあまりおすすめできる方法ではないので、2020年8月現在1弊社としておすすめする開発方法を説明します。

ただし、以下の手順ではまだ第一世代パッケージを使用しています。第二世代パッケージで転送アップグレードが可能になると第二世代パッケージの利用がおすすめになると思います。2

Trailhead記載の開発方法

Trailhead(AppExchange 開発環境について 単元 | Salesforce Trailhead)を見ると以下のような手順で開発をするように書かれています。

  1. 開発組織(PDE)を開発者の数だけ作成し各自開発
  2. ベータパッケージ組織にデプロイしてベータパッケージを作成
  3. ゴールデンパッケージ組織にデプロイしてリリース済みパッケージを作成
  4. テスト組織にパッケージをインストールしてテスト
  5. AppExchangeにパッケージを公開

しかし、私はこの手順はおすすめしません。

なぜこの手順をおすすめしないのか

AppExchangeパッケージの開発ではユニークな名前空間の設定が必須になります。これは同じ名前のリソースがインストール先組織にあったときに衝突を防ぐ目的です。例えば、インストール先組織にもパッケージにも Employee__c というオブジェクトがあったときに、それらが区別できるようにパッケージのオブジェクトは mynamespace__Employee__c が正式なAPI参照名になります。

しかし、上記の開発手順ではゴールデンパッケージ組織以外は名前空間が設定されていません。開発組織もベータパッケージ組織も名前空間が設定されていません(もしくはリリース時とは別の名前空間を設定することはできます)。3

確かにパッケージ開発のほとんどの場面で名前空間は省略できます(例えば、管理パッケージ内のApexでは Employee__c と書くと mynamespace__Employee__c を指します。)。しかし、開発していると名前空間をコードに記述する必要があるケースはそれなりに発生してきますので、この方法で開発をしているとその状況が発生したときに非常に困ります。

おすすめの開発手順

Salesforce DX(SFDX)がリリースされ数年経ち、機能も拡張され、今ではこれに変わるもっとスマートな開発ができるようになっています。

概要

概念図を書くと以下のようになります。 auth:web:login などはSFDXのコマンドです。
Trailheadの方法との大きな違いは、「開発に名前空間のついたスクラッチ組織を使う」ことです。

簡単に登場する用語について解説しておきます。

パートナービジネス組織(DevHub)
  • PBO(Partner Business Org)と呼ばれる。
  • AppExchangeパートナーになると2ライセンスもらうことができます。
  • LMA、COAなどの機能はこの組織で利用しますが、その辺りの機能については本記事では言及しません。
  • AppExchangeでアプリをインストールしたユーザの情報は自動的にこの組織のリードに入ってきます。そのため自社で既にSalesCloudを利用している場合は、その組織をPBOにするのがお勧めです。
  • 開発の際はこの組織をDevHub(開発者ハブ)として使用します。
スクラッチ組織
  • Salesforce DXで新たに登場した使い捨て(最大30日間)の組織です。
  • 各開発者はスクラッチ組織を作成して、その組織上で開発を行います。
  • パッケージ開発組織と同じ名前空間を設定することができます。
パッケージ開発組織
  • Trailheadで言うゴールデンパッケージ組織。
  • PBOで環境ハブを使ってPartner Developer Editionとして作成する。
  • 第一世代パッケージ管理ではパッケージの作成はこの組織の役割。
  • 顧客組織への転送アップグレードもこの組織の役割。
テスト組織
  • パッケージをインストールして動作確認するための組織。
  • PBOの環境ハブで作成してもいいし、スクラッチ組織でも良い。
顧客組織
  • AppExchangeアプリの利用ユーザの組織。
  • ドキュメントでは登録者組織(Subscriber Org)と呼ばれている。

事前準備

この開発方法を行うためには以下の事前準備を行う必要があります。詳細な手順は別記事で解説します。

  • PBOでDevHubを有効化
  • 開発者にDevHubが利用可能なPBOのアカウントを発行
  • PBOの環境ハブでパッケージ開発組織として使用するPartner Developer Editionの組織を作成
  • パッケージ開発組織で名前空間を設定
  • パッケージ開発組織の名前空間をDevHubにリンク

開発の流れ

事前準備を行うと以下の流れでAppExchangeアプリ開発を行うことができます。
上の図を見ながらお読みください。図の番号と対応しています。

① DevHub組織にログインし、名前空間付きスクラッチ組織を作成
② 各開発者はソースコードリポジトリとコードを同期しながらスクラッチ組織を使って開発
③ パッケージ開発組織にコードをデプロイ
④ パッケージ開発組織でパッケージを作成
⑤ テスト組織にパッケージをインストール
⑥ AppExchangeにパッケージを公開
⑦ 顧客がAppExchangeから自組織にパッケージをインストール

③〜⑤はCIで自動化することもできます。

終わりに

以上がおすすめのAppExchangeアプリ開発方法の概要になります。
詳細な手順については別記事で書いていこうと思いますので、またそちらもご覧ください。


  1. 公開当初は2020年7月現在と書いていましたが、続編記事が8月の公開となり、8月現在でもおすすめの方法に変更はありませんので、2020/08/22に2020年8月現在に修正しました。アイキャッチも合わせて変更しました。

  2. 第二世代パッケージの転送アップグレードはSummer ’20でベータリリースされました。ロック解除済みの第二世代管理パッケージへのアップグレードのスケジュールおよび転送 (ベータ) 

  3. かつてブランチ組織という機能がこの問題を解決していたのですが、Pilotのまま終了しました。

ABOUT US
木村篤彦
株式会社co-meeting代表取締役CEO。カレンダーアプリ「Calsket」のなど複数のAppExchangeアプリを開発。顧問Salesforceプログラマとして他社のAppExchangeアプリ開発にも携わる。SWTT登壇3回、Salesforceハックチャレンジ2014最優秀賞。個人では5月にSOQL構築ツール「LWC SOQL Builder」をリリース(ぜひ使ってください)。