この記事は Emacs Advent Calendar 2025 の20日目の記事です。
こんにちは、noboです。Doom Emacs を使い始めて約1年と少しが経ちました。
今回は以前書いた メインエディタをVSCodeからDoom Emacsに変えるまでにやったこと の続編として
- Rails で開発する際に実際に使っている Tips
- 1年使った感触
についてまとめます。
Doom Emacs とは?
Doom Emacs は Emacs の設定フレームワークで、
- Vim キーバインド(evil)
- モダンなデフォルト設定
- モジュール単位での構成
が特徴です。
導入や全体像については、以前書いたこちらの記事に詳しく書いています。
参考
https://qiita.com/Hitoshi-Noborikawa/items/ab2e3533fd08ac6f38c5
今回は 「使ってみてどうだったか」 にフォーカスします。
Rails で開発する時に便利なパッケージたち
1年使って、結局 Rails 開発でよく使っているのはこのあたりです。
rails-routes
Rails の routes を検索して
- 対応する controller / action を探す
- 必要ならコードを追加する
といったことが Emacs 内で完結します。
ruled-switch-buffer
自分で定義したルールに基づいて、
ペアとなるファイルを切り替える パッケージです。
例
- controller ↔ spec
- model ↔ spec
- view ↔ controller
Rails の「対応関係」を意識せずにジャンプできるのが良いところです。
自分は下記のように view_component のファイルをジャンプして使っています(親方に教えてもらいました)。
(use-package! ruled-switch-buffer
:config
(ruled-switch-buffer-define view-component-rb
:matcher (lambda (fn) (string-match "_component.rb$" fn))
:mappers ((lambda (fn) (replace-regexp-in-string "\\.rb$" ".html.haml" fn))
(lambda (fn) (replace-regexp-in-string "\\.rb$" ".html.erb" fn))))
(ruled-switch-buffer-define view-component-haml
:matcher (lambda (fn) (string-match "_component.html.haml$" fn))
:mappers (lambda (fn) (replace-regexp-in-string "\\.html.haml$" ".rb" fn)))
(ruled-switch-buffer-define view-component-erb
:matcher (lambda (fn) (string-match "_component.html.erb$" fn))
:mappers (lambda (fn) (replace-regexp-in-string "\\.html.erb$" ".rb" fn)))
(map! :n "g F" #'ruled-switch-buffer)
)
projectile-rails
projectile と Rails の構造を組み合わせて、プロジェクト内を爆速で移動できます。
よく使うものを挙げると
-
SPC m r m→ model -
SPC m r c→ controller -
SPC m r v→ view -
SPC m r p→ spec
めちゃ便利です。
rspec-mode
RSpec を Emacs から直接実行できます。
-
SPC m t s→ カーソル位置 -
SPC m t v→ ファイル全体 -
SPC m t a→ 全テスト
ターミナルに移動して実行しなくて良いというのはかなりストレスなく開発ができます。
Org Mode
Rails の話よりも、実は Org Mode が一番好きです。
Org Mode でできること
- テキストを書く
- ソースコードを実行する
- ファイルやURLへのリンクを埋め込む
- タスク管理
- 時間管理
1年使って思ったのは
結局、思考はテキストで整理するのが一番強い
ということでした。
Claude Code も Emacs で使っている
最近は Claude Code を Emacs で使っています。
- 選択箇所を claude が把握してくれるので指示がラク
- 毎回画面がカクツクのでそこは気になっていますが...
「Emacs内で完結する」 というのが一番大きい価値だと感じています。
Magit は便利。でも RubyMine も便利
Magit はすごく使いやすいのですが、個人的には差分反映やコンフリクト解消、定義ジャンプなどは RubyMine が使いやすいなと感じることもあります。
基本的には Doom Emacs を使いつつ、日々いろいろなエディタ(ツール)を試しています。
ただ「考える」「書く」「まとめる」場所は Emacs にあります。
1年使って思うこと
一言で言うと 面白い です。
何が面白いかというと
- 「ちょっとこうしたい」を自分で作れる
- 自作 CLI のポモドーロタイマーを modeline に表示したり遊べる
- カスタマイズする楽しさが分かってきた
などがありますね。
来年にはもっと使いこなせるようにしていきたいと思います。
読んでくださりありがとうございました。