BLOG

2024.04.15

AI機能搭載エディタ、Salesforceの開発は可能?

このエントリーをはてなブックマークに追加

こんにちは、クラウドソリューション部の中村です。

みなさんは「Cursor」というエディタをご存じですか?
Cursor (カーソル) は  Visual Studio Code  ( VS Code ) をベースに開発された、“ The AI-first Code Editor ” を標榜する AI 機能搭載のエディタです。

Cursor では GPT の AI と Visual Studio Code を融合させていて、 Cursor は AI が作成したコードを元に手直ししていくという AI 駆動開発( AI-Driven Development )という開発手法を実現することができます。

Cursor は本格的に使用するとなると有料版の Pro を使う必要がありますが、AIの使用回数が制限されている無料版もあるのでまずはそちらを試してみてください。

Cursor に関する解説記事は結構上がっているのですが、 Salesforce の開発はできるかどうかということが、この記事を書いている時点で見つからなかったので試してみました。

なお、 Cursor は新しいエディタということで頻繁にバージョンが上がっています。
今回はバージョン 0.31.3 で試していますが、新しいバージョンでは見た目や動作が変わっている可能性があります。

準備

前提として 既に VS Code で Saelsforce 開発ができる環境の Windows PC に Cursor をインストールしています。
VS Code で Salesforce 開発環境の構築についてはこちらの公式ドキュメントを参照してみてください。

試した結果としては問題なくインストールできました。
やってみたこととしては、次の通りです。

  • 1. Cursorの公式ホームページからインストーラをダウンロードしてインストール
  • 2. 表示言語を日本語に設定
  • 2-1. [View] → [Command Palette] を選択
    2-2. コマンドパレットから[Configure Display Language]を選択
    2-3. [日本語(ja)] を選択
    2-4. 再起動するか?と聞かれるのでCursorを再起動
  • 3. Salesforce拡張機能 “Salesforce Extension Pack”をインストール

☝️この通り、VS Code に Salesforce開発環境を作成する場合とほとんど変わりませんでした。
ちなみにVS Codeでは縦に並んで表示されるメニューアイコンは、Cursorでは画面上部に横に並んで表示されています。(赤枠部分)

この後は通常の VS Codeで行う開発手順と同じで、

  • 1. Salesforceのプロジェクトを作成
  • 2. Salesforce 組織の認証 (今回は新規に取得したDeveloper Editionに接続)

を行います。操作も変わらないのでここでは省略します。
ここまで完了後の画面が次の通りです。

VS Codeがベースなので、見た目はほとんど同じです。

CursorのAI機能

それではCursorのAI機能を試してみます。

コード生成 (Ctrl+K)

まず、空のApexクラス SampleClass.cls を作成してそこにコードを作って貰います。

ショートカットキー”Ctrl+K”を押すと入力ダイアログが表示されます。

ためしに、「取引先のID、取引先名、電話、種別を取得する」と入力してEnterを押します。

すると、自動でコードが作成されます!

これは現在のコードとの差分が表示されています。緑が追加行で削除行は赤で表示されます。
これでよければ “Ctrl+Shift+Y” で確定します。(キャンセルは “Ctrl+N”)
するとコードが反映されます。

このように、SOQLということを言わずともSOQLでレコードを取得するメソッドを作成することができました。

また、メソッド内の処理なども追加したい位置で”Ctrl+K”でコードを挿入することができます。
たとえばカンマ区切りの文字列をList<String>に格納したい場合、
次のように「baseをカンマ区切りで分割してリストに格納」と入力してみると

splitする処理が生成されました。
ちなみにインデントはうまく反映できないみたいで、自分で合わせる必要がありました。

Copilot++ によるコードの補完機能

先ほどの Ctrl+K の機能の説明をするために省略していましたが、実は Ctrl+K で指示を入れずとも既に予測でコードの候補が表示されます。これは Copilot++ 機能で最近のバージョンで実装されました。

例えば、次のような getAccountDetails() メソッドを、

そのまま return で返さず、一旦 List 型に格納するようコードを書き換えようとすると、
次のような予測が表示されます。

List<Account> accountList を宣言 → 結果を格納 → accountList を戻り値としています。
ここで “ Tab ”を押すと、

この通り予測されたコードに書き換わりました!
次に、引数に Name のフィルタ条件を入れたいと思って、 getAccountDetails に引数 name を追加してみるとまた予測が出ています。

“Tab”を押してみると、SOQLにWHERE句が追加されます!

このように、次にやりたいことを AI が予測して候補を表示する機能が Copilot++ です。
ちなみに逆にこの予測が邪魔になる場合もあるので、その場合は右下のメニューから無効にすることもできます。

チャットからコード生成 (Ctrl+L)

ショートカットキー“ Ctrl+L ”を押すと、チャット画面が開いて、 Chat GPT のように質問をすることができます。

ここに質問して得られたコードを反映することができます。
試しに「取引先のレコードを取得し、名前のアルファベット毎に Map に格納したい」と質問してみました。すると次のようなサンプルコード付きの回答が得られました。

ここで、サンプルコード右上の” Apply ”をクリックすると、コードが反映されます。

そして” Ctrl+Sfift+Y ”を押すと確定されます。

ChatGPT などでコードを作成して実際のエディタにコピーするような作業を、 Cursor だけで行うことができます。

AI機能を駆使してLWCコンポーネントを作ってみる

Cursor のAI機能を使って LWC コンポーネントが作れるのか実験してみました。
取引先レコードを一覧表示するサンプルを作成してみます。

まず、空のコンポーネント” accountViewer ”を作りました。

まず、 Ctrl+L のチャットで「取引先を一覧表示する LWC コンポーネントを作成」と指示してみます。

作成されたサンプルを全部反映させてみます。
Step1 の Apex コントローラーはまだ作成していませんので、まず AccountController.cls を作成しました。

AccountController.cls を表示した状態で、”▶”アイコンをクリックしてみます。
すると「このファイルでいいですか?」のようなダイアログが出たので” Continue ”をクリックします。

するとコードが反映されます。

“ accountViewer.js ”と” accountViewer.html ”はファイルは作成済みなので、
” Apply ”を押すだけで対象のファイルにそれぞれ反映されます。

LWC コンポーネントを使用可能にするには、「 accountViewer.js-meta.xml 」を書き換えないといけません。「コンポーネントが Lightning アプリケーションで使用できない」と文句を言うと、下記のように書き換えるよう言われたので反映させました。

しかし、このままでもまだ使用できません。
さらに質問します。「まだ表示されません。アプリケーションページで使用したい」と聞きました。

アプリケーションページ以外でも使用できるサンプルが生成されましたが、とりあえずこのコードを反映して、デプロイしました。

このLWCコンポーネントを画面で表示すると、このようになります。

見た目は残念ですが、ちゃんと取引先の一覧が表示されました。

次の質問で修正してみます。

「取引先の名前以外に、電話番号とレコードのIDを表示したい。
レコードは最大100件、テーブル形式で表示させたい。」

と聞いてみます。

このようなコードを提案されたので反映させてデプロイしてみます。

すると、見た目はいい感じに表示されました!
ここまでコードを一切書かずに作成できるのはすごいですね!
しかし、 Apex コントローラーの SOQL が修正されていないので電話番号は取得できていませんし、レコードも SOQL で” LIMIT 10 ”と指定されたままなのでレコードは10件までしか表示できていないなど、まだ修正が必要です。

まとめ

Cursor でも Salesforce でもここまで書かずにできるのはすごいと思いました。
ただ LWC コンポーネント作成例の通り、自分がやりたいものが100%出てくるというわけではないため、結果が正しいか間違っているかを判断できる知識や修正点を特定できる知識は必要です。
Cursor のページには「 Build software faster in an editor designed for pair-programming with AI ( AI とのペアプログラミングのために設計されたエディタで、ソフトウェアをより速く構築する)」と書かれており、 AI に丸投げするものではなく AI と協力することで開発の生産性を向上させることを目的としています。そのようにAIを相棒としてうまく付き合うことができれば Cursor は非常に便利なエディタだと思います。

カレンダー

«4月»
 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30     

ブログ内検索