今更Windsurf使ってみた

## はじめに

今日、個人開発する上で生成AIを使用することは欠かせないものだと思います。
その中でも近年ではエディタに生成AIを統合させて開発速度を早めるという流れが活発になっています。いわゆるエージェントです。

私も、現在Roo Code(旧Roo Cline) + Gemini 2.0 Flash (+Github Copilot)を使用しています。
この構成の利点は、APIのレート制限を気にしなければ基本的に無料でAIエディタを使用できることです。フリーランスの人なら有料版を検討するべきですが、個人開発なら十分です。ゆえに、有料版のコードエディタはこれまで触れることがありませんでした。

しかし、Xの生成AIユーザーの間では、CursorかWindsurfを使っている人が圧倒的に多いです。これだけ使っている人が多いのには理由があると思い、この度Windsurfを使ってみることにしました。
本記事では、実際にWindsurfを使ってみた感想を紹介します。

:::note warn
本記事ではWindsurf自体の説明は省略します。
あくまで使用感に焦点を当てて語ります。
:::

## Windsurfの課金プラン

個人利用の場合、Free、Pro、Pro Ultimateの3つのプランがあります。

| 機能 | Free | Pro | Pro Ultimate |
|------|------|-----|--------------|
| 料金 | 無料 | $15/月 | $60/月 |
| ユーザープロンプトクレジット | 5credit/月 | 500credit/月 | 無制限 |
| フローアクションクレジット | 5credit/月 | 1,500credit/月 | 3,000credit/月 |

各creditには、

- ユーザープロンプトクレジット：Chatで使用されるクレジット
- フローアクションクレジット：Cascade（エージェント）で使用されるクレジット

という違いがあります。ちなみにtoken数にかかわらず1回の生成で1creditが消費されます。エージェントではファイルを読み込むのにもcreditが消費されます。

:::note info
creditの消費量は、利用するLLMのモデルによって異なります。
例えば、DeepSeek R1では0.5creditと半分で済みます。逆にClaude 3.7 Sonnet Thinkingでは1.25credit消費されます。
(2025/03/02現在)
:::

記事執筆時点では基本的にClaude 3.7 Sonnetを使用することになると思うので、1credit=1回の生成と考えてください。つまりProプランでは1500回エージェントが使用できるということになります。
先ほど述べた通り、実際にはファイル読み込みによってcreditが消費されるので、実際の利用回数はこれよりも少なくなります。

ちなみに**インラインで変更事項を生成させるときはcreditを消費しません！**
この点は評価ポイントですね。

## Windsurfのメリット

### tab補完が優れている

GitHub Copilotではtab補完においてその行の補完、もしくは後続のコードの補完のみを行います。
新しくコードを書いていくときには良いのですが、既存のコードを修正するときには一行一行修正することになります。

しかし、Windsurfでは**ある箇所を変更したときに他の関連コードをtabで変更することができます。**
以下は、2つ目の要素を取得する関数を3つ目の要素を取得するように変更したときに、tab補完で関連箇所も修正する例です。

![windsurf_tab補完.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1857040/4f43a3ab-ca12-4fe4-be7b-861c80b80b50.gif)

この程度であれば簡単なのでぶっちゃけ不要ですが、大規模なコードになったときには非常に便利です。

### 一度の実行で複数のコードを変更する

WindsurfのCascadeでは一度タスクを投げると、複数のコードを変更してくれます。
例えば、〇〇機能を作成してと投げると、コード本体だけではなく、それを呼び出す別のコード変更や、追加した機能に必要なモジュールをインストールする環境構築のコマンドまで紹介するといったものです（実行は手動）。
ここは好みが分かれるかもしれませんが、基本的にコードの変更についてはノンストップで行い、ターミナルのコマンドを実行する前に変更点を確認してもらうというスタンスのようです。

厳密にはRoo CodeでもAuto Approveすれば同じことができますが、個人的にはまだエージェントに全てを任せるという考えではないため、この設定を有効にしたくないです。
Windsurfでは複数のコードを変更しますが、**各コードの変更点を個別に簡単に戻せる**という点でユーザーが関与しながら開発スピードを安全に上げることができると思います。

### コード変更時のエラーが出ない

Roo Codeを使用している時に最もストレスを感じるのが、コード変更時の差分不一致によるエラーです。
これがWindsurfでは今のところ発生していません。

このエラーが発生すると何度もLLMに問い合わせすることになるので時間がかかりますし、最悪エラーが解消されずに無限ループになります。
これが発生しないのは非常にありがたいです。

## Windsurfのデメリット

### たまに差分が表示されない時がある

正直、これのせいでWindsurfを使いたくないと思ってしまいます。

WindsurfのCascadeでコードを変更したときに、"Open diff"をクリックしてもたまに差分が表示されない時があります。
差分が見られないというのは致命的で、どのような変更を行ったかというのが一目で分からず、**知らない間に意図しない仕様になっていた**、ということがありえます。
定期的に全てのコードの振る舞いを確認すれば良いのかもしれませんが、個人的には非常にストレスを感じます。

もしかすると自分の環境固有の問題かもしれませんし、設定で変えられるのかもしれないので、解決策を知っている方は教えていただけると幸いです。

### 費用がかかる

「月15ドルくらい払えよ！」と言われるかもしれませんが、Roo Code + Geminiに慣れてしまった私にとってマネタイズしているわけでもない個人開発に15ドル（現在の日本円で2200円くらい）は正直高いです。
当然無料版のGeminiにはレート制限がありますが、それもGemini 2.0 Flashになったことで分間15リクエストに引き上げられました。私の思考速度では十分なリクエスト数です。

Windsurfの機能が素晴らしいことは間違いありません。プロのエンジニアやチームでの利用であれば、十分費用対効果が見込めますし、エンジニアを1人雇うよりも安価であることは確かです。
Geminiが無料で利用できる現状だからこその悩みかもしれません。

## まとめ

本記事ではWindsurfを使ってみた感想を紹介しました。
個人的な感想ですが、差分が表示されない問題が解決したら乗り換えを検討してもよいのかなと思いました。
繰り返しになりますが、エージェントにおいて差分が確認できないことがあるのは致命的です。

現状、`.windsurfrules`を全然書いていない状態で使っているので、Windsurfの真価を十分に引き出せていないように思えます。このあたりは使っていって評価が変わると思うので、せっかく課金したからには使い倒していきたいと思います。