skysan's programming notebook

コーディングして思ったことなどを気ままに

VSCodeのリモート開発機能でSalesforceプロジェクト開発を試す

はじめに

以前Salesforce開発していた頃、ローカル環境が汚れたのが面倒だった。 最近ハマっているVisual Studio Code(以降VSCode)のリモート開発機能の中にSalesforceがあったので、試してみた。

この記事でできるようになること

  • Dockerコンテナ上に開発環境を構築し、VSCodeからリモート開発
  • 開発環境からSalesforceへのデプロイ(組織開発モデル)
    • 当時開発は組織開発モデルで行っていたので、そちらに準拠します。
  • 尚、2021/4/14現在、BETA版とのこと

    注意: リモート開発機能は現在ベータ版です。

開発環境

前準備

  1. ソフトウェアのインストール(インストール方法は割愛)

  2. TrailheadでPlaygroundを作成する(作成方法は割愛)

    • ハンズオン組織 > Playgroundを作成 > 起動
    • Playground作成後、管理者アカウントのパスワードをリセットし、再設定する

1. VSCode: コンテナを作成

  1. 空のフォルダを準備し、VSCodeでそのフォルダを開く

    • ここがルートとなる
  2. コマンドパレット > Remote-Containers: Add Development Container Configuration Files...を選択

    • Show All Definitions... > Salesforce Project を選択
  3. 通知メッセージのReopen in Containerを選択し、完成するまで待つ

    • フォルダ内に.devcontainerが作成される
    • VSCodeでテンプレートからSalesforceのコンテナを選択するとコンテナが作成される
    • コンテナ内には、JDKSalesforce CLI、Gitなどがインストールされている
  4. Salesforce CLIを更新する

$ sfdx update

2. SFDXプロジェクトを作成

  1. VSCode内でターミナルを開く

  2. 以下のコマンドを実行

# 1階層上へ移動
$ cd ..
# プロジェクト名をルートフォルダ名とし、SFDXプロジェクト作成
$ sfdx force:project:create -n <ルートフォルダ名> --manifest
  1. 画面左下の><マークをクリック > リモート接続を終了する
  2. VSCodeでルートフォルダを開き、Reopen in Containerを選択

補足

  • VSCodeのコマンドパレットからSFDX:プロジェクトを作成することもできる(未検証)
  • プロジェクトのリソースが.devcontainerフォルダと同階層にできないと、コンテナを再起動したときに、SFDXの拡張機能が有効にならないため、注意

(追記: 2022/12/5) 今更、ボイラープレートを作りました。 github.com

3. Salesforceへ認証

  1. コマンドパレット > SFDX:組織を認証を選択

    • Trailheadの場合、本番環境を選択
  2. 出力タブにワンタイムパスとログイン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へデプロイ

  1. 任意のソースを作成(Apexなど)

  2. 作成したソースの画面で右クリック > SFDX:このソースを組織にデプロイ

以上!

所感

  • SFDXプロジェクトの作成とログイン方法がローカルで開発していた時とことなっており、戸惑った
  • リモート開発では、不要な拡張機能をローカル環境にインストールしなくていいのが素晴らしい

公式情報