2024.04.15
こんにちは、クラウドソリューション部の中村です。
みなさんは「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 開発環境の構築についてはこちらの公式ドキュメントを参照してみてください。
試した結果としては問題なくインストールできました。
やってみたこととしては、次の通りです。
☝️この通り、VS Code に Salesforce開発環境を作成する場合とほとんど変わりませんでした。
ちなみにVS Codeでは縦に並んで表示されるメニューアイコンは、Cursorでは画面上部に横に並んで表示されています。(赤枠部分)

この後は通常の VS Codeで行う開発手順と同じで、
を行います。操作も変わらないのでここでは省略します。
ここまで完了後の画面が次の通りです。

VS Codeがベースなので、見た目はほとんど同じです。
それではCursorのAI機能を試してみます。
まず、空のApexクラス SampleClass.cls を作成してそこにコードを作って貰います。

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

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

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

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

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

splitする処理が生成されました。
ちなみにインデントはうまく反映できないみたいで、自分で合わせる必要がありました。
先ほどの Ctrl+K の機能の説明をするために省略していましたが、実は Ctrl+K で指示を入れずとも既に予測でコードの候補が表示されます。これは Copilot++ 機能で最近のバージョンで実装されました。
例えば、次のような getAccountDetails() メソッドを、

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

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

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

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

このように、次にやりたいことを AI が予測して候補を表示する機能が Copilot++ です。
ちなみに逆にこの予測が邪魔になる場合もあるので、その場合は右下のメニューから無効にすることもできます。
ショートカットキー“ Ctrl+L ”を押すと、チャット画面が開いて、 Chat GPT のように質問をすることができます。

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

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

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

ChatGPT などでコードを作成して実際のエディタにコピーするような作業を、 Cursor だけで行うことができます。
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 は非常に便利なエディタだと思います。
2026.04.27
水木しげるさんの戦記や関連著作を5冊読み比べながら、それぞれの本の魅力と心に残った点を紹介します。戦争の過酷さや生き残ったことの重みが描かれる一方で、文章や絵の力によって不思議と「もっと知りたい」と思わされる読書体験が綴られています。戦後90年に向けて、戦争を知らない世代が何を受け取り、どうつないでいくかを考えるきっかけになる内容です。
2026.04.24
Salesforceの動的ゲージグラフにおいて、数式を用いた目標値の設定方法を解説します。年間目標から月次目標を算出する基本的な使い方に加え、役職や勤続年数に応じて目標値を変動させる方法を紹介。IF関数や日付項目を活用することで、複数条件に基づいた柔軟な目標設定が可能になります。さらに、カスタムオブジェクトやフローを組み合わせることで、より高度な管理にも対応できる点についても触れています。
2026.04.20
春は新生活のスタートとともに、アレルギーに悩まされる方も多い季節です。対処療法で乗り切ってきた中で、睡眠や食事といった基本を見直すことで体調の安定を実感しています。
2026.04.13
2026年2月に開催された佐賀県ラージボール卓球選手権大会に出場し、60~64歳クラスで優勝した体験を振り返ります。予選リーグを順調に勝ち上がり、トーナメントでは日頃から対戦経験のある選手との接戦を制して決勝へ。決勝ではファイナルゲームまでもつれる白熱した試合となり、最後は接戦をものにしました。これまでの経験や戦術の変化を実感しながら、試合ならではの緊張感も味わうことができました。