こんにちは!ROBOT PAYMENTで請求管理ロボ for Salesforce の開発チームにいる木村です。
Salesforceは開発者向けにEinstein for DevelopersというAIツールを提供してくれています。2023年9月にベータ版リリースされて以降、存在は認識していましたが、正直普段の開発業務で使用する機会がなかったので、このテックブログ活動を機にちょっと触ってみた結果をシェアいたします。
なお、今回はEinstein for Developers利用にあたっての事前準備の部分は割愛します。詳細はこちらです。
Einstein とは
一言で言うと、Salesforceに組み込まれた AI 機能群のことを指します。そして以下キャラクターがいます。SalesforceのEinstein 製品及びAIイノベーションのシンボルです。(公式紹介文から引用)

Einstein for Developersとは
Einstein for Developersは、Salesforce開発者向けに提供されるVSCodeの拡張機能となります。ApexやLightning Web Components(LWC)などの開発作業を支援するためのものです。
こちらは、Salesforceオリジナルの生成AIエンジンのCodeGenをベースとしております。オープンソースなのでGithubで確認できます。

Einstein for Developersでできること
Einstein for Developers ができることは以下の4つになります。
1. コマンドパレットで『Einstein: Generate Code』の実行
VS Code コマンド パレットからコードの生成コマンドを使用して、エディター内でにApex コードの提案を表示してくれます。
2.Apex のユニットテスト生成
Apex メソッドのユニットテストを自動で作成してくれます。
3. EINSTEIN: Dev Assistant (開発アシスタント)
VSCodeのサイドバーから使用します。自然言語を入力してコードの生成などを支援してもらうことができます。 また、コードの理解の補助も得ることが可能です。
4. インラインコード補完
コード入力中、もしくはプロンプトをコメントアウトの形で入力するとApex コードの提案を表示してくれます。
触ってみる
今回は、VSCodeのコマンド パレットからEinsteinコマンドの実行で簡単なメソッドとユニットテストの作成、開発アシスタントの一部機能を試してみました。
『Einstein: Generate Code』の実行でメソッドの作成
事前にcreateAccountクラスを作成しました。VS Codeのコマンド パレットから『Einstein: Generate Code』を実行します。すると、プロンプトの入力を求められますので以下を入力してみました。

2、3秒後に自動で生成されました。
引数で指定したサイズにて取引先のリストを作成するメソッドと、引数で指定した取引先のリストをインサートするメソッドそれぞれ生成できています。取引先レコードのインサートにあたって必須となる標準項目のName値の指定もしてくれているので問題ないですね。

『Einstein: Generate a Test』の実行でユニットテストの作成
上記で作成したユニットテストを生成するメソッド行を選択し右クリックの後『Einstein: Generate a Test』をクリックします。createAccountList() のユニットテストを作成してもらおうと思います。

クリック後、ユニットテスト作成先の対象のファイルを選択します。今回は事前にcreateAccountTestを用意しています。

2、3秒後に自動で生成されました。
指定したサイズにて取引先のリストを作成できる正常系のテストコードが自動で生成されました。問題ないですね。

また、同じメソッド(createAccountList() )を選択し、もう一度『Einstein: Generate a Test』実行してみると別のテストケースを自動で生成してくれることがわかりました。
指定したサイズが負の数の場合はfor文の条件に合致しないため、リストを作成しない正常系の確認です。

insertAccount() のユニットテストについても同様に作成してもらえました。
インサート成功する正常系のテストがコードが自動で生成されました。こちらも問題ないですね。

因みに、Einsteinコマンドのショートカットは編集可能です。

EINSTEIN: Dev Assistant (開発アシスタント)を使ってみる
開発アシスタントはVS Codeサイドバーにいる、おじさんをクリックして使用できます。
上記コマンド パレットからプロンプトを入力する方法の他に、この開発アシスタントの入力欄から自然言語を入力する方法でもコードを生成してくれます。

開発アシスタントのスラッシュコマンド
開発アシスタントのプロンプト入力欄に、「/」と入力すると、使用可能なコマンドのリストが表示されます。
/explain を使ってみる
『/explain』を使うと、現在アクティブなファイルに書かれているコードの説明をしてくれます。
以下のように入力欄に、/に続けてexplainと入力します。

2、3秒後に以下が自動で生成されました。
この機能は、新しくチームに参加した人が馴染みのないコードを理解することなどに役立てそうですね。
以下、ChatGPTにて翻訳
このコードは、createAccountという名前のパブリッククラスを定義しています。このクラスには、createAccountsというメソッドがあり、1つの整数パラメーターnumberOfAccountsを受け取ります。このメソッドは、testAccountsという名前のAccountオブジェクトのリストを作成し、指定された数のAccountレコードで初期化します。各AccountレコードのNameフィールドには、現在の反復回数を含む文字列が設定されます。最後に、このメソッドは作成されたtestAccountsリストを返します。
要約すると、このコードは、入力されたnumberOfAccountsに基づいて、「Test Account 0」、「Test Account 1」といった名前のAccountレコードのリストを作成します。
『/explain』以外にもいくつかコマンドが用意されているようです。詳しくは以下ご参考ください。
https://developer.salesforce.com/docs/platform/einstein-for-devs/guide/einstein-devassistant.html#dev-assistant-slash-commands
さいごに
今回は簡単なサンプルコードで試してみましたが、実際の実務の複雑なコードでも上手く活用していけるか今後試していきたいと思います。とりあえず、たたき台としての意味でコードを生成してくれる分には便利かなと感じます。
これから、Salesforce開発界隈でプロンプトエンジニアリングが流行していくか否かは正直不明です。が、直近のSWTTでもSalesforceはAI推しであることを感じるのでEinstein for Developersへの今後のアップデートに期待です!
We are hiring!!
ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!