Devin と Cursor を業務利用するにあたって
ゼンクで IT アーキテクトをしているすぎもとです。先日短文で Devin の業務利用を開始しましたとだけお伝えしましたが、しばらく実際に業務内で利用してみたので、所感を発信しておきたいと思います。
Devin にくわえ、AI 統合開発環境である Cursor も併用して業務にあたっており、結論を先に言えば、かなり有益なソフトウェアであり、導入することで確実に今後のゼンクにおける開発業務のスタイルを変えていくものだなという印象です。
両ソフトウェアについて細かく掘り下げて所感を書いていきたいと思います。あくまでもすぎもとが現在抱えているプロジェクトにおいて試用した感想です。大きくはゼンクという会社においての開発スタイルや、すぎもとのプロジェクト内での立場によって得られた所感であり、別の組織や立場ではまた異なった感想を持たれるかも知れません。
Devin と Cursor について
まずは、Devin と Cursor とは何かについて簡単に紹介していきましょう。
Devin はコードの作成、デバッグ、リファクタリングを行い、複数のプログラミング言語やフレームワークに対応し、ユーザーの指示に基づいてソフトウェア開発タスクを自律的に実行するAIソフトウェアエンジニアです。
Cursorは、VSCodeをベースにしたAI搭載のコードエディタで、コードベース全体の理解、自然言語による編集指示、自動デバッグ、マルチライン編集の提案などの機能を提供するソフトウェアです。
(この紹介はおのおのの AI に自分を説明してもらった文章です)
2つとも AI をソフトウェア開発業務に利用出来るという点では同じような立ち位置ですが、現時点では使い分けをすることができるなというが印象です。
Cursor
分かりやすいのは Cursor のほうですね。これはようするに 「AI がすごいエディタ」です。VS Code にも Copilot 連携という AI 機能はあるんですが、Cursor はその支援がもっと多岐にわたって使えるイメージです。
Cursor はその場でプログラムを書いてくれるのが特徴で、リアルタイムでコードを書き換えてくれるのを見せてくれます。この辺りの体験を表す言葉として、 Vibe Coding という言葉があるらしいです。Vibeというのは英語で「雰囲気」みたいなことのようですね。スラングらしいので日本語には馴染みがないのですが、ファイルを次々に入れ替えながらどんどん勝手にコードを書いてくれる動作と眺めているとバイブコーディングという日本語のカタカナ用語にもしっくりくることばです。
ぼくはフロントエンドはそこまで明るくないので、プロジェクトを引き継いでフロントを修正仕様とするときにとても助かりました。
AIは「AとBは似た画面なので、これを統合せよ」。みたいな人間がやるときは共通部分を一つ一つ注意深く取り出してやる必要があるが、いっぽうでルールにしたがって機械的にすればよい、みたいなことはかなり得意です。Cursor ならいったん修正をいれてその箇所を差分表示してくれるので、それを受け入れるかどうかは画面を見ながらよいのです。Devin もプルリクにしてくれるので差分表示はできますが、画面のようなフィードバックを目で見てすぐに次の指示を出すような部分は Cursor が得意ですね。
修正が間違っていそうな場合はチャットを換え、言い回しやコンテキストを換えながら何回か同じことを聞いたらシンプルな解決を探してきてくれたこともありました。こういうケースは依頼を出すわれわれにもある程度の技術スキルが必要な気がします。
Devin
一方の Devin は自己紹介にあるように「AIソフトウェアエンジニア」です。どういうことか。彼は仮想的なエンジニアのように振る舞ってくれる AI なんですよね。自分の仮想環境を持っていて、Git リポジトリに対して、作業指示をするとその作業を自分の環境で行ってその結果をプルリクエストとして提示してくれます。
Devin にはいろいろ UI があるのですが今回の試用では Slack を使って全ての指示を出しました。あらかじめ Devin に GitHub のリポジトリを教えておきます(これは指示方法にかかわらず必須)。次に、 Slack と連携させ、Devin との DM でメンションをすることで Devin に作業指示を出すことができるようになります。
適用したプロジェクトは一年ほど前から開発をしているプロジェクトで、既にリポジトリにはこれまでの成果物が入っています。 Devin はここにあるデータを読み取ってコンテキストを理解するということだったので、最初に Devin のために README を拡充しました。この README 自体のひな形を Devin に作らせた上で、こちらで大幅に書き換えます。コーディングのや設計時の方針などを記載しました。
Devin とはスレッド形式でやりとりすることで、そのスレッドで過去に行った操作を全てコンテキストとして与えることができます。間違ってスレッド外で指示してしまったことがありますが、リポジトリ全てから作業内容を推測しようとして見当違いなことを返してきたので、同じ修正の延長であれば、スレッド内でずっと指示を出すのが良さそうです。
Devin は非同期的に作業をしているのが良い点です。Cursor は開発者がいまやろうとしていることを手伝ってくれますが、Devinは作業指示を出しておくと、裏で黙黙と働いてくれます。間違っていたときの調整のやりとりがすぐに反映されるわけではないので、リアルタイムで微調整したいものには向いていません。
今回は、特定の XML を読みこんで、それに対応したクラスにデータを保持するようなプログラムを依頼しました。簡単に見えて意外とむずかしく、読みこまれていなかったり、二度読みこんだりするバグがけっこう出ましたが、根気よくやりとりを続けていたら最終的にはほぼ完全なものを作ってくれました。ただ、このやりとりは 300 回近くにも及びました。
Devin は 10 タスクくらいは並行して依頼しても処理をしてくれるようですが、10 タスクも指示を出して帰ってきたものを評価するとなるとこれは人間側が無理じゃ無いかと思いますので、結局は数タスクごとになるかと思います。
両者の比較しての所感
Cursor はペアプロをしているような感覚、 Devin はプログラマを短時間雇っているような感じで使えます。
どちらも十分使えるソフトウェアになっているとますが、Devin を上手く活用するのはそこそこ難しいと感じました。今回みたいなたくさんファイルを作るような新機能のベースを作ってもらうのは Cursor だとファイルが多岐にわたりすぎるし、時間も掛かるので Devin こそ向いてる気がしますが、最初のベースとなる部分を作った後の修正は殆ど Cursor でも出来たような気がします。作成時のコンテキストを持っているのでその延長で修正依頼を出し続けたのですが、作成後に 300回弱もやりとりするのはなかなか大変でした。
開発機の前にいないときでも指示を出しておくことが出来るのは良かったです。PRさえ読めれば、Slackでやりとりをして軌道修正が出来るのは大きな強みです。
いっぽうで、 Cursor の Vibe コーディングはかなり助かりました。Cursorはいろいろなコンテキストをこちらから与えることでそれらを参照しながら修正案を提示してくれるので、ターミナルを与えればエラーメッセージも読んでくれますし、Gitを与えれば修正履歴を参照してくれたりします。
Cursor にも仮想環境がついて、バックグラウンドで修正をしてくれる機能が追加されるという話も聞きます。そうなると Devin じゃなければならないというところがちょっと減っていくのかなとは思ったりします。
料金について
試用した際にかかった料金についても簡単に。
Devin はベースが20ドルでそこから従量課金の仕組みなので、やることがなければ値段もかさみません。ただ、今回の300回のやりとりで、300ドルくらいかかりました。うまく指示が伝わらなくても課金はかさんでいくのでなかなか読めないところもありますね。
Cursor は 500トークンまでは固定でこちらも月20ドルです。実際にちょうど1ヶ月で500トークンくらいを消費していたようなので、追加トークンを買うか買わないかくらいのラインで収められそうです。Cursor は使うモデルを明示的に選択することも出来ますが、今回は Auto でやってます。質問に応じて適切なモデルを選ぶことができるひとならもっと安く出来たかも知れません。
今後のゼンクでの利用について
現行では Devin はプロジェクトによって利用の幅が変わりそうだなと言う感じで、このまま使い続けるかどうかはちょっと未知数です。今回は既存プロジェクトに適用しましたが、立ち上げプロジェクトに対して利用するとか、データ分析の案件に使うとか、そういうところで活用出来るかもしれないという感触はありますので、ピンポイントでプロジェクトに採用するとかはあるかもしれません。
Cursor は全社的に広げてもいいと思います。他メンバーの感触も伺いつつ広げていければと思っています。
ところで。
Cursor のライバルである Windsurf を OpenAI が買収したというニュースが最近ありまして、これは Windsurf もチェックしておかなければと思わされます。Cursor と Windsurf の違いなどについてはいろいろな記事があるのでそちらを見てもらうのが良いでしょう。どちらにも良い点悪い点があり、いまのところは好みの問題なのかなと思ったりはします。
さらに Cursor の分岐元である VS Code 、といえば GitHub Copilot ですね。こちらはコーディングのサポート面では後れを取っていましたが、エージェント機能が強化されたという話も聞きます。やはり本家ですからこれから機能がどんどん追い着いていくことになるかと思います。そうなったときに本家の安心感や料金体系が Cursor よりも安いことがメリットになることもあるかも知れません。こちらも目が離せません。