以下の記事について、WSL2での環境構築を自分でも行ってみたので、2025年最新版ということで記事にしてみようと思います。
はじめに
記事の目的
Salesforce開発は、Salesforceの開発者コンソールによる開発、ローコード開発等、クラウド上で完結する作業が多く、LinuxコマンドやUNIX開発文化に馴染みがない層が相当数いる(WSLという選択肢を知らないケースも)のではと感じています。
私自身も、人によっては信じ難いことかと存じますが、実務でVSCodeを使う機会がほぼなく、TrailHeadでSalesforce-CLIを学習した際には使いましたが、Windows上から直接接続するスタイルで事足りておりました。
しかしWSL上でSalesforce-CLIを導入するメリット、他現場でも役立つ汎用的なスキルであることを知り、WSL2をSalesforce開発の基盤として導入する手順をまとめます。
WSL概要
WSL(Windows Subsystem for Linux)とは?
Windows上でLinuxを動かせる仕組み。といっても仮想マシンと違って軽量、高速で、インストールも簡単です。WSL2はWSLの新バージョンで、Linuxとの完全互換性があります。
前提条件と準備
Salesforce Developer Edition 環境を用意
Developer Edition 環境を持っている前提で作業しますので、未登録の方は事前登録をお願いいたします。
Dev Hub の有効化
WSLの環境構築には不要ですが、後々便利なので Dev Hub とスクラッチ組織の組織シェイプを有効化しておいてください。
WSL2インストール
相当古いWindows環境でなければ、コマンドプロンプトから下記のコマンドを実行するだけで済みます。
wsl --install
※規定で WSL2 に設定されます。
容量の確保
vhdxは肥大化しやすいため、最低でも 20GB程度 は確保してください。
自分はCドライブ(SSD)の容量が心もとなかったため、速度は目を瞑り、Dドライブ(HDD)を利用しました。小規模ならそこまで気になりません。
Linux環境ダウンロード
カニノエル社(Ubuntuの支援企業)のサイトから、こちらのgzファイルをダウンロードしてください。これがUbuntu環境の元になります。
ubuntu-jammy-wsl-amd64-ubuntu22.04lts.rootfs.tar.gz
curlコマンドを使用されても問題ありません。私は「失効の関数は証明書の失効を確認できませんでした。」エラー等でうまくダウンロードできなかったため、上記サイトからダウンロードしました。
curl -L -o ubuntu-2204-rootfs.tar.gz https://cloud-images.ubuntu.com/wsl/jammy/current/ubuntu-jammy-wsl-amd64-wsl.rootfs.tar.gz
基本用語
用語 | 説明 |
---|---|
ディストリビューション(DistroName) | Linuxの"種類"のこと。Ubuntu,Devian等。WSLでは複数のディストリビューションを用途別に作成できる。(異なるLinux PCを、複数台持つイメージ) |
Ubuntu | 世界的に利用されているLinux OS。本記事でもこちらを使用する。 |
シェル | コマンドを入力してOSを操作する環境。本記事では"bash"を使用する。 |
.vhdxファイル | WSL2のLinux環境の中身を保存するファイル形式。容量が膨らみやすいので管理に注意する。 |
tarファイル | 複数のファイルやフォルダを1つにまとめたアーカイブ形式。ディストリビューションのバックアップ/エクスポートで使用する。 |
gzファイル(.tar.gz) tar | tarファイルを圧縮したもの。Linux環境の配布でよく使われる。 |
Salesforce開発に必要な環境構築
ディストリビューション作成
wsl --import <DistroName> <InstallLocation> <InstallTarFile> --version 2
- DistroName : ディストリビューション名
- InstallLocation : インストール先ディレクトリパス(ディレクトリ名だけ書くとカレントディレクトリにディレクトリが作成される)
- InstallTarFile : Linux環境、tarファイルかgzファイルを指定します。「ubuntu-jammy-wsl-amd64-ubuntu22.04lts.rootfs.tar.gz」を使ってください。
wsl -l -v
これで指定した DistroName が一覧に表示されれば成功です。
ユーザー作成
作成されたばかりのディストリビューションには、rootユーザーしか存在しません。rootユーザーは全権限を持ち、重要なシステムファイルでも警告なしで削除できてしまうので、操作用のユーザーを作成して使用します。これに、sudo(一時的に管理者権限で操作可能になる)コマンドの使用権限を与えておきます。
# ユーザー追加
adduser <UserName>
# 管理者に指定(sudoコマンドが使用可能)
usermod -aG sudo <UserName>
初期設定
WSLの設定ファイル(wsl.conf)に、いくつか初期設定を加えます。
vim /etc/wsl.conf
# デフォルトのログインユーザー指定
[user]
default=<username>
# WindowsのPathとLinuxのPathを完全分離
[interop]
appendWindowsPath = false
初期設定は、一度シャットダウンすると反映されます。
exit
VSCodeの民は、ウィンドウをもう一個開いてください。Windows側のコンソールが開きます。
wsl --shutdown
ソフトウェアインストール
# Ubuntuでインストールできるソフトのリストを更新する(ソフト自体は更新されない)
sudo apt update
# curlをインストールしてコマンドラインからインストールが可能に(-yは確認を自動でyesにする)
sudo apt install curl -y
# nvmをインストール
curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# nvmを初期化
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
# nvm Node.js長期サポート版(Long Term Support)インストール
nvm install --lts
# Salesforce-CLI インストール
npm install @salesforce/cli --global
Salesforce組織との同期・デプロイ
プロジェクト作成
Salesforceのメタデータのひな形が作成されます。
sf project generate --name <project-name> --manifest
# --manifestをつけないと重要な設定ファイル manifest/package.xmlが作成されないため注意
ログイン
Salesforce組織にログインいたします。
sf org login web --alias <alias-org-name> --set-default-dev-hub
# --set-default-dev-hub : デフォルトのDev Hub組織に指定
# -a or --alias : 組織のアライアス(別名)指定
本番環境想定のため、ログイン + Dev Hub 組織として設定するだけで手を加えません。スクラッチ組織を作成してデプロイいたします。
スクラッチ組織作成
sf org create scratch --definition-file config/project-scratch-def.json --alias myscratch --set-default
# --definition-file : 組織作成時の設定ファイルパス
# --set-default : デフォルトの開発組織に指定
# 組織を開く
sf org open
同期とデプロイ
開いた組織で、取引先に適当なカスタム項目を作成してください。
manifest/package.xml に以下の記述を追加
(これで同期対象に取引先オブジェクトが追加されます。他にも様々なメタ設定が同期対象にできます)
<types>
<members>Account</members>
<name>CustomObject</name>
</types>
# 組織と同期
sf project retrieve start -x manifest/package.xml
# -x : 同期対象の設定ファイルパス
force-app/main/default/objects/Account/fields
上記ディレクトリに各項目のxmlファイルが作成されます。
この中にさっき作ったカスタム項目が含まれていれば同期成功です。
また、xmlファイルをコピーして別の項目を作ってみます。
# 組織にデプロイ
sf project deploy start
# デフォルト以外の組織にデプロイする場合
sf project deploy start --target-org my-other-scratch-org
スクラッチ組織を開くと、カスタム項目が追加されているとわかります。
大量項目追加等の煩わしい作業がかなり効率化されるかと存じます。
さいごに
私のような環境構築に慣れない方の参考になれば幸いです。