開発環境・ツール

VS CodeでSalesforce開発環境を整える現行の手順

VS CodeにSalesforce用の拡張機能を入れ、組織へ接続してソースを取得し、Apexのテストクラスを実行できる状態にする手順を説明します。

2021.02.01

用意するもの

Visual Studio Code公式サイトのトップページ。右上にダウンロードボタンが並ぶ
VS Codeの公式サイトです。右上のダウンロードボタンから、お使いのOS用の最新版を入手します。
VS Codeのダウンロードページ。Windows・Linux・Macの3つのボタンが並んでいる
ダウンロードページです。Windows・Linux・Macから、自分の環境に合うものを選びます。
  1. Visual Studio Codeをインストールする

    公式サイト(code.visualstudio.com)から、使っているOS用の最新版をダウンロードしてインストールします。すでに入っている場合は入れ直す必要はありません。

  2. JDKをインストールする

    Salesforce拡張機能はJDKのバージョン11・17・21のいずれかを必要とします。入っていない場合は先に用意します。

  3. Salesforce CLIをインストールする

    拡張機能はSalesforce CLI(sfコマンド)を前提にします。公式サイトの案内に沿ってインストールしておきます。

⚠️ 以前はJDK 11だけで足りましたが、現在はJDK 11・17・21のいずれかが必要です。バージョンの確認は、コマンドプロンプトやターミナルで次を実行します。

java -version

インストール済みのJavaのバージョンを表示します。

拡張機能を入れる

VS Codeの拡張機能画面。Salesforce Extension Packが検索結果の先頭に出ている
拡張機能アイコンを開いて検索した画面です。先頭のSalesforce Extension Packを選んでインストールします。

VS Codeの左のツールバーから拡張機能アイコンを開き、「Salesforce Extension Pack」を検索して「Install」をクリックします。Apex・Visualforce・LWC・SOQLなど、Salesforce開発に使う拡張機能がまとめて入ります。

拡張機能が動くことを確かめる

VS CodeのViewメニューが開き、Command Paletteの項目が選ばれている
コマンドパレットはメニューからも開けます。ショートカットを忘れたときはここを見てください。
コマンドパレットにSFDXで始まるコマンドが一覧表示されている
「sfdx」と入力した結果です。SFDX:で始まるコマンドが並べば、拡張機能は正しく動いています。

コマンドパレット(WindowsとLinuxはCtrl+Shift+P、macOSはCmd+Shift+P)を開き、「sfdx」と入力します。Salesforce拡張機能が提供するコマンドが一覧に出てくれば、拡張機能は正しく動いています。

⚠️ コマンド名は現在もSFDX:から始まります。画面上の表記は変わっていませんが、実行される中身は現行のSalesforce CLI(sfコマンド)です。

プロジェクトを作る

コマンドパレットの一覧にSFDX: Create Projectが表示されている
コマンドパレットの一覧です。「SFDX: Create Project」を選んでEnterキーを押します。
プロジェクトテンプレートの選択肢。標準のプロジェクトテンプレートが選ばれている
テンプレートの選択画面です。いちばん上の「標準のプロジェクトテンプレート」を選びます。
プロジェクト名の入力欄にMyFirstSfdcProjectと入力されている
プロジェクト名を入力するところです。ここで入れた名前がフォルダ名になります。
作成されたプロジェクトのフォルダ構成がエクスプローラーに表示されている
作成後のフォルダ構成です。force-appやmanifestができていれば成功です。

コマンドパレットで「SFDX: Create Project」と入力してEnterキーを押し、標準テンプレートを選びます。プロジェクト名(例:MyFirstSfdcProject)を入力し、保存先のフォルダを選ぶとプロジェクトが作られます。

組織を認証する

コマンドパレットにSFDX: Authorize an Orgが表示されている
コマンドパレットで「SFDX: Authorize an Org」を選びます。ここから認証が始まります。
ログインURLの選択肢。プロジェクトのデフォルト・本番環境・Sandbox・カスタムが並ぶ
接続先の選択画面です。本番組織かSandboxか、認証する環境をここで選びます。
組織のエイリアスを入力する欄が表示されている
組織に付ける別名(エイリアス)の入力欄です。あとで組織を切り替えるときの目印になります。
ブラウザに表示されたSalesforceのログイン画面。ユーザー名とパスワードの入力欄がある
既定のブラウザが開いてログイン画面が出ます。ユーザー名とパスワードを入れてログインします。
Salesforceのログイン画面の全体像。左にログインフォーム、右にお知らせが表示されている
ログイン画面の全体です。左側のフォームに入力してログインしてください。
Salesforce CLIへのアクセス許可を確認する画面。拒否と許可のボタンが並ぶ
ログイン後に出るアクセス許可の確認画面です。「許可」を押すと接続できる状態になります。
アクセス許可を確認する画面の全体像。要求される権限が箇条書きで並んでいる
許可を求められる内容の一覧です。Salesforce CLIが何を要求しているかを確認できます。

コマンドパレットで「SFDX: Authorize an Org」を選び、認証する環境(本番組織か、Sandboxか)を選びます。既定のブラウザが開き、Salesforceのログイン画面が表示されるので、ユーザー名とパスワードを入力してログインし、アクセスを許可します。ログインが成功すれば、VS Codeから対象の組織へ接続できる状態になります。

これはOAuth 2.0のWebサーバーフロー(ブラウザ経由の認証)です。CLIに直接ユーザー名とパスワードを渡して認証する「ユーザー名パスワードフロー」とは別物です。ユーザー名パスワードフローは、Summer '23以降に作成された組織では既定でブロックされています。CI/CDなど画面を開けない自動化でSalesforce CLIから認証する場合は、JWTベアラーフローなど別の方式を使います。

メタデータを取得する

エクスプローラーでmanifestフォルダを開き、package.xmlが表示されている
取得の起点になるファイルです。manifestフォルダの中のpackage.xmlを探します。
package.xmlの右クリックメニュー。SFDX: Retrieve Source in Manifest from Orgが選ばれている
package.xmlを右クリックしたところです。青く選ばれている項目が、組織からソースを取得するコマンドです。
取得が正常に実行されたことを知らせる通知が右下に表示されている
取得に成功すると、右下にこの通知が出ます。出力パネルにも結果が表示されます。

エクスプローラーでpackage.xmlを右クリックし、「SFDX: Retrieve Source in Manifest from Org」を選びます。取得に成功すると、通知でメッセージが表示されます。

Apexクラスを作る

force-app/main/defaultの下にclassesフォルダが表示されている
Apexクラスを置く場所です。force-app/main/defaultの下のclassesフォルダを使います。
フォルダの右クリックメニュー。SFDX: Create Apex Classが選ばれている
右クリックメニューです。青く選ばれている「SFDX: Create Apex Class」からクラスを作ります。
ファイル名の入力欄にTestAccountGetClassと入力されている
クラス名の入力欄です。ここで入れた名前がそのままファイル名になります。
保存先フォルダの選択欄にforce-app/main/default/classesが表示されている
保存先の確認です。force-app/main/default/classesのままEnterキーを押します。

classesフォルダを右クリックし、「SFDX: Create Apex Class」を選んでクラス名を入力します。作られた初期コードを、次の内容に置き換えます。

public class TestAccountGetClass {
    public static Integer getAccountSize() {
        return [SELECT Id, Name FROM Account LIMIT 2].size();
    }
}

取引先の件数を返すだけの単純なApexクラスです。

保存したら、クラスを右クリックして「SFDX: Deploy This Source to Org」を選び、組織にデプロイします。成功すると通知が表示されます。

エディタ上の右クリックメニュー。SFDX: Deploy This Source to Orgが選ばれている
デプロイは右クリックメニューから行います。青く選ばれている項目が、組織へ反映するコマンドです。
デプロイが正常に実行されたことを知らせる通知と、出力パネルの結果
デプロイに成功した画面です。右下の通知と、出力パネルのAddの行を見てください。

テストクラスを作る

TestAccountGetClassTestという名前でクラスを作り、次の内容に置き換えます。

@isTest
private class TestAccountGetClassTest {
    @isTest
    static void testMethod1() {
        List<Account> testAccounts = new List<Account>{
            new Account(Name = 'Test Account 1'),
            new Account(Name = 'Test Account 2')
        };
        insert testAccounts;

        Test.startTest();
        Integer cnt = TestAccountGetClass.getAccountSize();
        Test.stopTest();

        System.assertEquals(2, cnt);
    }
}

取引先のテストデータを自分で作ってから、getAccountSize()の戻り値を確かめるテストです。

⚠️ @isTest(SeeAllData=true)は使いません。このアノテーションは、テストの中から組織の既存データを直接見られるようにするものです。組織のデータ状況に結果が左右されるうえ、本番の実データに依存する作りにもなりかねません。上のコードのように、テストに必要なデータはテストメソッドの中で作ります。

保存してデプロイします。

テストを実行する

テストが正常に実行されたことを知らせる通知が右下に表示されている
テストを実行した直後の画面です。右下の通知で、実行が終わったことが分かります。
出力パネルのテスト結果。OUTCOMEがPass、Pass Rateが100%と表示されている
テスト結果の一覧です。OUTCOMEがPass、Pass Rateが100%になっていれば成功です。

Apexのテストサイドバーなどから対象のテストクラスを選び、「Run Test」を実行します。正常に実行されると、成功のメッセージとテスト結果が表示されます。

ここで間違えやすい

間違い何が起きるか
JDKが11・17・21のいずれでもないSalesforce拡張機能が正しく動きません
Salesforce CLIを入れずに拡張機能だけ入れる認証やデプロイのコマンドが動きません
テストで@isTest(SeeAllData=true)に頼る組織のデータ状況でテスト結果が変わります。テストデータは自分で作ります
CI/CDでもブラウザ認証を使おうとする画面を開けない環境ではブラウザ認証は動きません。JWTベアラーフローなど別の認証を使います

確認した環境

  • 2026年9月 / Salesforce Summer '26(APIバージョン67.0)時点の公式ドキュメントで、JDK要件・CLIの前提・OAuthの既定ブロックを確認しています
  • 表示されるメッセージや画面の文言は、お使いのバージョンで多少異なることがあります

まとめ

  • Salesforce拡張機能には、JDK 11・17・21のいずれかとSalesforce CLIが必要です
  • VS Codeのコマンドは今もSFDX:から始まりますが、内部では現行のSalesforce CLIが動きます
  • 「SFDX: Authorize an Org」の認証はOAuthのブラウザ経由フローです。ユーザー名パスワードフローとは別物で、後者はSummer '23以降に作成された組織では既定でブロックされています
  • テストクラスで@isTest(SeeAllData=true)は使いません。必要なデータはテストメソッドの中で作ります
  • CI/CDなど画面を開けない自動化の認証には、JWTベアラーフローなど別の方式を使います

参考:当時の画面

記事を最初に書いた当時の画面です。いまの手順と違うところは、各画像の説明に書いています。

VS CodeのConfigure Java Runtime画面。Java Language Server用のJDKが未選択で赤い警告が出ている
JDKが入っていないと、この画面で赤い警告が表示されます。
Configure Java Runtime画面のInstall A JDK。JDKのバージョンを選んでDownloadボタンを押す
当時はこの画面からAdoptOpenJDK 11を選んで入手していました。
外部サイトを開くか確認するVS Codeのダイアログ。OpenとCancelのボタンがある
ダウンロード先の外部サイトを開いてよいか確認されます。

Salesforceの導入・運用についてご相談ください

導入前の検討から、お使いの環境の改修・運用、AIとの連携まで承ります。状況を伺ったうえで、進め方をご提案します。