はじめに
以前Salesforce開発していた頃、ローカル環境が汚れたのが面倒だった。 最近ハマっているVisual Studio Code(以降VSCode)のリモート開発機能の中にSalesforceがあったので、試してみた。
この記事でできるようになること
- Dockerコンテナ上に開発環境を構築し、VSCodeからリモート開発
- 開発環境からSalesforceへのデプロイ(組織開発モデル)
- 当時開発は組織開発モデルで行っていたので、そちらに準拠します。
- 尚、2021/4/14現在、BETA版とのこと
注意: リモート開発機能は現在ベータ版です。
- はじめに
- この記事でできるようになること
- 開発環境
- 前準備
- 1. VSCode: コンテナを作成
- 2. SFDXプロジェクトを作成
- 3. Salesforceへ認証
- 4. Salesforceへデプロイ
- 所感
- 公式情報
開発環境
- macOS 11.1
- Docker Desktop for Mac v3.3.0
- VSCode v1.55.1
- 拡張機能:Remote Development
- Salesforce開発モデル
- 組織開発モデル(Org Development Model)
- Salesforce環境
- TrailheadのPlaygroundを利用
前準備
ソフトウェアのインストール(インストール方法は割愛)
TrailheadでPlaygroundを作成する(作成方法は割愛)
- ハンズオン組織 > Playgroundを作成 > 起動
- Playground作成後、管理者アカウントのパスワードをリセットし、再設定する
1. VSCode: コンテナを作成
空のフォルダを準備し、VSCodeでそのフォルダを開く
- ここがルートとなる
コマンドパレット >
Remote-Containers: Add Development Container Configuration Files...
を選択Show All Definitions...
>Salesforce Project
を選択
通知メッセージの
Reopen in Container
を選択し、完成するまで待つ- フォルダ内に
.devcontainer
が作成される - VSCodeでテンプレートからSalesforceのコンテナを選択するとコンテナが作成される
- コンテナ内には、JDKやSalesforce CLI、Gitなどがインストールされている
- フォルダ内に
Salesforce CLIを更新する
$ sfdx update
2. SFDXプロジェクトを作成
VSCode内でターミナルを開く
以下のコマンドを実行
# 1階層上へ移動 $ cd .. # プロジェクト名をルートフォルダ名とし、SFDXプロジェクト作成 $ sfdx force:project:create -n <ルートフォルダ名> --manifest
補足
- VSCodeのコマンドパレットからSFDX:プロジェクトを作成することもできる(未検証)
- プロジェクトのリソースが
.devcontainer
フォルダと同階層にできないと、コンテナを再起動したときに、SFDXの拡張機能が有効にならないため、注意
(追記: 2022/12/5) 今更、ボイラープレートを作りました。 github.com
3. Salesforceへ認証
コマンドパレット >
SFDX:組織を認証
を選択- Trailheadの場合、
本番環境
を選択
- Trailheadの場合、
出力タブにワンタイムパスとログインURLが表示されるので、ブラウザでアクセス
- そのままSalesforceにログインし、Salesforce CLIのアクセスを許可
- 以下の場合、ワンタイムパスは
02WUHUVT
sfdx force:auth:device:login --setalias temp --instanceurl https://login.salesforce.com --setdefaultusername === Action Required! Enter 02WUHUVT user code in the verification URL https://login.salesforce.com/setup/connect
4. Salesforceへデプロイ
任意のソースを作成(Apexなど)
作成したソースの画面で右クリック >
SFDX:このソースを組織にデプロイ
以上!
所感
- SFDXプロジェクトの作成とログイン方法がローカルで開発していた時とことなっており、戸惑った
- リモート開発では、不要な拡張機能をローカル環境にインストールしなくていいのが素晴らしい