メインエディタをVSCodeからDoom Emacsに変えるまでにやったこと

この記事はソニックガーデン[ソニックガーデン 若手プログラマ Advent Calendar 2024](https://qiita.com/advent-calendar/2024/sonicgarden-junior)の25日目（最終日）の記事です。

# Doom Emacsとは？
簡単なDoom Emacsの概要が下記になります。
- Emacs の強力な拡張・設定フレームワーク
- デフォルトでVimのキーバインド（Evil-mode）を使える
- `~/.doom.d/init.el`のモジュールで設定を管理している

https://github.com/doomemacs/doomemacs?tab=readme-ov-file

# 筆者のメインエディタについて
Visual Studio Code（VSCode）を4年ほど使用しています。
他のエディタを使ったことはありません。

# なぜDoom Emacsに変えたの？
今年の7月からソニックガーデンに入社し、親方の下に弟子入り[^1]しました。
ソニックガーデンの習わしとして、弟子は親方の開発環境に揃えるとのことだったので、Doom Emacsに変える決意をしました。

初めてDoom Emacsを起動した時は、画面からどのコマンドを打てば良いのか分からず、「分からん...」となってしまい、そこから1ヶ月ほど触りませんでした...。

しばらくは慣れているVSCodeを使い続けていました。
しかし、Doom Emacsで高速に開発している親方を見て「自分もこうしてみたい」という気持ちから、再度Doom Emacsを触ることにしました。

# やったこと
何かを学べば良いのかわからないので動画と記事で概要を把握しました。
主にこの[動画](https://www.youtube.com/playlist?list=PLhXZp00uXBk4np17N39WvB80zgxlZfVwj)で概要を学びました。
Org-modeに関しては[公式マニュアル](https://orgmode.org/manual/index.html#SEC_Contents)や[こちら](https://mugijiru.github.io/.emacs.d/org-mode/)の記事を読んでいました。


## 1. Emacsをインストールする
[公式の手順](https://github.com/doomemacs/doomemacs/blob/master/docs/getting_started.org#with-homebrew)を見てEmacsをインストールしましょう
私はMacOSなので、emacs-macをインストールしました。

## 2. Doom Emacsをインストールする
こちらも[公式の手順](https://github.com/doomemacs/doomemacs/blob/master/docs/getting_started.org#doom-emacs)を見てDoom Emacsをインストールします。
これでDoom Emacsを起動できるはずです。

起動すると下記のような画面が開きます。
![CleanShot 2024-12-24 at 00.02.37@2x.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653935/a15f719c-a1a3-3597-fdf0-ff9847345530.png)

## 3. Vimキーバインドを覚える
私はVimキーバインドを覚えていなかったので覚えることから始めました。
[Vimtutor :: Vimschool](https://vimschool.netlify.app/introduction/vimtutor/)をひたすらやりました。
![CleanShot 2024-12-24 at 00.04.33.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653935/57c7a4c7-c2e2-d435-481e-ac855ac6c413.gif)


## 4. Emacsのキーバインドを覚える
Emacsのキーバインドも覚えます。
`M-x help-with-tutorial-spec-language`で`Japanese`を選択してチュートリアルを進めていきます。
![CleanShot 2024-12-24 at 00.08.09.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653935/5e87bf6f-c2c4-12d0-49af-8c28d12627ab.gif)

デフォルトではVimキーバインドになっていますが、EmacsとVimをハイブリッドに設定しても良さそうです。

## 5. 文字化けを直す
`M-x nerd-icons-install-fonts`をインストールすると解消しました。対応するフォントがなかったみたいです。

## 6. 言語を設定する
`~/.doom.d/init.el`にはmoduleがコメントアウトされているので、使用したいmoduleをコメントインしていきます。
各言語ごとにあるので、使いたい言語をコメントインしていきます。
自分は主にrubyを書くので`(ruby +rails +rbenv +lsp)`をコメントインしました。
![CleanShot 2024-12-24 at 00.11.11@2x.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653935/854dcdc6-aa80-7d77-dfab-adbee080502c.png)
他の方が[公開]((https://github.com/hlissner/.doom.d/blob/master/init.el))しているconfigを見るのも面白いと思います。

## 7. Magitを覚える
Magitを使ってからGitの操作が格段に楽になりました。
私自身はGitの操作には慣れていたので、「Magitではどう操作するのか？」ということを都度調べながらやっていました。
困ったらヘルプを開けば大体わかると思います。
あと、[git-timemachine](https://github.com/emacsmirror/git-timemachine)を使うと履歴を簡単に遡れるので便利です。

下記がブランチをチェックアウト、ステージング、コミット、プッシュするまでの流れです。
（イメージしにくいと思いますが、実際に使うと凄く便利です）
![CleanShot 2024-12-24 at 00.30.04.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653935/4d67c5ef-94ac-6360-dfbc-a77bec64eb70.gif)

## 8. Orgを学ぶ
ほんとうにいろんなことができます。
[公式](https://orgmode.org/)を読むと少しイメージがつくかもしれません。

自分はタスク管理とメモとして使っています。
個人的にはこの[記事](https://www.takeokunn.org/posts/permanent/20240112071806-my_relationship_with_org_mode_in_2023_and_how_navigate_in_2024/)に記載されているタスク管理がすごく良さそうだと思っています。

## 9. 実践する
設定が完了したら実践あるのみ。私は最初VSCodeをとDoom Emacsを半々で使っていました。
Magitに使い慣れてきた頃からDoom Emacsを使う比重が高くなり、今ではほぼDoom Emacsを使用しています。

# おすすめの設定
- [beacon](https://github.com/Malabarba/beacon)
    - カーソルがどこにあるかがわかりやすくなるので便利です。
- [org-bullets](https://github.com/sabof/org-bullets)
    - org-bulletsの階層構造の先頭にアイコンを表示させたりできます。
- [rails-routes](https://github.com/otavioschwanck/rails-routes.el)
    - railsのroute_pathを素早く書くことができます。
- [ruled-switch-buffer](https://github.com/kzkn/ruled-switch-buffer)
    - ViewComponentの定義とビューを切り替えてくれるくれます。すごく便利です。

## Emacsの見た目をカスタマイズする
この記事がおすすめです。
[Emacsモダン化計画 \-かわEmacs編\- \#LSP \- Qiita](https://qiita.com/Ladicle/items/feb5f9dce9adf89652cf)

# 終わりに
VSCodeからDoom Emacsに移行するまでに約4ヶ月ぐらいかかった気がします。
ありがたいことに親方をはじめ、社内の方々からアドバイスをいただけるので、詰まったことがあればすぐ相談ができる環境です。
自分でカスタマイズできるということが凄い魅力なので、そこをもっと楽しんでいければと思っています。

この記事で[ソニックガーデン 若手プログラマ Advent Calendar 2024](https://qiita.com/advent-calendar/2024/sonicgarden-junior)を終わります。読んでいただきありがとうございました。


[^1]: [上司と親方の違い、徒弟制度の再発明でプログラマ育成 – Social Change\!](https://kuranuki.sonicgarden.jp/archives/34363)