Cursorとは何か
- CursorはVisual Studio Code(VS Code)のフォークで、コアUIにLarge Language Model(LLM)ベースの機能が統合されている
- 独自製品であり、無料枠とサブスクリプションの選択肢がある
- 主な機能:
- Tab自動補完: サブスクライバーのみに提供されるコード自動補完と、次に推奨される操作への移動を行う独自のファインチューニングモデル
- インライン編集: 無料・有料ユーザーが利用できるチャットベースのインターフェースで、diffビューを使って選択したコードを編集
- チャットサイドバー: 無料・有料ユーザーが利用できるチャットベースのインターフェースで、より長い議論のためのスペースを提供
- Composer: 複数ファイルにまたがる大規模なリファクタリング向けに設計されたチャットベースのインターフェースで、無料・有料ユーザーが利用可能
Tab自動補完
- コード作成時に最も自然に使え、最も時間を節約できる機能
- 1行、複数行、または関数全体の補完を提案するだけでなく、次の編集のために移動すべき次の行も提案
- Tabキーを繰り返し押すことで、ファイル全体にわたる関連変更を自動補完できる
- コードのリファクタリングツールとして使える
- ときには自律的にバグを見つけ、修正を提案することもある
- 文字列を引用符で囲むと、内容を適切にエスケープする
- 関数シグネチャと任意のdocstringだけで関数全体を書ける
- 補完候補の表示が非常に速い
- 欠点:
- 提案に気づかず入力を続けると、補完候補が消えてしまう
- 誤った補完を意図的に拒否したのに、後で別の補完を受け入れると、以前拒否した提案がひそかに適用される場合がある
インライン編集、チャットサイドバー、Composer
- 基盤モデル(主にClaude 3.5 Sonnetを使用)との相互作用は非常に似ており、違いはユーザーインターフェースにある
- インライン編集はCtrl-K/Cmd-Kで呼び出し、望む変更を入力した後、受け入れるか拒否できるdiffを得られる
- チャットサイドバーはCtrl+L/Cmd+Lで開き、何度もやり取りできるより広いスペースを提供する
- Composerは複数ファイルにまたがるリファクタリング向けに設計されており、複数ファイルのdiffを1つずつ確認できる、より良いユーザー体験を提供する
.cursorrulesファイル
- ワークスペースのルートに置かれた.cursorrulesファイルの内容は、追加コンテキストを提供するために各種チャット形式に常に含まれる
- リポジトリのコーディング標準、共通パッケージ、その他のドキュメントをLLMに知らせるために使われる
- Cursorの大きな障害の1つである、編集中のファイルにすでに存在しない限りコーディングスタイルやパターンに従わないという問題の解決に役立つ可能性がある
- 現在はワークスペースごとに1つのファイルしか持てないため、複数言語のコードを含むモノレポは、小さく一貫したスタイルのコードセットを持つ小規模リポジトリより設定が難しい
- .cursorrulesファイルはチャット形式でのみ使われ、Tab自動補完には使われない
ワークフローの変化
- コードをより速く書けること自体が最も興味深い点ではない
- 実際には、コードを書くことそのものはボトルネックではない
- 本当の価値は、コードの書き方を変えることにある
- 変化した点:
- 新しいライブラリやフレームワークを探すことが大幅に減った
- 小さなユーティリティであれば、汎用ライブラリを取り込むより、LLMに合わせた要件向けに書かせるほうが簡単
- 多くのライブラリは定型コードを減らすためだけに存在しているが、それをLLMが代替できるので、コストに見合う価値があるとは感じにくい
- 自分のコードでDRY(Don't Repeat Yourself)の原則を厳密に守ることへのこだわりが薄れた
- 早い段階で抽象化を定義すると、後で多くの技術的負債を生む可能性がある
- 関数やクラスにしようとせず、他のコードを参照しながら多くのコードを作れるため、柔軟性が高くなる
- あまり馴染みのない言語やフレームワークを使うことへの抵抗がかなり減った
- たとえばRを使うのは難しかったが、今では欲しい可視化を説明すれば、適切なデータ操作とggplotによる可視化を得られる
- より大きなコードベースに統合する前に、小さなコンポーネントを素早く反復するようになった
- これはLLMの限界に対処するためでもあるが、以前は考えもしなかった興味深い作業スタイルも開く
要約
- 現時点では、CursorはLLMコーディングアシスタントの潜在力を示す最良の例
- この種のツールがどのように価値を持ち得るかを探りたいなら、Cursorを試してみる価値がある
GN⁺の意見
- CursorはLLMベースのコーディングツールの潜在力を示す良い事例に見える
- 特にTab自動補完機能は、コード作成時に自然に使えて大幅な時間短縮につながるため魅力的
- チャットベースの機能も、リファクタリングやコード変換などに有用に使えそう
- ただし、まだ初期段階であるだけに限界も見られる
- 一貫したコーディングスタイルの適用が難しい点
- モノレポなど複雑なプロジェクト構造での使い勝手の問題
- 無料ユーザーと有料ユーザーの間で機能差が明確でない点
- 類似機能を提供する他のツールとしてはGitHub Copilot、Tabnine、Kiteなどがある
- 各ツールに長所短所があるため、プロジェクトの特性や個人の好みに応じて選ぶとよい
- LLMベースのコーディングツール導入時には、次のような点を検討する価値がある
- 開発チームの受容性: 新しいツール導入に対する抵抗感がないか
- 学習コスト: ツールの使い方を習得するのにどれくらい時間がかかるか
- 保守性: ツールで生成したコードを理解し、保守しやすいか
- コード品質: 実際にコード品質向上に役立つか
- 費用対効果: 生産性向上の効果が導入・維持コストを相殺できるか
6件のコメント
Cursor Chatが鍵です。docstringを作ってくれるのがかなり便利でした。
Cursor を使ってみると、Copilot の自動補完がとても遅く感じます。しくしく
タブ自動補完は有料ユーザーだけが使えるんですか?
サブスク登録者限定なのはそのとおりですが、無料プランもあり、月に2000回の自動補完を提供しています。私はその形で3か月使っています。
https://www.cursor.com/pricing
はい
記事に書いてありますよ(笑)