Emacs起動の「重さ」にサヨナラを。伝説のDevOpsアーキテクトが教えるinit.el高速化の極意
こんにちは。現場でコードと対話し、数多の開発環境を最適化してきたエンジニアです。
Emacsを使っていると、ふと気づくことがあります。「あれ、起動が遅いな」。設定を積み重ねるほど重くなるその現象は、実はEmacs特有の「Lispインタープリタが全ファイルを同期的に読み込む」という仕様によるものです。
しかし、恐れることはありません。Emacsは「設定次第で、OSの一部のような速度」に進化させることができます。今日は、ただの高速化ではなく、「なぜ起動が遅れるのか」というEmacsの本質を突き、あなたの開発体験を劇的に変えるリファクタリング術を伝授します。
—
1. まずは「敵」を知る:起動時間の計測
最適化には計測が不可欠です。勘でコードを削るのではなく、どこで時間が溶けているのかを可視化しましょう。Emacsには標準で起動時間を計測する機能が備わっています。
ターミナルから以下のコマンドを叩いてみてください。
–timed-requiresフラグで、起動時に読み込まれた各ライブラリのコストを表示します
emacs –timed-requires
起動後、`Messages` バッファ(`C-x b` で移動可能)を確認してください。どのパッケージが何ミリ秒消費しているかが一目瞭然です。ここで「意外とあのライブラリが重いな」と気づくことが、高速化の第一歩です。
—
2. 「必要な時だけ呼ぶ」:遅延読み込みの鉄則
Emacsが遅い最大の理由は、`init.el` に書かれた設定が、起動した瞬間にすべて実行されるからです。例えば、Magit(強力なGitクライアント)の設定を起動直後に読み込む必要はありますか?いいえ、Git操作をする時だけで十分ですよね。
ここで、現代のEmacs設定のデファクトスタンダードである `use-package` を活用します。
use-package による遅延読み込みの設定例
;; use-packageがインストールされていない場合に自動インストールする安全装置
(unless (package-installed-p ‘use-package)
(package-refresh-contents)
(package-install ‘use-package))
(require ‘use-package)
;; 例:Magitの設定
;; :defer t を指定することで、そのパッケージが初めて呼び出されるまでロードを延期します
(use-package magit
:ensure t
:defer t
:bind (“C-x g” . magit-status)) ;; C-x g を押した瞬間にMagitがロードされる魔法
この `:defer t` や `:bind` を使うことで、Emacsは起動時に「Magitの設定がある」ということだけを記憶し、実際の読み込み処理を後回しにします。これだけで起動時間は驚くほど短縮されます。
—
3. バイトコンパイル:Lispを機械語に近づける
Emacs Lispは、そのままではインタプリタが解釈するテキスト形式です。これをバイトコードにコンパイルすることで、実行速度を劇的に向上させることができます。
以下のスクリプトを `init.el` の冒頭、あるいは独立した管理スクリプトとして用意し、設定を変更するたびに実行する習慣をつけてください。
;; init.elをバイトコンパイルして高速化する関数
(defun my/compile-init ()
“~/.emacs.d/init.el をバイトコンパイルする”
(interactive)
(byte-compile-file (expand-file-name “init.el” user-emacs-directory)))
;; 実行は M-x my/compile-init
バイトコンパイルされた `init.elc` が存在すれば、Emacsはそれを優先的に読み込みます。起動時のパース処理が不要になるため、体感速度は数倍に跳ね上がります。
—
4. 「棚卸し」という名の断捨離
最後に最も重要なアドバイスを。「その設定、本当に使っていますか?」
長年使っている `init.el` には、かつて興味本位で入れたものの、今はもう使っていないパッケージの設定が眠っているはずです。
1. パッケージの無効化: 一度その設定をコメントアウトして再起動してみる。
2. 機能の代替: 標準機能(Built-in)で実現できるなら、重い外部パッケージを捨てる。
Emacsの設計思想は「ミニマリズム」です。不要なものを削ぎ落とす過程こそが、あなただけの最高の開発環境を作り上げるプロセスなのです。
—
最後に:なぜここまでやるのか
「たかが起動時間」と思うかもしれません。しかし、一日の間に何度もエディタを開き、そのたびに数秒待たされるストレスは、知らぬ間にあなたの集中力を削いでいます。
高速なEmacsは、あなたの思考のスピードを止めません。キーを叩いた瞬間に反応するエディタは、まるであなたの脳の延長線上の器官のように機能します。
今日紹介したテクニックを一つ試すだけで、あなたのEmacsは生まれ変わります。さあ、まずは `M-x` から、軽快なコーディングの世界へ飛び込んでみてください。あなたの開発効率が劇的に変わることを、私は確信しています。