ChatGPT、特にGPT-4モデルを一度でもプログラミングのサポートに使ったことがある人ならば、GPT-4がどれだけ強力なアシスタントになるか分かっているはずだ。
何か実行したいタスクや書きたいプログラムがあるとき、その内容を自然言語で伝えるだけで、GPT-4が一発で動くコードを生成してくれることも多い。
何かエラーが生じた際に、コード全体を読み込ませた上でエラーの原因を聞くと、考えられる問題点を指摘してくれたりもする。
一度体験すると、このアシストなしではプログラムを書くのが面倒くさくなってしまうほどだ。
しかし、ChatGPTのチャットインターフェースを利用していると、いちいちテキストエディタにコードをコピペせねばならず、ブラウザの画面との行ったり来たりが中々に面倒だ。
そこで、AIの力をテキストエディターそのものと統合して、もっとシームレスにAIによるサポートを受けられるのが、GPT-4を組み込んだコードエディター「Cursor」だ。
コードエディターCursorは、Anysphereによって開発されたもので、GPT-4を正に開発するOpenAI Fundからも多額の投資を受けている。
この記事では、Cursorの基本的な使い方と、実際に使ってみた上での感想をお伝えする。
CursorでGPT-4によるAI機能を利用するには、通常は月額制の有料サブスクリプションプランしかないが、実は、Open AIのAPIキーや、AnthropicのAPIキーを自分で持ち込むと、GPT-4 TurboやClaude 3 Opusなど超優秀な大規模言語モデルを、無料プランでも使用することが可能だ。
多くのライトユーザーにとっては、従量課金であるAPIを使った方がお得かつ実用的であろうと思われるため、無料プランでGPT-4 TurboやClaude 3 Opusを、APIキーを通して使う方法も解説する。
Cursorの基本的な使い方と便利な機能
コードエディターのCursorはVisual Studio Codeからフォークされているので、基本的な使い勝手はVisual Studio Codeとほとんど変わらない。
初回起動時にVisual Studio Codeのエクステンションや設定をインポートするか尋ねられるので、今までもVisual Studio Codeを使っていた人であれば、ほとんど意識することなくCursorに移行することができるだろう。
Cursorの主要機能は紹介していくが、最も頻繁に使うのは「Command+K(Edit)」と「Command+L(Chat)」の二つの機能になる。
この二つのショートカットを基本に、チャットウィンドウの中で使えるその他の便利なコマンドが色々とあるようなイメージだ。
Cursorの作業中のパネル構成は、右側にAIとのチャットウィンドウがあり、そこでチャットしつつ修正の提案を受けるような形になる。
Command+Kでコードの一部を簡単に編集
変更したいコードを選択した状態でCommand+Kキーを押すと、AIに変更方法を指示することができる「Edit」が利用できる。
何も選択せずにCommand+Kをタイプすれば、新しいコードを生成することもできる。
この機能は1行から50行の選択範囲で最も効果的だと記載されており、それ以上の場合は後述の「Chat(Command+L)」を利用した方がいいかもしれない。
Command+Lでコードベース全体についてAIとチャット
チャットモードでは、現在のファイルやカーソル位置を常に把握しているAIとチャットをすることができる。
また、チャットモードでの質問時に、Command+Enterをタイプするか、入力ボックスの「with codebase」ボタンをクリックすると、AIにコードベース全体を読み込ませた回答させることも可能だ。
例えば、アプリケーション全体を、違うプログラミング言語で動作するように書き換えて、という指示を行うこともできる。
後述する「@」機能などを使えば、特定のファイルだけを名指ししてコンテキストに加えることもできる。
Github Copilotより優秀?新機能「Copilot++」
Copilot++は、Cursorに追加された機能の一つで、Github Copilotと同様に、コードのオートコンプリートや提案を行ってくれる機能だ。プロ版はもちろんのこと、無料版でもオンにすることができる。
Copilot++の詳細な仕様がCursorのHPなどを見てもあまり解説されていないものの、オートコンプリートだけでなく既存コードの編集にも対応し、Github Copilotよりも優れていると謳われている。
コードの前後のコンテキストを理解した上で、複数行にわたるオートコンプリートを提案してくれるなど、既存のコードの編集やリファクタリングにも役立つ。
Github Copilotを追加で契約することなく、同等のオートコンプリート機能が利用できるようになるだけでも、随分ありがたい。
Copilot++をオンにするには、Cursorのウィンドウの右下にある「Copilot++」をクリックして有効にするか、Command + Shift + Pでコマンドパレットを起動し、「Enable Copilot++」を選択する。
Copilot++を有効にしていると、コードを書いているときに、その先のコードをグレー文字で提案してくれるので、「Tab」を押すだけでオートコンプリートを適用できる。
チャットやCommand+Kで使える便利なコマンド全種
「@ Symbols」はチャットやCommand+K内で頻繁に使うであろうコマンドだ。
特定のファイルと紐ついた質問をしたい時に、@FileNameと打ち込むと、参照すべきコードをAIに示すことができる。Command+KやChat内で「@」を打ち込むと、コードベースにあるファイル一覧のドロップダウンなどが表示され、AIにコンテキストを与えることができる。
「Docs」も、例えば新しく登場した最新のライブラリにGPT-4の知識が追いついておらず(ナレッジカットオフの日付以降に登場したデータはGPT-4は把握していないため)、正しいコードが生成できない、といった問題に対処する非常に重要な機能だ。
AIがサードパーティのライブラリを理解するために、チャットやCommand+Kで「@LibraryName
」と打ち込むことで、ライブラリの最新のドキュメントの内容を踏まえて質問に回答してくれる。
「@Add
」と打ち込めば、任意のドキュメントを追加することも可能だ。
GPT-4の2024年4月14日現在のナレッジ・カットオフは2023年12月までなので、それ以降に公開された・更新されたライブラリのドキュメントは通常のGPT-4は把握していないが、この機能によって、最新の事情も踏まえた回答が得られる。
「Auto-Debug」も非常に便利な機能だ。
Cursorのターミナルでエラーを修正するためのエージェントで、ターミナルエラーの後に表示される青い「Auto-debug」ボタンをクリックすると、AIがファイルを調べて問題を解決してくれる。
「Fix Lints」機能を使えば、 リントエラーもAIが迅速に修正してくれる。
リントエラーにマウスオーバーして表示される青い「Fix」ボタンをクリックすると、チャットにAIの応答が表示される。
AIが提案してくれた修正は、自動で反映までできる
Command+KでAIに提案してもらった修正案や新しいコードは、修正前後が色分けして分かりやすく表示され、Command+Enterまたは「Accept」ボタンをクリックすることで承認し、自動で反映させることができる。
Command+Lのチャット画面においても、チャット中でコードブロックが提案されたら、その右上に「Apply to Current File」というボタンが表示されるので、それをクリックすればファイルに修正が反映されて表示される。
こちらも、「Accept Edit」をクリックすれば修正を確定できる。
ChatGPTでGPT-4にコーディングに関する質問をすると、提案された変更案は自分で手動でコピペしなければならず、何回も繰り返すとそれなりにストレスになっていた。
このAIによる提案をファイルにスムーズに反映できる機能はかなり重宝する。
APIキーを使って無料〜激安でCursorの全機能を使う方法
Cursorの基本の料金体系は、以下の通りとなっている。
- Basic:無料。GPT-4(Slow)の50回の使用、GPT-3.5の200回の使用。
- Pro:月額20ドル(年間契約で月16ドル)。GPT-4(Fast)の500回の使用、GPT-4(Slow)とGPT-3.5は無制限
- Business:月額40ドル/ユーザー。プロンプトがOpenAIのトレーニングに使用されないなどのプライバシー強化。
通常、自分のメインエディタとして利用する場合には、Basicでは速攻で上限に到達してしまうと思われる。
BasicプランでGPT-4が「50回」使えるといっても、50個の質問ができるわけではなく、正確なカウント方法は不明だが、質問・回答・修正案のコードへの反映などを一通り行うと、1連の作業だけで5〜10リクエスト消費されてしまうことがある。
したがって、まともに仕事でエディタとして使いたい場合には、Proプランを利用し、月額20ドルを支払うことになるだろう。
それでも、Fastモードが利用できるのは500回なので、割とすぐに使い切ってしまう可能性がある。
この点、実は「OpenAI Key」モードが公式に用意されており、自分のOpenAIのAPIキーをCursorに入れて、無料のBasicプランのままで、殆ど全ての機能を利用できるという裏技がひっそり用意されている。
(2024年4月加筆)さらに、現在では、GPT-4を超える性能を持つとも言われているAnthropic社のClaude 3 Opusも、Anthropic社のAPIキーを入力することで利用できるようになった。
APIキーを使えば、最新のGPT-4 Turboモデルも、Claude 3 Opusモデルも、好きなモデルを選んでCursor上で使うことができるので、高速かつ安価に利用を続けることもできる。
以下では、OpenAIのGPT-4、AnthropicのClaude 3を使用する場合について、それぞれAPIキーを持参してCursorを使う方法を紹介する。
Basicプランのまま、OpenAIのAPIキーでCursorを使う方法
そもそもOpenAIのAPIキーを入手する方法については、以下の記事で初心者向けに解説しているので参考にしてほしい。
Cursorを開いた状態で、Command+Shift+Pをタイプして、コマンドパレットから「Cursor: Open Settings」を開く。
すると、以下のように「OpenAI API」という項目があり、ここに自分のAPIキーをペーストした上で「Using key」トグルをオンにしておくと、CursorのChatやCommand+Kで、自分のAPIキーに基づいてGPT-4 turboやGPT-4、GPT-3.5などを使用することができる。
これは、Basicプランのままでも利用可能なので、無料のままでほとんど全てのCursorの機能が使えることになる。
チャットウィンドウの左下に、APIでリクエストを送るモデルを選択できるプルダウンメニューがあるので、最も高性能であろうGPT-4 turboを選択して利用する。
ただもちろんAPIキーのリクエスト量に応じた従量課金で、CursorではなくOpenAIから請求は来るので、使用量に気をつけながら使うべきだ。
20ドルのProプランを契約するのが安いか、従来のモデルよりかなり安いGPT-4 turboのAPIを使用して積み上がった金額が安いかは、それぞれの人の使用量によるだろうが、筆者の場合はAPIキーを使った方が遥かに安そうだった。
いいことずくめのAPIキーに思えるが、実際に使用していく中で、1点だけデメリットがあった。
Command+L(チャット)でのエディットについては、「Apply to Current File」をクリックしても、「APIキーはサポートされていません:/edit機能はノンパブリックなモデルを使用しており、APIキーではアクセスできません。」というメッセージが表示され、反映してもらえなかった。
もちろん、手動で反映すればいい話なのだが、どうせそんな手間が生じるなら月額20ドルを払ってGPT-4(Slow)が無制限に使えるProを使った方がマシだよ、という人もいるだろう。
なお、Command+Kでのエディットについては、APIキーを使用していても自動で反映する機能が使用できた。
Command+Lでコードベース全体に影響するような変更を行うことはそれほどないので、今のところ、筆者はAPIキーを軸に使用している。
Basicプランのまま、AnthropicのClaude 3 OpusのAPIを使う場合
生成AIによるコーディングを使用していると、あるモデルでは質問に対して正しいコードが得られなかったとしても、他のモデルを使ってみると正しいコードが得られるようなことがよく起きる。
GPT-4をAPIを経由して利用できるようにしたら、せっかくであれば、Claude 3のAPIも利用できるようにしておくことをお勧めする。
Anthropic社が開発するClaudeは、性能によってHaiku, Sonnet, Opusの3つのモデルが存在するが、最上位のOpusモデルは、非常に高性能でGPT-4の性能を凌ぐとも言われている。
コーディングの際にGPT-4と併せてOpusを利用できれば、非常に心強いアドバイザーが一人増えるようなものだ。有料プランを使っている場合でも、Claude 3は選択肢として追加しておいて損はないかもしれない。
ここでは実際にClaude 3のAPIキーを取得して、Cursor Editorに適用する方法を説明していく。
まずは、Anthropicのコンソールにアクセスして、「API Keys」「Create Key」をクリックして、新しいキーを作成するが、後で自分で分かりやすいように「cursor」などと名前をつけておく。
OpenAIのAPIキーを追加した手順と全く同じではあるが、Command+Shift+Pをタイプして、コマンドパレットから「Cursor: Open Settings」を開く。
「Models」から、AnthropicのAPIキーを入力する箇所があるので、先ほど作成したAPIキーをコピー&ペーストして、「Verify」をクリックする。
以上の設定が完了したら、ファイルを開いた状態で、Command + Lをキーボードでタイプしてチャットウィンドウを呼び出し、プルダウンのモデル選択で、「claude-3-opus-20240229」などのAnthropicnのモデルが選択可能になっている。
GPT-4のAPIキーを利用した場合と同様に、残念ながら提案されたコードの「Apply」はできないが、自分でコピペすれば適用可能である。
Cursorを使っているかどうかが生産性を左右するかも
この記事で紹介したように、Cursorでは、例えばコードの内容について何らかの質問をすると、AIがコードの中身を見た上でチャットの質問に答えをくれる。
既にコーディング中にChatGPTなどのAIを活用していた人も多いだろうが、Cursorを使うことで、いちいちコードの中身をChatGPTに解説した上で質問したり、自分のコードファイルをChatGPTにコピペする必要もなくなる。
プログラムが思った通りの動作をしてくれない時や、エラーの原因が中々わからない場合などにも、AIが直ちになぜそのような不具合が起きているのかを回答してくれる。
さらには、コードをどのように修正すればよいかの提案まで行ってくれて、それを現在のコードファイルに反映させることも瞬時にできてしまう。
Cursorが使用しているのは、現在のところOpenAIが開発しているGPT-4かGPT-3.5になるので、コードの修正の質やユーザーの質問にどこまで的確に答えられるかは、ChatGPTを普段使用しているユーザーであればイメージができるだろう。
ChatGPTのGPT-4モデルでコードの質問をすると、最新のパッケージなどでは答えられないこともあるが、多くの場合は的確なアドバイスをくれる。
それが先ほどのような自動で修正をコードに反映するような機能がついて、テキストエディタ向けに最適化されたと考えれば良い。
既に開発者として腕がある人はもちろんのこと、プログラミングの学習を始めた初学者にも、大きな助けになると感じる。
新しい言語やライブラリの学習コストが下がり、次々と新しいツールを取り入れることができるかもしれない。
Cursorは、単なるツールではなく、プログラミングのパートナーとして、バグを減らし、コード品質を高め、作業時間を短縮するAIアシストコーディングという新しい世界を実現してくれるだろう。
Cursorを開発しているAnysphereは、OpenAIのファンドから投資を受けており、今後もOpenAIのGPTモデルの進化とともに、さらに高機能に発展して行くものと期待できそうだ。
筆者自身、データサイエンス領域でPythonやRを使用していたバックグラウンドがあるが、Cursorによって次々新しい言語やフレームワーク、ライブラリを学習するハードルが下がり、これからのAIアシストコーディングの発展にとてもワクワクしている。