チームスピリットデベロッパーブログ

チームスピリット開発者のブログ

Salesforce Webinar 「Salesforce DX の始め方とパートナー様成功事例」(後編)

こんにちは、倉谷(id:a-kura)です。

「Salesforce DX の始め方とパートナー様成功事例」の発表内容を紹介した前編に引き続き、そこで挙がった課題に対して解決できた「DevHub移行」について紹介します。

teamspirit.hatenablog.com

DevHub の移行

当時の課題として、DevHub を開発者組織からプロダクション組織に移行することが残っていました。 ここでは、自社組織 PBO (Partner Business Org)の DevHub に移行したので、その際に検討した点や注意点についてまとめておきます。

検討事項:PBO とすべきか?それとも別の組織とすべきか?

当初、PBO (Partner Buisiness Org) では管理権限の問題で利用制限がかかったりする可能性があると考えて、別組織を購入しようと考えていました。 しかし、セールスフォース・ドットコム社とやりとりをする中で、PBO を利用する決断をしました。その決断をした経緯について、少しふりかえってみたいと思います。

PBO を利用する場合のメリット、デメリットを下記のように考えました。

メリット

PBO を利用した場合のメリットは、スクラッチ組織の作成数が増える、SalesforceDX用無償ライセンスが提供される、などのパートナー特典が受けられる点です。詳細はこちら。

developer.salesforce.com

デメリット

PBO を利用した場合のデメリットは、現行業務に影響を与えたり、制限を受けたりする可能性がある点です。PBO では内部統制上の問題もあるので、システム管理者権限は利用できません。この制限により DevHub の運用が滞るリスクがあります。

PBO の DevHub を利用することにした理由

セールスフォース・ドットコム社とのやりとりで、今後の機能拡張によって PBO の DevHub を利用する必要があることがわかりました。第2世代管理パッケージでは、一つの名前空間で複数のパッケージが作成できるようになったり、名前空間を持つ Scratch Org を作成できたりします。そのため、PBO と DevHub の関係が密接になってくるため、依存関係が出てくるようです。

このことが決め手となり、PBO を DevHub として利用することにしました。

PBO を DevHub として利用するために実施したこと

基本的には、こちらのページに記載してある内容で設定していきました。

developer.salesforce.com

組織の DevHub 有効化

情報システム担当の方に PBO に影響がないことを説明して、DevHub を有効化しました。 実際に業務が稼働しているので、影響を与えず利用できることが重要になります。

f:id:a-kura:20191128144538p:plain

Free Limited Access ライセンス取得&専用アカウント作成

CircleCI から接続するために専用のアカウントを作成します。そのライセンスとして無償提供される Free Limited Access ライセンスを利用しました。自動テストの実行などに利用するだけなので無償ライセンスがあるのは非常に助かります。

このライセンスは Partner Community からケースで依頼します。ライセンスの期限が短く設定されていますが、自動的に延長されるため問題ないそうです。ライセンス取得後、プロファイルを手順に沿って作成しました。

接続アプリケーション作成

CircleCI から JWT (JSON Web Token)で接続するために接続アプリケーションを作成しました。

手順通りに進めればよいですが、証明書の作成や秘密鍵の管理が必要になる、など黒い画面(コンソール)を使った対応が必要なため、情報システム担当の方と協力しながら進める必要がありました。

権限付与

こちらも手順通りに進めれば、問題ありませんでした。
設定する項目は多くなく、「API の有効化」とスクラッチ組織に関係するオブジェクトの操作権限を設定します。どのように設定すればよいか手順に書いてあるのでほぼ迷うことはないと思います。

制限事項

上記の設定で、Salesforce DX CLI を利用してスクラッチ組織を使った開発を行うことができるようになります。しかし、一つ制限があることを見つけました。

見つけた制限とは、スクラッチ組織の Limits を参照するコマンドが実行するには追加の権限が必要だとわかりました。

スクラッチ組織の1日の作成数と上限数、アクティブなスクラッチ組織の数と上限数を参照するために、force:limits:api:display を実行したかったのですが、別途「設定・定義の参照 (View Setup and Configuration)」の権限がないとコマンドを実行してもエラーとなってしまいます。

エラーメッセージは下記のものが出力されます。

API_DISABLED_FOR_ORG: limits resource is not enabled
Error: limits resource is not enabled at Object.exports.exitWithMessage(...)

PBO にあるユーザーなので与える権限は最小限にしたいため、弊社ではスクラッチ組織の作成数と上限数を参照することを諦めることにしました。

おわりに

後編では DevHub 移行について体験談を書きました。
ほぼ Salesforce DX 開発者ガイドに書いてある内容で問題ありませんでしたが、スクラッチ組織の作成上限を取得するためには別途権限が必要でした。フル機能で利用したい、継続的インテグレーションでスクラッチ組織の上限が近いときに警告を出したい、などの場合は PBO で権限を付与してもらえるか注意が必要です。

以上、DevHub を PBO に移行しようとする方はご参考にしていただければと思います。

エンジニア募集♪

チームスピリットでは、アジャイルなプロダクト開発を共に推進してくれるエンジニアを募集しています。どんな考えや想いで開発しているのか少しでも興味を持っていただいた方、ぜひご連絡ください!(直接メッセージでも、下記の応募フォームからでも構いません)

https://www.teamspirit.com/ja-jp/recruit/r_d.html

Enjoy DX!