Edited at

Visual Studio CodeでSalesforceの開発環境を構築する

ついにSalesforce公式のVisual Studio Code (VS Code)拡張機能がすべての組織に対応しました!:tada::tada::tada: (リリースノート)

これまで、Salesforce公式の拡張機能はSalesforce DX(Scratch Org)のみサポートしていたため、SandboxやDeveloper Editionなどで開発を行うにはMavensMateの利用がメジャーでしたが、開発が終了しています。この記事では、VS Codeと公式の拡張機能を用いた開発環境の構築手順をご紹介します。なお、VS Codeはインストール済みの前提です。


設定手順


1. Salesforce CLIをインストール

設定ガイドに従ってSalesforce CLIをインストールします。以下のコマンドで、Salesforce CLIのプラグインバージョンが44.0以上であることを確認してください。

sfdx plugins --core

salesforcedx 44.2.2 (core)のように出力されていればOKです。


2. VS Codeに拡張機能のインストール

Salesforce Extensions for VS Codeをインストールします。


3. ローカルにプロジェクトを作成する

コマンドパレットを開き(Ctrl+Shift+P/Cmd+Shift+P)、SFDX: Create Project with Manifestを選択します。

スクリーンショット 2018-09-15 20.31.19.png

プロジェクト名を入力後、保存先のフォルダを選択しプロジェクトを作成すると、入力したプロジェクト名で以下の通りファイルが生成されます。なお、with ManifestがないCreate Projectコマンドはmanifestフォルダとpackage.xmlを生成しません。(スクラッチ組織の場合はこちら)

your-project-name

├── .forceignore
├── .sfdx
├── .vscode
│   └── settings.json
├── README.md
├── config
│   └── project-scratch-def.json
├── force-app
│   └── main
│   └── default
│   └── aura
├── manifest
│   └── package.xml
└── sfdx-project.json


4. 組織に接続

コマンドパレットから、SFDX: Authorize an Orgを選択し、組織の名称を入力(任意の名前でOK)します。

sfdx authorize an org

続いて、接続したい組織の種別を選択します。

org_type.png

直後にブラウザが起動しますのでその組織にログインします。

なお、組織の種別を選択する際のProject Defaultはsfdx-project.jsonファイルのsfdcLoginUrlに設定された値です。ここを書き換えてもOKです。

VSCodeで以下のように出力されていれば接続できています。

Successfully authorized xxxx@exmaple.com with org ID 00DXXXXXXXXXXXXXXX

You may now close the browser


5. メタデータの取得とデプロイ

エクスプローラで右クリックするとSFDX: Retrieve Source from OrgSFDX: Deploy Source to Orgが利用できるようになっているはずです。特定のフォルダやファイルに対してこのコマンドを選択すると、そのフォルダやファイルに対してのみ取得・デプロイされます。

Force.com IDEなどから開発環境を移行する方は、フォルダの構成が異なるため、package.xmlのみ置換してこれを右クリックしSFDX: Retrieve Source from Orgを選択することで、メタデータを再取得すると良いでしょう。

Retrieve source in manifes org


知っておくと便利な機能


ファイル保存時の自動デプロイを有効化する

.vscode/settings.json"salesforcedx-vscode-core.push-or-deploy-on-save.enabled": trueを追加しVS Codeを再起動します。そのプロジェクトではファイル保存時に自動的に、SFDX :Deploy Source to Org(本番/Sandbox/DE)またはSFDX: Push Source to Default Scratch Org(スクラッチ組織)が実行されます。デプロイ結果は手動実行時と同様に[出力]タブで確認できます。


接続先の組織を追加する・切り替える

Default org picker

接続先の組織のエイリアスがフッターに表示されますので、これをクリックすると、コマンドパレットに登録済みの組織が一覧表示されます。一覧で選択した組織がそのプロジェクトでのデフォルト組織に切り替わります。+SFDX: Authorize an Orgから新しく組織を登録することもできます。


リファクタリング


  • 変数、メソッド等にカーソルを合わせた状態でF2または右クリック→Rename Symbolでリネームできます。

  • リテラル値にカーソルを合わせた状態で行頭に表示されるQuick Fixウィジェット(💡)をクリックして、Extranct Constantを選択すると選択したリテラルを定数(public static final)に変換できます。


トラブルシューティング


Apex Code Editorが上手く動作しない

Java 8または11が必要になりますので、最新版のJavaを利用されている方は、以下の記事を参考にsalesforcedx-vscode-apex.java.homeにJava 8または11のパスを設定してください。

https://qiita.com/maratto/items/2d8b09da80fa5051c551#salesforce%E6%8B%A1%E5%BC%B5%E3%81%AE%E8%A8%AD%E5%AE%9A


移行時にメタデータがうまく取得されない

package.xmlの記載が正しいかを再確認し、初回取得時はpackage.xmlを右クリックしてSFDX: Retrieve Source in Manifest from Orgを実行してください。


メタデータ取得時に UNSUPPORTED_API_VERSION のエラーが表示される

package.xmlのAPIバージョンが組織のAPIバージョンを上回っていないか確認してみてください。スクラッチ組織の場合はsfdx-project.jsonsourceApiVersionを確認してください。


コマンドが見つからないもしくはcommand 'sfdx.force.auth.web.login' not found のように表示される

開いているフォルダの直下にsfdx-project.jsonがあることを確認してください。プロジェクトを作成した直後や、VS Codeを起動した直後は拡張機能が読み込まれるまでに少し時間がかかりますので、数十秒待ってから再実行してみてください。


おわりに


  • Salesforce Extensions for VS Codeは単にメタデータの取得・デプロイが出来る拡張機能ではなく、Salesforce CLIの多くのコマンドを統合するパッケージ(Salesforce CLI Integration for VS Code)を含んでおり、SOQLの実行やApexのテスト実行・匿名実行などが可能です。VS Codeから実行可能なSalesforce CLIのコマンドについてはこちらから確認してください。

  • お好みでキーボードショートカットの設定もどうぞ。

  • Apexテストの実行方法やデバッグ方法については、「Visual Studio CodeでSalesforceのApexテストを実行・デバッグする」も参考にしてください。


参考リンク