EmacsのStarter Kitを試してみる

2024/12/24に公開されました。
2024/12/24に更新されました。

これからEmacsを始める人におすすめのStarter Kitを試してみます。


author: komem3

今回の趣旨

Emacsは普通に始めるには戸口が狭いです。チュートリアルも存在しますが、これをやっただけでは己のレベルが上がっても目の前のEmacsは貧弱です。 設定をしてこそのEmacsですが最初からEmacsの設定をするにはキツイ。そんな人の為のStarter Kitが数々出ています。今回はそんなKitを試して紹介してきます。

簡単に言えば僕の考えた最強の設定です。他人の最強に乗っかっていきましょう。

今回はこちらに載っている上4つを試していきます。これらはEmacs界でも有名所でありメンテもされているので、入れて動かないってことはないはずです。

また、今回の動作環境は GNU Emacs 29.4 (build 1, aarch64-apple-darwin21.6.0, NS appkit-2113.60 Version 12.6.6 (Build 21G646)) of 2024-08-03 になります。

Purcell’s .emacs.d

まずは、Purcell’s .emacs.dです。個人のEmacs設定とあるだけ、今回紹介するなかで一番小さいパッケージです。 早速入れていきます。

READMEに従いインストールを行ない、Emacsを起動するとライブラリのインストールとコンパイルが始まりました。大体10分ぐらいで完了し、Emacsが開けました。

purcell's emacs

カラーテーマもこの作者が自作しているようで思想の強さが見えます。しかし、カラー以外の見た目はバニラとあんまり変化ないですね。なんか警告が出ていますがご愛嬌ということで、ちょっと触ってみます。

まず、alt keyで M-x が反応しなくてびっくりしました。 windows keyに変更しているようなのですが、デフォルト設定をいじられると驚きます。
ファイル間の移動などは vertico(ミニバッファの補完パッケージ) や projectile(プロジェクト管理パッケージ) が入っているので快適です。

tsxファイルの見た目は以下のような感じです。行の文字数が80文字になるように線が入っているんですかね?思想強いです。

purcell's tsx view

カスタマイズをする場合は、.emacs.d/lisp/init-local.el ファイルに設定を記載するようです。 eglotというlspクライントが設定は書いてあるけど、使うようになっていなかったので、以下のように設定してみました。

(add-hook 'typescript-mode-hook 'eglot-ensure)

(provide 'init-local)

このままじゃ、先のtsxファイルではエラーが出るのですが、その話は面倒なので割愛します。というか初心者に eglot は厳しくないかって気持ちです。

所感

ちょっと思想がありますが、最低限Emacsで開発を行なうために必要な設定が入っている印象でした。 ただ、その分ドキュメントなどが殆どなく、何のパッケージが入っていてどう使えばいいのかが分かり辛かったです。

最低限のパッケージでモダンなEmacsを触ってみたいって方にはよさそうですが、ここからEmacsや各パッケージを学ぶことは難しいように感じました。

Emacs Prelude

次は Emacs Preludeです。かの有名なprojectileの作者のパッケージです。READMEには以下のように書いてあり期待が膨らみます。

The final product offers an easy to use Emacs configuration for Emacs newcomers and lots of additional power for Emacs power users.

最終製品は、Emacs 初心者向けには使いやすい Emacs 構成を提供し、Emacs の熟練ユーザー向けには多くの追加機能を提供します。(google 翻訳)

例の如くインストールからの起動します。こちらも大体10分ぐらいで開けました。

prelude

こちらもあまりバニラと変わらない見た目ですが、Purcell’sに比べてよりバニラに近くなっています。今回のカラーテーマはzenburnみたいです(Why Zenburn? I (and lots of hackers around the world) find it pretty neat for some reason. らしい)。モードライン、スクロールバー、デフォルトならではの味を感じます。 警告は最早様式美なのか?という疑問が出ますが早速触っていきます。

普通にalt keyで M-x が効いたのにまず安心しました。これだよねこれ。
verticoやprojecitleは当り前のように入っています。

例の如くtsxファイルです。

prelude tsx

これはシンタックスハイライトを切るぐらい思想が強い訳ではなく、普通に設定が有効化されていないのでただのテキストファイルとして表示されています。 デフォルトで有効化されているモジュールは .emacs.d/sample/prelude-modules.el の内容みたいです。 このファイルを .emacs.d/personal にコピーして、設定を追記していくようです。

(require 'prelude-shell)
;; (require 'prelude-scss)
(require 'prelude-ts) ;; ← これのコメントアウトを外した。
(require 'prelude-web) ;; Emacs mode for web templates
(require 'prelude-xml)
(require 'prelude-yaml)

色が付きました。 prelude_syntax.png

先程同様lspは有効化されていませんが、tide(tsserverのEmacs Client) が有効化されているので、快適な開発ができます。補完や参照ジャンプ(M-.)など当り前のことができます。 ちなみに、goの有効化を行ないgoのコードを見た所lsp(lsp-mode)はしっかりと効いていて快適でした。

所感

デフォルトは最低限のカスタマイズに留めつつ、パッケージの追加を簡単にできる点はかなりよかったです。また、追加されるパッケージの設定も良さげに感じました。 ドキュメントもあるためそこまで放り出される感じはしなかったです。

ショートカットの一覧がドキュメントに記載してあるのも良いです。

総じて、初心者にはかなりおすすめできるStarter Kitでした。カスタマイズのやる気はあるけど、最初はカスタマイズ難しいし (.><.) って方におすすめに感じました。カスタマイズのやる気がない方は、この後紹介する「僕の考えた最強の設定」がおすすめです。

Spacemacs

ここからはEmacsではありません。僕の考えた最強の設定でEmacsがSpacemacsに変わります。 というわけで、Spacemacsをインストールして開いていきます。

いきなり動かせるのでびっくりしました。勝手に全画面になって、最初に操作を要求してくるあたり格の違いを感じます。

spacemacs start

まずはキーバインドを選択します。EmacsかVim(Evilというパッケージの機能)のキーバインドを選べます。Evilはあんまり好きじゃないのでEmacsにします。

次に設定の選択です。推奨か最小限かを選べます。今回は推奨でやっていきます。 推奨を選択するとパッケージのダウンロードが始まりました。

5分ぐらいで終わりました。速いです。Emacsを再起動しないとパッケージが読み込まれなかったり、Source Code Pro のフォントがなくてエラーが出ていたりするので、フォントをインストールしてから再起動しました。 起動画面がおしゃれです。

spacemacs start finish

ミニバッファの補完はhelmです。以前はivyかhelmを選択させていましたが、デフォルトでhelmになっています。調べたらhelmをカスタマイズして色々とやっているからみたいです。実際にかなりカスタマイズされていてすごいです。
以下はhelmのレポジトリにある画像です。

helm default

そして以下が、Spacemacsのhelmです。かなりカスタマイズされており、UIも親切な感じになっています。

spacemacs helm

Beginners tutorialQuick startなど、動かすためのドキュメントが用意されているので、軽く一読します。

ドキュメント曰く、ショートカットキーはEmacsキーバインドなら M-m にVimなら SPC に割り振られているようです。

設定は $HOME/.spacemacs に記載するようです。
色々と設定ができますが、基本は dotspacemacs-configuration-layers に使いたいレイヤーを記載すればいいようです。設定できるレイヤーはここから見ることができます。
今回はコメントアウトされている推奨っぽいレイヤーを有効化しつつ、typescriptやtsxを使えるようにします。

dotspacemacs-configuration-layers
'(markdown
;; ----------------------------------------------------------------
;; Example of useful layers you may want to use right away.
;; Uncomment some layer names and press `SPC f e R' (Vim style) or
;; `M-m f e R' (Emacs style) to install them.
;; ----------------------------------------------------------------
auto-completion
better-defaults
emacs-lisp
git
helm
lsp
markdown
multiple-cursors
org
(shell :variables
      shell-default-height 30
      shell-default-position 'bottom)
spell-checking
syntax-checking
version-control
treemacs

javascript
react
)

記載後に2回再起動します。開くと以下のような感じです。

spacemacs tsx

解像度が見辛いので、ウィンドウを小さくしたら、モードラインが少し変わりました。マウスのホバーで変数定義も見ることができてイケイケな感じが出ています。

spacemacs short

所感

僕の考えた最強のEmacsを体感できました。ドキュメントも結構親切で設定も簡単なので、細かい所まで至れりつくせりな感じでした。ファンが多いのもうなずけます。 また、凄いカスタマイズしていますが、デフォルトの挙動を変えたりしているわけではないので、違和感などなくすんなり入れたり、ユーザカスタマイズしやすいように色々と工夫されているのも良かったです。

気になる点としては、カスタマイズしまくっている影響で最近流行っているパッケージを導入できていないのが気になりました。そのため、全体的にちょっと重い挙動になっているように感じました。

IDE慣れしていて、エディタをカスタマイズする気がなく、既存の大量の機能を享受したいユーザにおすすめに感じました。 VS Codeから乗り換え先には良さそうでした。

Doom

今回紹介する最後の最強設定は Doom です。

It is a story as old as time. A stubborn, shell-dwelling, and melodramatic vimmer—envious of the features of modern text editors—spirals into despair before he succumbs to the dark side. This is his config.

頑固なVim星人にモダンなエディタを使わせてやるよってことで、VimmerのためのEmacs Starter Packです。SpacemacsでもVimキーバインド使えますが、こんな言い方していないので、既に思想の強さを我々に伝えてくれています。楽しみですね。

というわけでインストールしていきます。初めてEmacsを開かないでCLI上で、初期化が始まりました。EmacsはGUIアプリなんだという方々は許せない挙動です。

doom init

初期化は5分かからないぐらいで終わりました。Spacemacs同様速いです。Spacemacsよりは簡素なスタート画面です。

doom start

DoomはVimmerの為を謳っているだけあり立ち上げた瞬間はVimのキーバインド(Evil)固定です。 フォントがなかったようですが、読み込み用のコマンドがあるので、それを実行しました。

M-x nerd-icons-install-fonts

ミニバッファの補完はverticoのようで、コード補完などは corfu を使用しており、思った以上にモダンな設定になっています。

doom vertico

ドキュメントは大体これを読めばよさそうです。
ショートカットは基本 SPCC-c を基本に割り振られているようです。この辺の設計はSpacemacsに影響を受けているようです。
ドキュメント曰く個人設定は .config/doom/config.el でモジュールの有効化は .config/doom/init.el で行なうようです。例の如くjavascriptの設定を有効化します。

(doom! :input
;; ....
       javascript        ; all(hope(abandon(ye(who(enter(here))))))

この後に、doom sync コマンドを実行してから再起動します。普通はEmacsの起動時にパッケージの確認やインストールを行ないますが、これを分けることで、Emacsの起動が爆速になっています。なかなか面白いです。

tsxファイルは先の設定で開くことができました。今までで一番すんなり開けた気がします。

doom tsx

見た目はモードラインがおしゃれなのでリッチに見えますが、Spacemacs程のリッチさはないです。マウスカーソルをホバーした際の参照なども無かったです。 また、javascriptのファイルを触った所、補完がスニペットしか効かず微妙でした。コード補完で使用している corfu との連携が上手くできていないようなので、corfuではなくcompany modeを使用してあげるように設定すると上手く動くようになりました。

また、途中僕の脳がEmacsでVimのキーバインドを使うのに混乱してしまいEmacsのキーバインドに戻しました。Evilモジュールをコメントアウトするだけですが、Evil = Vimを知らないといけないので、初心者殺しな感じはしました。

所感

Spacemacsと同じ僕の考えた最強の設定ですが、モダンなEmacsの設定をこれでもかっていうぐらい取り込もうとしているのを感じました。モダンなパッケージを使用する分軽量な動作をしました。起動の速さにも拘っているのは素敵でした(今回断トツで速かったです)。

ただ、欠点として動作の不安定さは感じました。Spacemacsは1つのパッケージに拘りチューニングし続けているため安定感を感じました。しかしDoomは軽量でモダンな分、不安定だったり不親切だったりする所が目につきました。

カスタマイズする気がない人に対して、安定性ならSpacemacs、モダンで軽量な動作を求めるならDoomといった感じでしょうか。(僕は昔、Spacemacsを使ってたので知っていますが、Spacemacsも不安定な所はあります…)

まとめ

今回はawesome-emacsに記載のStarter Kitを4つ触ってみました。それぞれの僕のイメージをまとめると以下のようになります。

名前特徴
Purcell’s .emacs.d個人の Emacs 設定という感じ。設定の参考にはいいが、ドキュメントが少なく不親切で思想がある。
Emacs Prelude最低限の設定を入れつつもモダンな設定を抑えている。ドキュメントもあり小さくちょっとずつ始めたい人向け。
Spacemacs枯れたパッケージを使っているため、少し重いところもあるが、設定の記載量や入っているパッケージの量から考えると安定した動作をする。多少重くてもリッチなEmacsを使用したい人向け。
Doomモダンな設定や色々なパッケージのサポートをしつつ高速な動作をするが、少し不安定だったりドキュメントが少し不親切。安定性よりもリッチで速度や軽量な動作を求める人向け。

それぞれに良い所があり、試している僕も様々な思想に触れることができて楽しかったです。 難点を言えば執筆でEmacsを使用できずVS Codeで執筆したのが一番辛いポイントでした。

※本記事は、ジーアイクラウド株式会社の見解を述べたものであり、必要な調査・検討は行っているものの必ずしもその正確性や真実性を保証するものではありません。

※リンクを利用する際には、必ず出典がGIC dryaki-blogであることを明記してください。
リンクの利用によりトラブルが発生した場合、リンクを設置した方ご自身の責任で対応してください。
ジーアイクラウド株式会社はユーザーによるリンクの利用につき、如何なる責任を負うものではありません。