2019.06.24
開発者が定時で帰るための8つのsfdxコマンド
はじめまして、面倒な仕事はできればパソコンに頑張ってやってほしい原之園です。
皆さんは、sfdxコマンド利用していますか?
私はバシバシ使っています。
sfdxコマンドの魅力としては、
- 開発者コンソールとちがって軽くて速い
- 片手がマウスとキーボードを移動する必要がない
- よく使うコマンドはまとめて実行したり、履歴から一発で呼び出せる
だと思っています。1
そこで、きょうは8つのsfdxコマンドとその動作環境としてGit Bashについて書いていきます。
-
開発者コンソールでないとできないこともあります。 ↩
★Git Bash
Git BashはGit for Windowsに付属のコマンドラインツールです。
Windows上で各種Linuxコマンドを使えるようにしてくれます。
何よりも、メモリ消費が圧倒的に少ないというのが素晴らしいです。
環境の準備
- Windows10
- Salesforce CLI(最新版をご利用ください)※
- Visual Studio Code 【弊社ブログの過去の記事などご参考に!】
4.Git Bash 【 git for windows に含まれます。】※
4.1. GitとともにGit bashをインストール。
4.2. Visual Studio Codeのsettings.jsonに以下を追加。
"terminal.integrated.shell.windows": "{GITのインストール先}/git-bash.exe",
※sfdx、Gitをインストールするパスに” ”
(半角スペース)が入らないように注意してください。
sfdxコマンドで実行時にエラーが発生してしまいます。
SFDXコマンド
コマンド | 説明 |
---|---|
force:source:retrieve | メタデータを取得する。 |
force:source:deploy | メタデータをデプロイする。 |
force:apex:log:tail | ログをリアルタイム表示する。 |
force:apex:log:list | ログの一覧を表示する。 |
force:apex:log:get | 指定したIDのログを表示する。 |
force:apex:test:run | 指定したテストを実行する。 |
force:data:soql:query | SOQLを実行する。 |
force:data:apex:execute | Apexコードを実行する。 |
どのコマンドも--help
を引数に渡してあげることでヘルプを確認できます。
コマンドを使う前に一度確認しておくことをお勧めします。
表記について
(a|b|c)部分は、「|」で区切られた文字列(a,b,c)のどれかを入力。
[username]部分は、コマンド実行時に記載された内容に該当するデータを入力。
sfdx force:source:deploy
ローカル環境のメタデータをサーバ環境へデプロイする。
基本
引数で指定したファイルをデプロイする。
sfdx force:source:deploy --sourcepath ./force-app/main/default/classes/AccountHandler.cls
詳しくはこちら
sfdx force:source:retrieve
メタデータをローカル環境へダウンロードする。
基本
package.xmlに記載したメタデータをすべて取得する。
sfdx force:source:retrieve --manifest ./manifest/package.xml
詳しくはこちら
sfdx force:apex:log:tail
リアルタイムでログを表示するコマンド
基本
リアルタイムログを表示する。 ユーザ指定、デバッグレベル指定
sfdx force:apex:log:tail -u [username]
sfdx force:apex:log:tail --loglevel (trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL)
応用
リアルタイムでgrep検索で大文字小文字を区別しないで「debug.*@com
」が含まれる行だけを表示する。
sfdx force:apex:log:tail |grep -i debug.*@com > log.txt
sfdx force:apex:log:list
ログを一覧表示するコマンド
基本
ログの一覧を表示する。
sfdx force:apex:log:list
応用
ログの一覧の最後の10件を表示する。
sfdx force:apex:log:list |tail -10
指定したユーザ名のログ一覧を表示する。
sfdx force:apex:log:list -u [ユーザ名]
sfdx force:apex:log:get
ログを取得し、表示するコマンド
基本
指定されたIDのログを表示する。
sfdx force:apex:log:get -i [ログID]
応用
ログ一覧の最後のログを表示する。
sfdx force:apex:log:list |tail -1 |awk '{print $3}' | xargs -n1 sfdx:force:apex:log:get --logid
sfdx force:apex:test:run
Apexテストを実行し、実行結果を表示するコマンド
基本
クラスを指定してApexテストを実行する。
sfdx force:apex:test:run -n [クラス名,クラス名,クラス名] -r (human|tap|json|junit)
メソッドを指定して、Apexテストを実行する。
sfdx force:apex:test:run -t [クラス名.メソッド名] -r human
sfdx force:data:soql:query
SOQLを実行し、実行結果を表示するコマンド
基本
アカウントのID,Nameの一覧を取得して表示する。
sfdx force:data:soql:query -q 'SELECT Id, name from Account' -r (human|csv|json)
応用
アカウントのID,Nameの一覧をCSV形式で取得してファイルに保存する。
sfdx force:data:soql:query -q 'SELECT Id, name from Account' -r csv > result.csv
ApexLogのID一覧をCSV形式で取得してファイルに保存し、そのまま一括削除する。
sfdx force:data:soql:query -q 'SELECT id from ApexLog' -r csv > aa.csv;sfdx force:data:bulk:delete -s ApexLog -f ./aa.csv
その他のコマンド
sfdx force:data:bulk:delete
# CSVによるレコードの削除処理
sfdx force:data:bulk:upsert
# CSVによるレコードのアップサート処理
sfdx force:data:bulk:status
# 上記の処理のステータス表示
sfdx force:data:record:create
# レコードの挿入
sfdx force:data:record:delete
# レコードの削除
sfdx force:data:record:get
# レコードの参照
sfdx force:data:record:update
# レコードの更新
sfdx force:apex:execute
Apexコードを実行して、実行結果のログを表示するコマンド
基本
Apexコードを実行する。
sfdx force:apex:execute
> > Start typing Apex code. Press the Enter key after each line,
> > then press CTRL+D when finished.
> テストコード
をここに書く。
応用
ファイルに書いたApexコードを実行する。
sfdx force:apex:execute --apexcodefile helloworld.apex
helloworld.apexの中身は以下
while(true){
System.debug('helloworld');
}
Linuxコマンド
よく使いそうなコマンドを一覧にします。コマンドの使い方など詳細はヘルプで確認できます。
コマンド --help
このあたりはGoogleなり書籍なりいろいろ出てくるかと思います。
ここに記載していないコマンドやsfdxコマンドと組み合わせることで、開発効率あがること間違いなしだと思います。
コマンド | 説明 |
---|---|
cd | ディレクトリを移動する。 |
ls | ファイル、ディレクトリを表示する。 |
pwd | 現在のディレクトリを表示する。 |
awk | データを加工して表示する。 |
grep | 文字列の検索を行う。(正規表現で検索可能。) |
tail | 引数で受け取ったデータを末尾から表示する。「コマンド | tail -10」のように使う。 |
wc | データの行数やバイト数を表示する。「wc -l」で行数を表示する。 |
cp / mv / rm | ファイルのコピー、移動、削除を行う。 |
コマンド1 | コマンド2 | パイプ、コマンド1の結果をコマンド2へ渡す。 |
コマンド > ファイル | リダイレクト、コマンドの結果をファイルに保存する。 |
コマンド1 ; コマンド2 | セミコロン、コマンド1の実行が終わってから、コマンド2を実行する |
より楽をするために
- シェルスクリプト : 複数のコマンドをまとめて実行。if文、for文などの構文も使える!
- 他のアプリやWebサービスとの組み合わせ :Gitでコミット時にチェックさせたり、Slackに実行結果を投稿するなど連携もできる。
- alias : よく使うコマンドを自分の好みにカスタマイズできる!
sfdx force:apex:log:tail
をsftail
に短くしたりなど。
最後に
コードを書いたり、考えたりする以外の余分な時間を少しでも減らし、ストレスを減らすのにsfdxコマンドは役に立つと思います。
また、CI/CDが視野に入ってきたときにもコマンドの知識はどうしても必要になってくるかと思います。