2019.06.24

開発者が定時で帰るための8つのsfdxコマンド

はじめまして、面倒な仕事はできればパソコンに頑張ってやってほしい原之園です。

皆さんは、sfdxコマンド利用していますか?
私はバシバシ使っています。
sfdxコマンドの魅力としては、

  • 開発者コンソールとちがって軽くて速い
  • 片手がマウスとキーボードを移動する必要がない
  • よく使うコマンドはまとめて実行したり、履歴から一発で呼び出せる

だと思っています。1

そこで、きょうは8つのsfdxコマンドとその動作環境としてGit Bashについて書いていきます。

  1. 開発者コンソールでないとできないこともあります。 

★Git Bash

Git BashはGit for Windowsに付属のコマンドラインツールです。
Windows上で各種Linuxコマンドを使えるようにしてくれます。
何よりも、メモリ消費が圧倒的に少ないというのが素晴らしいです。

環境の準備

  1. Windows10
  2. Salesforce CLI(最新版をご利用ください)※
  3. 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

詳しくはこちら

任意の組織に対する開発(Salesforce DX開発者ガイド)

sfdx force:source:retrieve

メタデータをローカル環境へダウンロードする。

基本

package.xmlに記載したメタデータをすべて取得する。
sfdx force:source:retrieve --manifest ./manifest/package.xml

詳しくはこちら

任意の組織に対する開発(Salesforce DX開発者ガイド)

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を実行する

より楽をするために

  1. シェルスクリプト : 複数のコマンドをまとめて実行。if文、for文などの構文も使える!
  2. 他のアプリやWebサービスとの組み合わせ :Gitでコミット時にチェックさせたり、Slackに実行結果を投稿するなど連携もできる。
  3. alias : よく使うコマンドを自分の好みにカスタマイズできる!
     sfdx force:apex:log:tailsftailに短くしたりなど。

最後に

コードを書いたり、考えたりする以外の余分な時間を少しでも減らし、ストレスを減らすのにsfdxコマンドは役に立つと思います。
また、CI/CDが視野に入ってきたときにもコマンドの知識はどうしても必要になってくるかと思います。

皆さんもsfdxコマンドを有効に使って早くお家に帰りましょう!

21 件
     
  • banner
  • banner

関連する記事