RubyMine と Cursor の「併用」という選択肢
こんにちは、リーナーの新規事業開発チームにいる corocn です。
RubyMine を長年愛用してきましたが、最近開発スタイルに変化があり、AI搭載エディタとして話題のCursor を導入し、現在は RubyMine と Cursor を併用しています。 Cursor は VS Code をベースとして開発されているエディタです。
会社では Cursor Business を導入し、データポリシーを中央集権的に管理した上で利用しています。
なぜ併用?
長年のRubyMineユーザーにとって、VS Code ベースのエディタへの完全移行は、やはり心理的なハードルが高いものです。 「エディタは一つに絞るべき」という固定観念も自分の中にありました。
しかしながら、RubyMineへのAI搭載が GitHub Copilot プラグインへの依存から進展がなく、そろそろ移行を検討しないと時代の流れに乗り遅れる焦りのようなものがありました。
そこで完全移行ではなく、まずは雑に併用でいいじゃん という考えて使ってみることにしたところ、RubyMineよりも圧倒的な効率で機能実装できてしまい、今ではメインのエディタになっています。
特に Claude 3.7 Sonnet がリリースされたタイミングで Cursor Agent が飛躍的に賢くなり、開発体験が良くなったので、やめられない体になってしまいました。
CursorにはRubyだけでなくTypeScriptやOpenAPI(TypeSpec)も書いてもらっています。分業しないスタイルの会社なので全部書きます。
併用するための準備
スムーズな併用のために、以下の点を調整しました。
ショートカットキーの統一
RubyMineの目玉機能に「Search Everywhere (Shift+Shift)」があるのですが、VS CodeでShift+Shiftにショートカットが設定できるようになっていたのが大きかったです。昔移行を試みたときにできなかった記憶があり、ここで第1のハードルは突破。
その他、Find Action, Quick Fix, Terminal, Go to Definition, Multi Cursorなど、よく使う機能のショートカットをRubyMineに合わせました。一部しかショートカットを統一していませんが、あんまり困ってないです。自分が割とマウスを使うような開発スタイルというのもあるかもしれません。
デフォルトショートカット主義なところがあるのですが、最近のエディタの設定はデフォルトからの変更差分も分かりやすくなっているので、今回の件で変更するハードルも下がりました。
拡張機能
Ruby開発用に「Ruby LSP」と「Ruby Test Explorer」を導入し、コード補完や定義ジャンプ、テスト実行をサポートしています。たくさん拡張入れなくても開発できているので、Ruby LSP すごいなーと感じています。
入れてる LSP(Addon) は次の3つで、Gemfile に記述しないと上手く動作しなかったので、development スコープに入れてしまっています。
gem 'ruby-lsp'
gem 'ruby-lsp-rails'
gem 'ruby-lsp-rspec'
Ruby Test Explorer を使うとワンクリック実行やビジュアル表示できて便利です。表示も RubyMine のテスト実行に類似していてカッコイイ。若干機能は劣りますが。
現在の使い分け
現在は機能開発を行うメインのエディタとして Cursor を使っています。AIに任せられないようなデバッグしたり、GUIでのGit操作、ローカルのDBを確認するときなどは RubyMine に切り替えています。
併用しているからこそ、RubyMineの優れた点も再認識しました。
RubyMine のほうが強いと感じていること
優れた全文検索UI
プロジェクト全体の検索結果の見やすさは抜群。
検索窓が別でポップし、インクリメンタルサーチできる体験が個人的には大きな差分です。
VS Code で同様の体験ができる拡張知りませんか?
正確なコードジャンプ
LSPよりも飛べる箇所が多く、正確だと感じています。
そもそも設定不要だし、LSPの立ち上げを待たなくてもいいのは良いです。
Railsの関連情報の表示
controller のアクション上に routes.rb の情報を表示してくれる機能が Ruby LSP だと上手く動かないなんてことがありました。どうやら一部の定義しか読めないみたいです(コントリビューションチャンス?)
パラメーターの可視化なんかはよくお世話になっています。
/posts/:id
が /posts/:post_id/comments/:id
に自動で変わるところとか分かりづらいので。
強力なデバッガ
ステップ実行や変数確認など、デバッグ機能は非常に優秀だと感じています。テスト実行からデバッグの流れがスムーズなので、がっつりテスト書いて & デバッグ回すときは、RubyMineでテストしています。
使いやすいサブツール
GUIのGit操作は依然としてRubyMineが快適です。慣れもあると思いますが。
ローカルのMySQLを閲覧するデータベースビューアもよく使っています。他のツールを入れなくていいのが良いですね。普通に使いやすいのでずっとこれです。
まとめ
Cursorは非常に強力なツールですが、長年慣れ親しんだRubyMineから完全に乗り換えるのは勇気がいるかもしれません。まずは「併用」から試してみることをお勧めします。ショートカットを少し調整するだけで意外と使えるようになりましたし、全体的な効率が上がっているので、いったりきたりもそれほど苦ではないという感想です。
冒頭でRubyMineへのAI搭載に進展がないと書きましたが、IntelliJ系のIDE にも Junie が来ているので、体験次第では戻すのも全然ありえるかなと思っているので今後に期待しています。
Discussion