2020.08.31

Salesforce CLIをもっと活用してみよう

みなさん、Salesforce CLI使っていますか。
前回の記事で、sfdxコマンドとGit Bashを使うための下準備をしました。
開発者が定時で帰るための8つのsfdxコマンド
ただ、どうしてもsfdxコマンドって長いので、普段使いしていると入力するのが面倒くさくなってきます。

その面倒くさいを減らすために、自分だけのコマンドを作ってしまう方法について書いていきます。

Git Bashを導入することで、Windows上でもシェルスクリプトを書くことができるようになっています。また、いくつかのLunuxコマンドも利用できるようになっています。
そのことを利用して、sfdxコマンドをオーバーホールして少しでもキータッチの回数を減らしたいと思います。

■前提条件

  1. Sfdx cliがインストール済みである
  2. Visual Studio Codeが導入済みである
  3. Git Bashが導入済みである
  4. Linuxのコマンドをちょっと知っている

■設定

  1. Git BashをVisual Studio CodeにのTerminalとして設定する。
     Setting.jsonで以下の設定を記述する。
    "terminal.integrated.shell.windows": "C:\Git\git-bash.exe"

■実行

  1. Git BashまたはVisual Studio CodeのTerminalを開く
  2. プロジェクトフォルダ内に移動する(Visual Studio Codeであれば移動済みのはず)
  3. コマンドを作る!
  4. コマンドを実行する。

コマンドを作る

たとえば次のコマンド

  sfdx force:log:tail  

ログをほぼリアルタイムで表示するだけのコマンドですが、コマンドを毎回入力するのにはちょっと億劫な長さです。 また、そのままだと一定時間でログの表示が終了してしまうためコマンドを都度入力する必要があります。
そこで以下のように新しいコマンドを作ってしまいましょう。
※ファイルの保存先ですがここではプロジェクトのフォルダの直下を想定しています。

  1. Visual Studio Code上で新規ファイルを作成し、「sft.sh」というファイル名にする。
  2. 以下の内容をファイルに記述して保存する。
#!/bin/bash
set -eu

while : ;do sfdx force:apex:log:tail ;done
sft.sh
これによって、自分でコマンドを終了する(CTRL+C)まで延々とログを表示させ続けることができる新しいコマンドが誕生します。

ファイルを保存した後は、以下のコマンドをターミナル上で1度だけ行います。
 chmod 700 ./sft.sh
ファイルの実行権を付与する。
ファイルを保存し、実行権を付与した後は、実際にコマンドを実行することになります。
以下のようにしてコマンドを実行することができます。
./sft.sh
コマンドを実行する

コマンドっぽくする

折角なので、コマンドっぽくしてみましょう。 以下の手順で実施していきます。

1.先ほど作成したファイルを自分の好きなフォルダに移動してください。

c:\commandsのようなフォルダを作成して、そこにsft.shを移動するのがよいでしょう。

2.パスをとおします。

ターミナルで以下のコマンドを実行します。
    ls -l ~/.bash_profile
するとファイルの場所がフルパスで表示されると思います。
     /c/hogehoge/.bash_profile
上記の場所のファイルを開き、以下の行を追加します。
     export PATH=$PATH:/c/commands
すでにexport PATH=fugafugaで始まる行がある人は、先ほどコマンドを置いたフォルダのパスを追加してください。 「:」が区切り文字です。すでに記載されている部分の一番後ろに「:/c/commands」と追記してください。※/c/commandsC:\commandsと同じ場所を指しています。

3.ターミナルを再起動する。

VisualStudioCodeごと再起動してよいです。

4.ターミナル上でプロジェクトフォルダに移動。

これで以下のように入力するだけでログをずっと表示してくれるようになります。

sft
ログを表示するコマンドの実行

コマンドをつくる その2

sfdx force:data:soql:query -q 'SELECT Id, Name, Account.Name FROM Contact'

続いてはこれです。 soqlはすぐに思い浮かぶのに、たどり着くまでに30回もキータイプが必要です。遠い。

soql 'SELECT Id, Name, Account.Name FROM Contact'

このぐらいには短くしたい。

#!/bin/bash
set -eu

sfdx force:data:soql:query -q "$1" -r csv
soql.sh

上記のファイルを作り、「sft.sh」と同じように保存場所、実行権を変更します。

ちなみに「’」は「"」 に置き換え可能です。
Where句に文字列を書き込む場合、"でSOQL文を囲っている場合は’で記載します。

soql "select Id , Name from User where Name='hogehoge' order by createddate desc"

soql 'select Id , Name from User where Name="hogehoge" order by createddate desc'
"と'

最後に

特にApexコードを実行できるコマンドについては、いろいろな操作をできるようになる可能性を秘めていると思います。
たとえば、Tooling ApiをApex経由でコールすることもできるので、sfdx force:data:queryでは取得できなかったデータをコマンドでsy得して表示することなども可能になります。

また、Linuxのコマンドのsedawkを駆使すれば、1)SOQL文で取得したデータを2)その場で加工して、3)コマンドでそのままアップロードすることも可能です。  

今回はここまでです。
サンプルとして作成したコマンドをGithubでも公開しています。自分なりのコマンドを作成する際のご参考にして見てはいかがでしょうか。

それでは!

参考

.bash_profileと.bashrcのまとめ
Git Bash コマンド
プログラマーが知っておくと良いLinuxコマンド
Linux コマンド一覧表 *Git bashでは使えないコマンドも記載されています。

21 件
     
  • banner
  • banner

関連する記事