Einstein for Developers を使ってみよう!
こんにちは、co-meetingの町田です。
今回は Salesforce が提供している コーディング支援ツールの Einstein for Developers (Beta) を使ってみようということで、色々調べてみました。
※ この記事は ゆるっとSalesforceトーク #36 Einstein for Developers で発表した内容となっています。
まずは、Einstein for Developersの概要を確認してみます。
Einstein for Developersとは
ChatGPTのような自然言語で対話できる生成AIがコーディング支援を行うツールです。
Winter '24リリースのタイミングでオープンベータとなり、誰でも使えるようになりました。
Einstein for Developers is Now in Open Beta | Salesforce Developers Blog
公式ページの概要には以下のように書かれています。
Einstein for Developers は Salesforce が構築したLLMの CodeGen2.5 が、コーディング支援を行ってくれる拡張機能となっています。
CodeGen2.5は、プロジェクトのソースコードを学習することが可能なため、各プロジェクトに合わせたコードを生成することができます。
また、以下の規約に他の Einstein for Developers ユーザーに共有されないことが明記されています。
次に、スクラッチ組織で使用するためのセットアップ手順を紹介します。
スクラッチ組織向けセットアップ手順
こちらは VSCode でスクラッチ組織を使った開発を行うためのセットアップ手順となっています。
本家の Einstein for Developers Setup | Salesforce for VSCode を参考にしています。
※ SFDXプロジェクトがない場合は、Salesforce DX プロジェクトの作成 を参考に SFDXプロジェクトを作成してください。
まずはセットアップ前に確認する項目です。
セットアップ前に確認する項目
以下3点となります。
DevHub組織は Developer,Enterprise,Partner Developer,Performance, Unlimited のいずれかのエディションであること
DevHub組織の拡張ドメインが有効であること
Visual Studio Code のバージョンが 1.82.0 以上であること
すべての項目を満たしていることを確認できたら、スクラッチ組織の定義ファイルを編集します。
スクラッチ組織の定義ファイルを編集する
Salesforce DX プロジェクト作成後、config/project-scratch-def.json の features に EinsteinGPTForDevelopers を追加します。
// config/project-scratch-def.json
{
"orgName": "mcho company",
"edition": "Developer",
"features": ["EinsteinGPTForDevelopers"],
}
スクラッチ組織を作成し、デフォルト組織に設定
追加できたらスクラッチ組織を作成し、デフォルト組織に設定します。
スクラッチ組織のエディションは Developer, Enterprise である必要があります。
sf org create scratch -e {enterprise|developer} -a {ALIAS} -v {DEVHUB_ORG_NAME} -d
次にVSCodeのセットアップです。
VSCode に Einstein for Developers をインストール
Einstein for Developers (Beta) をインストールします。
単体でインストールも可能ですが、Salesforceの拡張機能をまとめた Salesforce Extension Pack (Expanded) に同梱されているのでこちらがおすすめです。
Einstein for Developers を有効化
Einstein for Developers のインストールが完了すると、ステータスバーにアイコンが表示されます。
こちらをクリックすると、ドロップダウンが表示されます。その後下記画像と同様になるようクリックし設定します。
適当なApexファイルを開き、コードをタイプすると、ステータスバーのアイコンにスピナー及びチェックマークが表示され、コードがサジェストされます。
以上でスクラッチ組織とVSCodeで開発を行う際に、Einstein for Developersを使えるようになりました。
次にどんな機能があるのか紹介します。
Einstein for Developersの機能
自然言語によるコード生成
Natural Language to Code Generation | Salesforce for VSCode
自然言語を入力することでコードを生成してくれます。
サイドバーの Einstein アイコンなどから入力画面を開き、プロンプトを入力することで使用できます。
インラインの自動補完
Automatic Inline Completions | Salesforce for VSCode
コード入力中に、自動で候補をサジェストしてくれます。
有効化の手順などは「Einstein for Developers を有効化」を参照してください。
テストコードの生成
Test Case Generation | Salesforce for VSCode
※ Apexファイルのみで使用できます。
"Einstein: Generate a Test" コマンドを実行することでテストファイルやテストメソッドが生成できます。
// 実際に生成されたテストコード
@isTest
private class CopipeLabControllerTest {
@isTest
static void testGetRecords() {
User adminUser = createAdminUser();
System.runAs(adminUser) {
// Create test data
List<CopipeLab__c> testRecords = new List<CopipeLab__c>();
testRecords.add(new CopipeLab__c(Name = 'Test Record 1'));
testRecords.add(new CopipeLab__c(Name = 'Test Record 2'));
insert testRecords;
// Perform test
Test.startTest();
List<CopipeLab__c> result = CopipeLabController.getRecords();
Test.stopTest();
// Assertions
System.assertEquals(2, result.size(), 'Unexpected number of records');
System.assertEquals(
'Test Record 1',
result[0].Name,
'Incorrect record name'
);
System.assertEquals(
'Test Record 2',
result[1].Name,
'Incorrect record name'
);
}
}
}
プロンプト履歴の表示
"Einstein: Show Prompt History" コマンドなどで開けます。
こちらには自然言語によるコード生成とテストコードの生成の履歴が表示されます。
以上が主要な機能となっています。
最後に、Tipsです。
Tips
"SFDX: SObject 定義を更新" を行うとカスタムオブジェクトの情報を認識してくれる
使い始めは、"TestObject__cのモックデータをすべてのフィールドに値を設定して作って" とプロンプトに送信しても、デタラメなモックデータが作成され使い物になりませんでした。
しかし、VSCode のコマンドパレットから "SFDX: SObject 定義を更新" を実行したところ、それぞれのフィールドの型に合わせた値でモックデータを作成するコードを生成してくれました。
// Propmt
TestObject__cのモックデータをすべてのフィールドに値を設定して作って
// 出力例
@isTest
public class cuhacker_TestDataFactory {
public static TestObject__c createTestData() {
TestObject__c testData = new TestObject__c(
Name = 'Test',
Field1__c = 'Value of Field1__c',
Field2__c = true,
Field3__c = 100.25,
Field4__c = System.today().addDays(1)
);
return testData;
}
}
終わりに
そのまま使えるコードはなかなか生成されませんが、SObjectレコードのオブジェクトAPI名を取得したい、等のApex特有のコードを手軽に生成できるのは便利だと思いました。
今後のアップデートに期待です!