WindsurfとCursorの機能比較
はじめに
今回はWindsurfとCursorの機能をざっくり比較してみました。
今回はWindsurfとCursorの公式ドキュメント、実際に触りながら、比較表を作っていきました。
(CursorはFreeプランなので、さわれていない機能はあるかもしれません。WindsurfはProプランです)
私はWindsurfを使用しているので、Windsurfの機能を基にして比較表が作成されております。
(Windsurf派の視点からCursorは何があって、何がないのかを調べてみました。)
この比較記事の経緯
AIエディタを触るきっかけは、会社からCursorを配布されたのがきっかけでした。
PHPStorm→Cursorに移行したのですが、当時PHPの開発体験はPHPStormの方が圧倒的に良いと感じており、Cursorに嫌気がさしていました。
主に下記の点でストレスを感じていた記憶があります。
- Refactorができない。「No refactorings available」といわれる
→PHP7.3だったので、Languageサーバーの支援が得られなかったのが原因と推測。
詳しい方がいれば、教えていただけると幸いです。 - 未useのクラスをコード内に書いた際に、エディタが自動でuseしてくれない
- VSCodeベースのUIに慣れていない(特にGit部分)
- etc(他にもあったと思いますが、思いだせませんでした。)
そこで、同僚に「WindsurfにPHPStormのPluginあるよ」と教えてもらったので、BOSSに直談判し、組織内で一人だけWindsurfを使っているという経緯になります。
PHPStormで開発しながらCascadeやAIのサジェストを利用できるので、私はWindsurfで満足していました。
その際に、「Cursorと比較して報告してね」というBOSSのお達しがあり、この記事を書いております。
CursorとWindsurfの機能比較
さて、ざっくりと比較していきたいと思います。
Tab機能の比較
Windsurf、CursorともにTabが重要な機能を担っております。
比較表
| No. | 機能 | 機能説明 | Cursor | Windsurf |
|---|---|---|---|---|
| 1 | 予測補完 | 次のコードを予測して提示する。 Tabを押すことで、その提示されたコードを反映できる |
⭕️ | ⭕️ |
| 2 | コードジャンプ | 現在のコードからAIが次のカーソルポジション(私たちが次に修正したいと思うコードの位置)を予測する。 Tabを押すと予測した位置にジャンプする |
⭕️ | ⭕️ |
| 3 | ファイルを超えてのコードジャンプ | 今編集しているファイルを超えて、修正位置を予測するTabを押すと予測した位置にジャンプする | ⭕️ | ✖️ |
| 4 | PeekView内でのタブ機能 | PeekView内でもタブを使ってコード補完、コードジャンプができる。 | ⭕️ | ⭕️ |
| 5 | TabによるImport文挿入 | JSなど[1]で、Importされていないモジュールを呼び出した際に、Tabで自動インポートできる。 | ⭕️ | ⭕️ |
| 6 | 文字入力途中でのサジェスト | 文字の入力途中であっても、その途中からサジェストが可能。 例:「cla」と文字を入力中 → 「class」を予測してサジェストしてくれる |
⭕️ | ⭕️ |
| 7 | TerminalがTab補完のコンテキストに入る | Terminalの実行結果などをコンテキストとして認識し、エディタ上でその結果をサジェストすることができる。 | ✖️ | ⭕️ |
エディタ上での機能
コードエディタ上(コード記載可能部分)で実行できる機能面での比較してみます。
比較表
| No. | 機能 | 機能説明 | Cursor | Windsurf |
|---|---|---|---|---|
| 1 | 選択テキスト部分をAIエージェントのコンテキストに含める | 選択したテキストをAIエージェントのプロンプトにコンテキストとして含めることができる | ⭕️ | ⭕️ |
| 2 | ハイライト行、カーソル位置に対してのAI呼び出し | ハイライト行、カーソル位置に対してコードエディタ上で簡単にAIに指示を出し、コード修正ができる AIエージェント用のサイドパネルからではなく、コードエディタ上で簡単に行える |
⭕️ | ⭕️ |
| 3 | 一般的なAI操作のショートカット[2] | コードエディタの上部にボタンがあり、一般的なAI操作のためのショートカットが提供されている。 Windsurfには「Explain」「Refactor」「Add Docstring」ボタンがある。 |
✖️ | ⭕️ |
| 4 | コピー&ペースト時の言語変換[3] | 他の言語で書かれているコードをコピー&ペーストすると、ペースト先のファイルの言語に書き換えてペーストしてくれる。 例: 1.test.pyの関数aをコピー 2.test.goに貼り付け 3.関数aがgo言語で書き直されてペーストされる。 |
✖️ | ⭕️ |
| 5 | 編集差分の表示とレビュー | AIが編集したコードの差分表示とそれを適用するかどうかレビューできる。 一行一行確認して修正を適用することも、一括適用もできる |
⭕️ | ⭕️ |
Terminal上での機能
エディタのTerminal機能面での比較です。
比較表
| No. | 機能 | 機能説明 | Cursor | Windsurf |
|---|---|---|---|---|
| 1 | AI呼び出し機能 | Terminal上でAIに指示を与え、Terminalで実行するコマンドを作成、編集させることができる。 | ⭕️ | ⭕️ |
| 2 | Terminal上での選択部分をAIエージェントのコンテキストに含める | Terminal上で選択した部分をAIエージェントのプロンプトにコンテキストとして含めることができる。 | ⭕️ | ⭕️ |
WebページのPreview機能
エディタのWebページプレビュー機能面での比較です。[4]
比較表
| No. | 機能 | 機能説明 | Cursor | Windsurf |
|---|---|---|---|---|
| 1 | Webページプレビュー | エディタ上でWebページをプレビューできる。 WindsurfはIDE、Windsurfブラウザ上でプレビューできる。 |
✖️ | ⭕️ |
| 2 | ブラウザの要素、エラーをAIエージェントのコンテキストとして含める | ブラウザ上で表示されている要素、エラーをAIエージェントのコンテキストとして含めることができる。 Windsurfでは、IDE上、Windsurfブラウザ上で可能 |
✖️ | ⭕️ |
Git機能
Git関連の機能面での比較です。
比較表
| No. | 機能 | 機能説明 | Cursor | Windsurf |
|---|---|---|---|---|
| 1 | AIによるコミットメッセージの作成機能 | Gitステージ上にあるファイルからコミットメッセージを自動で作成してくれる。 | ⭕️ | ⭕️ |
AIエージェント機能
Windsurf/Cursorサイドパネルで開かれるAIエージェント機能面での比較です。(Windsurfでは「Cascade」と呼ばれています)
比較表
| No. | 機能 | 機能説明 | Cursor | Windsurf |
|---|---|---|---|---|
| 1 | AIモデルの選択 | プロンプトを実行するモデルを選択できる | ⭕️ | ⭕️ |
| 2 | Write/Chat モード | Windsurfには「Write」「Chat」モード Cursorには「Agent」「Ask」「Manual」「Custom」(ユーザ定義)モードがある |
⭕️ | ⭕️ |
| 3 | ツールコール | AIがプロンプトを実行中にMCPサーバ、WebSearchなどのツールを呼び出せる | ⭕️ | ⭕️ |
| 4 | AIの修正を巻き戻す | AIが修正したコードを修正前に巻き戻すことができる。 | ⭕️ | ⭕️ |
| 5 | リアルタイムのコンテキスト認知 | 途中でコードを書いて、途中からAIエージェントに書かせるということができる。 プロンプトにコンテキストを含める必要はなく、「続けて」というだけで可能。 |
⭕️ | ⭕️ |
| 6 | Problemsパネルの内容をプロンプトのコンテキストとして含める | エディタのProblemsパネルの内容をプロンプトのコンテキストとして含めることができる。 | ✖️ | ⭕️ |
| 7 | 指定したファイルを無視する | 無視したいファイルを Windsurfは「 .codeiumignore」ファイルCursorは「 .cursorignore」ファイルに記載する。 |
⭕️ | ⭕️ |
| 8 | CheckPoint機能 | AIが行った修正に対して、スナップショットを取り、いつでもスナップショットの状況に戻せる。 | ⭕️ | ⭕️ |
| 9 | 会話エクスポート機能 | AIの会話履歴をエクスポートできる。 | ⭕️ | ⭕️ |
| 10 | Linterの導入 | AIが自動でLintエラーを修正することができる。 | ⭕️ | ⭕️ |
| 11 | 処理の終了時に音を鳴らすことができる | AIが修正を終えた際に、音を鳴らすことができる。 | ⭕️ | ⭕️ |
| 12 | 会話履歴の共有 | AIとの会話履歴を共有できる。 Windsurfでは、Teamsプラン、Enterpriseプランで可能 |
✖️ | ⭕️ |
| 13 | 会話の複製 | AIとの会話履歴を複製できる。 | ⭕️ | ✖️ |
| 14 | 古いコンテキストのサマライズ | AIとの会話がコンテキスト制限を超える場合に古い会話をサマライズして、コンテキスト制限を超えないようにできる。 | ⭕️ | ✖️ |
| 15 | 会話の履歴管理 | 過去の会話の履歴を管理できる。 | ⭕️ | ⭕️ |
| 16 | AIの複数同時起動 | ウィンドウのタブで複数のAIを同時に起動できる。 | ⭕️ | ⭕️ |
| 17 | アプリケーションのデプロイ | ウェブアプリケーションのデプロイプロセスをボタンから実行できる。 Windsurfの場合、Netlifyへデプロイ可能 |
✖️ | ⭕️ |
| 18 | ルールの定義 | AIに守らせるルールをファイルに記述できる | ⭕️ | ⭕️ |
| 19 | メモリ | AIが自動的に生成したルールを管理する | ⭕️ | ⭕️ |
| 20 | AIに実行させるプロンプトをコマンド化できる | Windsurfの場合、Workflowという機能で可能。 | ✖️ | ⭕️ |
| 21 | MCPの対応 | MCPサーバが導入できる。 | ⭕️ | ⭕️ |
| 22 | Planモード | AIが修正を実施する前に計画をたてて、それを実行する | ⭕️ | ⭕️ |
| 23 | 音声入力モード | 音声入力でAIに対するプロンプトを入力できる。 | ✖️ | ⭕️ |
| 24 | 名前付きチェックポイント | チェックポイントに名前をつけることができる。 | ✖️ | ⭕️ |
| 25 | ブラウザTabをAIとの会話コンテキストに含める | Windsurfブラウザ上で開いているタブをAIエージェントのコンテキストに含めることができる。 | ✖️ | ⭕️ |
| 26 | Maxモード | AIのコンテキストウィンドウを最大化できる。 | ⭕️ | ✖️ |
その他機能の比較
比較表
| No. | 機能 | 機能説明 | Cursor | Windsurf |
|---|---|---|---|---|
| 1 | コンテキスト認知 | AIで修正する際のコンテキストとしてコードベース全体を理解する機能 | ⭕️ | ⭕️ |
| 2 | ナレッジベース | 共有コンテキストとして、GoogleDocsの内容をAIエージェントから参照できる。 WindsurfのTeams、Enterpriseプラン向け。 |
✖️ | ⭕️ |
| 3 | バックグラウンドエージェント | 非同期のAIエージェンの呼び出しを行い、リモート環境でコードを編集、実行することができる。 | ⭕️ | ✖️ |
| 4 | バックグラウンドエージェントSlack連携 | バックグラウンドエージェントをSlackから使うことができる | ⭕️ | ✖️ |
| 5 | Web&Mobile対応 | Webブラウザ、モバイル端末でCursorのAIエージェント機能を利用可能。 | ⭕️ | ✖️ |
| 6 | AIコードレビューBOT | リポジトリにAIBOTを導入してコードレビューをさせることができる。 Windsurf、CursorともにGitHubに対応 |
⭕️ | ⭕️ |
| 7 | JetBrainsプラグイン | AIエージェント機能をJetBrainsプラグインとして提供する。 | ✖️ | ⭕️ |
AIとの会話で使用できるモデルの比較
両エディタで利用可能なAIモデルをざっくり比較しています。
比較表
| AIモデル | WindsurfPro | CursorPro | Windsurf Teams | Cursor Teams |
|---|---|---|---|---|
| SWE-1 | ⭕️ | ✖️ | ⭕️ | ✖️ |
| SWE-1-lite | ⭕️ | ✖️ | ⭕️ | ✖️ |
| Cursor Small | ✖️ | ⭕️ | ✖️ | ⭕️ |
| Claude 3 Opus | ✖️ | ⭕️ | ✖️ | ⭕️ |
| Claude 3.5 Haiku | ✖️ | ⭕️ | ✖️ | ⭕️ |
| Claude 3.5 Sonnet | ⭕️ | ⭕️ | ⭕️ | ⭕️ |
| Claude 3.7 Sonnet | ⭕️ | ⭕️ | ⭕️ | ⭕️ |
| Claude 4 Sonnet | ⭕️ | ⭕️ | ⭕️ | ⭕️ |
| Claude 4 Opus | BYOK [5] | ⭕️ | ✖️ | ⭕️ |
| OpenAI GPT-4o | ⭕️ | ⭕️ | ⭕️ | ⭕️ |
| OpenAI GPT-4o mini | ✖️ | ⭕️ | ✖️ | ⭕️ |
| OpenAI GPT-4.1 | ⭕️ | ⭕️ | ⭕️ | ⭕️ |
| OpenAI GPT-4.5 preview | ✖️ | ⭕️ | ✖️️ | ⭕️ |
| OpenAI o1 | ✖️ | ⭕️ | ✖️️ | ⭕️ |
| OpenAI o1-mini | ✖️ | ⭕️ | ✖️️ | ⭕️ |
| OpenAI o3 | ⭕️ | ⭕️ | ⭕️ | ⭕️ |
| OpenAI o3-mini | ⭕️ | ⭕️ | ⭕️ | ⭕️ |
| OpenAI o4-mini | ⭕️ | ⭕️ | ⭕️ | ⭕️ |
| DeepSeek V3 | ⭕️ | ⭕️ | ✖️ | ⭕️ |
| DeepSeek V3.1 | ✖️ | ⭕️ | ✖️ | ⭕️ |
| DeepSeek R1 | ⭕️ | ⭕️ | ✖️ | ⭕️ |
| Gemini 2.0 Flash | ⭕️ | ✖️ | ⭕️ | ✖️ |
| Gemini 2.0 Pro | ✖️ | ⭕️ | ✖️ | ⭕️ |
| Gemini 2.5 Flash | ⭕️ | ⭕️ | ⭕️ | ⭕️ |
| Gemini 2.5 Pro | ⭕️ | ⭕️ | ⭕️ | ⭕️ |
| xAI Grok-2 | ✖️ | ⭕️ | ✖️ | ⭕️ |
| xAI Grok-3 | ⭕️ | ✖️ | ✖️ | ✖️ |
| xAI Grok-3 Beta | ✖️ | ⭕️ | ✖️ | ⭕️ |
| xAI Grok-3 mini | ⭕️ | ⭕️ | ✖️ | ⭕️ |
| xAI Grok-4 | ✖️ | ⭕️ | ✖️ | ⭕️ |
CursorとWindsurfに実際にコードを書かせてみた
比較に全くなっておりませんが、気になったのでやってみました。
ポーカーゲームをWindsurf、Cursorに書いてもらいました。
初期のプロンプトは一緒で、プランはWindsurf ProとCursor Pro、モデルはGPT-4.1を使いました。
(2ヶ月前ぐらいに実施したので、今はもっといい結果になるかもしれません。記録を掘り返しながら記載しております)
1回目、Cursor、WindsurfのAIが「できました」と言った時点で実行してみると、双方アプリ画面が表示されず。
その後、GPT-4.1ではダメだと思い、CursorはClaude 4 Sonnet、WindsurfはClaude 3.7 Sonnetを使用してバグを修正させました。
(このときはWindsurfからClaude 4が使えなかったはず。なぜ、両方Claude 3.7 Sonnetを使用していないのかは謎です。。。)
それで、できたのが下の画像になります。

Windsurfが書いたポーカーゲーム

Cursorが書いたポーカーゲーム
気になったところ
GPT-4.1を使っていた時に、Windsurfはホイホイと実行していくのに対し、Cursorは「次に実行するステップの確認」をしてきたところである。
筆者はその問いかけに「おまかせで頼む」と返してました。
もう一つ気になった点は、cursorのGPT-4.1がコーディング途中でコードベースを破棄して、create-react-appのコマンドを実行をし始めたところです。
yes/noを問われているところでコマンド実行が止まっており、要は「うまく実行されないので、create-react-app使ってゴリゴリ書きますわ」とのことでした。
これにはびっくりしました。AIだからこそできる大胆さなのかもしれません。
まとめ
ここまでざっくりと比較してみてきましたが、どちらも大体同じようなことができるなという印象でした。
強いていうのであれば、Windsurfはコンテキスト認知の部分が強く、Cursorはより細かい設定ができるのかなという所感です。
私個人としては、Windsurfが好きです。
これには、PHPStorm→Cursorに乗り換えた際に、Cursorを使った当初のPHPの開発体験が悪く、WindsurfのJetbrainsプラグインに救われた経験が大きく影響していると思います。
Windsurfに関して言えば、Cognitionによる買収によりCursorで言うところのバックグラウンドエージェントがDevinで実装できると思っています。
それにより、さらに機能が充実していくのではと考えております。(DevinはSlackから指示できますし)
最近、会社では話題のClaudeCodeを使う流れになっております。
私もClaudeCodeのMaxプランを使い始めましたが、ClaudeCodeとWindsurfをどう使い分けるのか、まだ試行錯誤しております。
個人的にはClaudeCodeに任せっきりもいいのですが、自分の手と頭をつかってゴリゴリコードを書くのも好きなので、これからもWindsurfを使っていこうと思います。
Kiroなど、どんどん新しいものがでてきて置いてけぼりになりがちですが、会社の仲間と一緒に頑張って追いかけていきたいです。
参考
-
言語によっては対応していないものもあり。Cursorの公式ページには「TypeScript」「Python」対応の記載がありました。 ↩︎
-
BYOK:Bring Your Own Key(自身のAPIキーを使用) ↩︎
Discussion