Emacs(イーマックス)は、GNUプロジェクトが開発する無料のテキストエディタです。ほかのエディタとの一番の違いは、キー操作から画面の振る舞いまでをEmacs Lispというプログラミング言語で書き換えられる点にあります。GNU Emacs公式サイトによると、最新の安定版は2026年8月24日公開のEmacs 31.1で、2026年10月23日時点でもGNUの配布サーバー・winget・Homebrew・Snapのいずれも31.1が最新です。この記事では、読み方と位置づけ、Windows・Mac・Ubuntuでのインストール、ファイルを開いて保存するまでの基本コマンド、日本語の扱い、init.elの置き場所と設定例、Emacs Lispでの自作コマンド、31.1の変更点と更新後に出る警告の直し方を順に扱います。
まとめ:テキストエディタEmacsの要点
- 読み方:イーマックス。名前は「Editor MACroS」に由来します。
- 料金:無料。ライセンスはGNU GPLバージョン3以降です。
- 最新版:Emacs 31.1(2026-08-24)。wingetとHomebrewは31.1、Ubuntu 24.04のaptは29.3、Ubuntu 26.04は30.2です。
- 最初のコマンド:C-x C-fで開く、C-x C-sで保存、C-x C-cで終了、困ったらC-gで中断します。C-h tで公式チュートリアルが開きます。
- 設定ファイル:~/.emacs.d/init.el(または ~/.config/emacs/init.el)。Emacs 29.1以降はuse-packageとEglot(LSP)が標準で入っています。
- Windowsの注意:インストーラはPATHを登録しません。スタートメニューの「Emacs」から起動するか、binフォルダをPathに足します。
- 31.1の警告:「Missing ‘lexical-binding’ cookie」は、設定ファイルの1行目にコメントとして
;; -*- lexical-binding: t; -*-を書けば消えます。ただし、動的スコープに依存する設定ではtではなくnilを指定します。 - 向く人:エディタを自分でプログラムしたい人、org-modeでメモ・タスク・文書をまとめたい人。サーバーで設定ファイルを直すだけならviで足ります。
テキストエディタEmacsとは:読み方・料金・Lispで拡張する仕組み
Emacsは1976年にRichard StallmanがTECOエディタのマクロ集として作ったのが始まりで、現在のGNU Emacsは1985年3月20日のEmacs 13が最初の公開版です。メジャー版は29.1(2023年7月)、30.1(2025年2月)、31.1(2026年8月)と、現在も1〜2年おきに出ています。
読み方「イーマックス」と名前の由来・GNU Emacsという呼び方
読み方は「イーマックス」です。「Editor MACroS」を縮めた名前で、GNU版を指して「GNU Emacs」と呼ぶこともあります。かつてはXEmacsなどの派生版もありましたが、現在「Emacs」と言えばほぼGNU Emacsを指します。
無料で使えるか:GPLv3のフリーソフトウェアとして使う条件
Emacsは無料で、商用の開発でもそのまま使えます。ライセンスはGNU GPLバージョン3以降です。再配布する場合は、著作権表示やライセンス文の保持などが必要になります。バイナリを配布する場合は、ビルド用スクリプトなどを含む「対応するソース」を、GPLv3で認められた方法で提供しなければなりません。自分のPCで使うだけなら条件は発生しません。
Emacs Lispによる拡張の仕組み:キー操作と関数の対応
Emacsの機能の大部分はEmacs Lispで書かれており、利用者も同じ言語で関数を足したり、キーの割り当てを変えたりできます。C-x C-fを押したときに動くのは find-file というLisp関数で、M-x find-file と名前で呼んでも同じ動作になります。「キー=関数の呼び出し」という構造なので、覚えるべきなのはキーそのものより、C-h k(そのキーが何の関数か調べる)の引き方です。
メモ帳やVS Codeと比べたテキストエディタとしてのEmacsの位置
テキストエディタとしてのEmacsは、メモ帳のような「開いて書いて保存する」道具と、VS Codeのような統合開発環境寄りのエディタの中間ではなく、両方の役割を1つのプログラムで受け持つ作りです。違いを表にまとめました。
| 観点 | メモ帳 | VS Code | Emacs |
|---|---|---|---|
| 主な操作 | マウスとメニュー | マウスとコマンドパレット | キーボード中心 |
| 拡張の書き方 | 拡張不可 | JavaScript/TypeScript | Emacs Lisp |
| 端末の中で使う | 不可 | 不可(リモート接続で代替) | 可(emacs -nw) |
| 設定の保存形式 | なし | settings.json | init.el(Lispコード) |
| 覚えるまでの負担 | 小さい | 小さい | 大きい |
Emacsで書いた設定はLispのプログラムそのものなので、条件分岐や関数を使って「このフォルダのファイルだけインデント幅を変える」といった細かい振る舞いまで書けます。その代わり、ファイル操作やコピー・貼り付けなど、Emacs固有のキー操作を覚える必要があります。この負担を払う価値があるかは、後半の選び方の章で用途別に判断します。
Emacsのインストール手順:Windows・Mac・Ubuntuの配布経路と版
OSごとの入れ方と入る版を表にまとめました(2026年10月23日に各配布元で確認した値)。apt版はディストリビューションの版で止まるため、31.1が必要なら別の入手経路を選びます。各経路の実行コマンドは表の下のOS別の項に載せています。
| OS | 入れ方 | 入る版 |
|---|---|---|
| Windows | winget(GNU.Emacs) | 31.1 |
| Windows | 公式インストーラ(ftp.gnu.org) | 31.1 |
| macOS | Homebrew formula(端末版) | 31.1 |
| macOS | Homebrew cask(GUI版) | 31.1 |
| Ubuntu 24.04 | apt | 29.3 |
| Ubuntu 26.04 | apt | 30.2 |
| Debian 13 | apt | 30.1 |
| Linux全般 | Snap(–classic) | 31.1 |
Windowsでwingetと公式インストーラからEmacs 31.1を入れる手順
Windows 10/11ならPowerShellで次の1行です。wingetのGNU.Emacs 31.1は、GNUの配布サーバーにある emacs-31.1-installer-UCRT64.exe を取得します。
winget install GNU.Emacs
手動で入れる場合はftp.gnu.orgのemacs-31ディレクトリから emacs-31.1-installer.exe を取得します。このディレクトリには、Emacs Lispをあらかじめネイティブコンパイルした「31.1」と、ネイティブコンパイル対応を取り除いた「31.1_1」の2系統があり、READMEには31.1の一部ビルドでウイルス対策ソフトの検知報告があったと書かれています。検知で止められた環境では、31.1_1も選択肢です。
インストール後にPowerShellで emacs と打っても「認識されません」と返るのは、故障ではなくこのインストーラの仕様です。31.1のインストーラ定義(ソースの admin/nt/dist-build/emacs.nsi)は、C:\Program Files\Emacs\emacs-31.1\ にファイルを展開し、スタートメニューに bin\runemacs.exe へのショートカット「Emacs」を作るだけで、環境変数Pathには手を加えません。GUIで使うだけならスタートメニューから起動すれば足ります。コマンドラインから emacs や emacs -nw を呼びたい場合は、Windowsの設定で「環境変数を編集」を開き、ユーザーのPathに C:\Program Files\Emacs\emacs-31.1\bin を追加してから端末を開き直します。フォルダ名に版番号が入っているため、次のメジャー版へ更新したらPathの版番号も書き換えてください。
Windows版Emacsの「ホーム」は、環境変数やレジストリのHOME設定、C:\.emacsによる上書きがなければ、通常 C:\Users\ユーザー名\AppData\Roaming です(GNU Emacsマニュアル「HOME and Startup Directories on MS-Windows」)。設定ファイルは %APPDATA%\.emacs.d\init.el に置きます。ほかのツールとドットファイルを共有したいなら、HOMEを明示的に設定してから起動しましょう。
Linux向けの手順や設定をそのまま使いたい場合は、WSL2のUbuntuにaptでEmacsを入れる方法もあります。WSL2の仕組みと導入手順はWSL2とは?WSL1との違い・仕組み・インストール手順【WSL 3.0対応・2026年10月】にまとめています。
macOS版Emacsの導入:Homebrewのformulaとcaskの使い分け
Homebrewでは名前の似た2つがあります。formulaのemacsは端末の中で動くEmacs 31.1で、ウィンドウを持つGUIアプリではありません。Dockから起動するアプリが欲しい場合は、Emacs For Mac OS Xのビルドを入れるcaskのemacs-appを使います。
# 端末の中で動く版
brew install emacs
# Dockから起動するGUI版
brew install --cask emacs-app
Ubuntu・Debianのaptで入る版と31.1をSnapで入れる方法の違い
Ubuntuでは sudo apt install emacs でGTK版(emacs-gtk)が入ります。端末だけで使うサーバーではX関連の依存を省いた emacs-nox を選び、Waylandで表示をきれいにしたい場合は emacs-pgtk が選択肢です。Ubuntu 24.04のaptは29.3なので、31.1が必要ならSnap StoreのGNU Emacs(公開者はAlex Murray、latest/stableが31.1)を入れるか、ソースからビルドします。
# aptで入れる(OSの版に固定される)
sudo apt install emacs
# Snapで31.1を入れる
sudo snap install emacs --classic
EmacsをGUIで起動するか端末内で起動するかの使い分けと注意点
GUI版がインストールされていても、emacs -nw と打てば端末の中で起動します。SSH先やtmuxの中で使うときはこちらです。Emacs 31.1からは対応する端末でマウス操作(xterm-mouse-mode)が既定で有効になり、端末内でもクリックでカーソルを動かせます。端末の選択範囲をOSのコピー機能でコピーしたい場合は、この既定を切る設定 (xterm-mouse-mode -1) を入れてください。tmuxと組み合わせる場合の画面分割はtmuxの使い方|Windows(psmux・WSL)の導入とコマンド・画面分割【3.7対応】を参照してください。端末側の文字化けやキー入力の取りこぼしが気になるなら、端末エミュレータを替える手もあり、設定ファイルで細かく調整できる例はWezTerm(ウェズターム)とは?Windows/Macの導入と設定・日本語入力・WSL2/SSH【2026年版】で扱っています。
Emacsの使い方:ファイルを開いて編集し保存するまでの基本コマンド
Emacsのドキュメントでは、Ctrlキーを「C-」、Metaキー(PCではAlt、Macでは設定によりoptionかEsc)を「M-」と書きます。C-x C-fは「Ctrlを押しながらx、続けてCtrlを押しながらf」の意味です。以下の表は、Emacs 31.1を設定なし(emacs -Q)で起動したときの割り当てです。
初回起動からテキストを1つ書いて保存し終了するまでの操作手順
まずは1つのテキストファイルを作って閉じるところまでを通しで試します。端末から次のように起動すると、memo.txtを開いた状態でEmacsが立ち上がります(ファイルが無ければ新規作成になります)。
emacs memo.txt
- そのまま文字を入力する(メモ帳と同じく、入力した位置に文字が入る)
- C-x C-sで保存する(画面最下行に「Wrote …memo.txt」と表示される)
- C-x C-fで別のファイル名を入力すると、2つ目のファイルを開ける
- C-x C-cでEmacsを終了する(未保存のファイルがあれば保存するか聞かれる)
途中で画面最下行に何かを聞かれて抜けられなくなったら、C-gを押せば入力途中の操作を取り消せます。この4手順とC-gだけで、テキストエディタとしての最低限の用途は満たせます。
ファイルを開く・保存する・終了するキー操作と対応するLisp関数
| キー | 動作 | 関数名 |
|---|---|---|
| C-x C-f | ファイルを開く(無ければ新規作成) | find-file |
| C-x C-s | 保存 | save-buffer |
| C-x C-w | 名前を付けて保存 | write-file |
| C-x k | 開いているファイル(バッファ)を閉じる | kill-buffer |
| C-x C-c | Emacsを終了 | 表の下を参照 |
| C-g | 入力途中のコマンドを中断 | keyboard-quit |
| C-/ | 元に戻す | undo |
C-x C-cに対応する関数は save-buffers-kill-terminal で、未保存のバッファを確認してから終了します。
カーソル移動・コピーと貼り付け・検索と置換を行うキー操作の一覧
| キー | 動作 |
|---|---|
| C-f / C-b | 1文字右 / 左 |
| C-n / C-p | 次の行 / 前の行 |
| C-a / C-e | 行頭 / 行末 |
| C-v / M-v | 1画面下 / 上へスクロール |
| M-< / M-> | ファイルの先頭 / 末尾 |
| C-SPC | 選択の開始位置(マーク)を置く |
| C-w / M-w | 切り取り / コピー |
| C-y | 貼り付け |
| C-k | カーソルから行末まで切り取り |
| C-s / C-r | 前方 / 後方へ検索 |
| M-% | 確認しながら置換 |
コピペは「C-SPCで始点を置く→カーソルを動かす→M-wでコピー→貼りたい場所でC-y」の順です。WindowsのCtrl+C/Ctrl+Vに寄せたい場合は、M-x cua-mode でCUAモードを有効にすると、範囲選択中のC-c・C-xがコピー・切り取りになり、C-vは範囲選択の有無にかかわらず貼り付けになります。
複数ファイルの編集:バッファ切り替えとウィンドウ分割
Emacsでは開いたファイルの中身を「バッファ」、画面の区画を「ウィンドウ」と呼びます。ファイルを閉じずに別のバッファへ移るのがC-x b、一覧がC-x C-bです。C-x 2で上下、C-x 3で左右に分割し、C-x oで次のウィンドウへ移動、C-x 1で今のウィンドウだけを残します。Emacs 31.1ではC-x O(大文字のO)に逆方向へ移る other-window-backward が割り当てられました。
日本語のテキストを編集するときの文字コード指定と改行コードの変換
GUI版・端末版とも、OSの日本語入力(IME)で日本語を入力できます。古い社内文書などShift_JISで保存されたファイルを開くと、Emacsは多くの場合自動で文字コードを判定しますが、文字化けしたときや保存形式を変えたいときは、GNU Emacsマニュアル「Specifying a Coding System」にある次の2つのコマンドを使います。
- C-x RET r:指定した文字コードでファイルを読み直す(文字化けの解消)
- C-x RET f:次に保存するときの文字コードを指定する(例:utf-8-unixでUTF-8・LF改行)
改行コードだけを変えたい場合は、C-x RET fで dos を指定するとCRLF、unix を指定するとLFで保存されます。現在の文字コードと改行の種類は、モードライン(画面下の帯)の左端に表示される記号で確認してください。新規ファイルを常にUTF-8で作りたい場合は、次章のinit.el例にある prefer-coding-system の1行で指定できます。
GUI版で漢字やかなの字形が気になる場合は、日本語の文字だけ別のフォントを割り当てます。次の2行をinit.elに書くと、英数字は既定のまま、漢字(han)とかな(kana)だけが指定フォントで表示されます。macOSのEmacs 31.1で、漢字とかなの位置がHiragino Sans、英字がMenloで描画されることを font-at で確かめました。Windowsでは、インストール済みの日本語フォント名(例:BIZ UDゴシックなら “BIZ UDGothic”)に置き換えます。
(set-fontset-font t 'han (font-spec :family "Hiragino Sans"))
(set-fontset-font t 'kana (font-spec :family "Hiragino Sans"))
操作の調べ方:チュートリアルC-h tとヘルプC-h k・C-h f
C-h tで開く公式チュートリアルは、日本語環境なら日本語版が表示され、上の表の操作を実際に手を動かしながら覚えられます。その後は次の3つで調べ物がほぼ片づきます。
- C-h k:押したキーが何の関数か
- C-h f/C-h v:関数/変数の説明
- C-h u:設定項目(ユーザーオプション)を名前で探す(Emacs 31.1で追加された割り当て)
init.elの場所と最初に書く設定:行番号・自作コマンド・パッケージ
設定ファイルinit.elの置き場所とearly-init.elを含む読み込み順
Emacsは起動時に ~/.emacs.el、~/.emacs、~/.emacs.d/init.el の順に設定ファイルを探します(GNU Emacsマニュアル「How Emacs Finds Your Init File」)。Emacs 27.1からはXDG形式の ~/.config/emacs/init.el も読めますが、~/.emacs.d、~/.emacs、~/.emacs.el のいずれかが存在すると従来の場所が優先されるため、XDG形式へ移すなら古いほうを消すか名前を変えます。
もう1つ、init.elより前に読まれるearly-init.el(Emacs 27.1〜)があります。パッケージ機能やツールバーの初期化より前に実行されるので、起動時の画面のちらつきを消す設定などに向いています。Emacs 31.1では、管理者用の site-start.el が early-init.el より先に読まれる順序へ変わりました。
最初のinit.elに書く設定例:行番号・バックアップ・キー候補表示
最低限の設定例です。Emacs 31.1で emacs --batch -l init.el として読み込むと、エラーなく行番号・列番号・which-keyが有効になります。1行目の lexical-binding: t は省略しないでください。Emacs 31.1からは、この指定(クッキー)が無いファイルを読み込むと警告が出るようになりました。which-key-mode はEmacs 30.1から標準搭載の機能で、C-xなどを押して1秒待つと続きのキー候補が一覧表示されます。
;;; init.el --- 個人設定 -*- lexical-binding: t -*-
;; ~/.emacs.d/init.el(Emacs 30.1以降)
(setq inhibit-startup-screen t) ; 起動画面を出さない
;; (setq make-backup-files nil) ; バックアップが不要な場合だけ有効化
(global-display-line-numbers-mode 1) ; 行番号を表示
(column-number-mode 1) ; モードラインに列番号
(which-key-mode 1) ; キーの続きを候補表示
(prefer-coding-system 'utf-8) ; 新規ファイルをUTF-8に
(set-face-attribute 'default nil :height 140) ; 文字サイズ14pt相当
init.elを書き換えたら、保存してそのバッファを表示した状態で M-x eval-buffer を実行すると、掲載例の設定をその場で反映できます。起動時にエラーが出て設定が読めないときは、emacs --debug-init で起動すると、エラー発生時にデバッガが開き、エラーメッセージと評価中のLisp式を含むバックトレースが表示されます。
Emacs Lispで自分用のコマンドを書いてキーに割り当てる実例
Emacsをほかのテキストエディタと分ける部分を、実際に1つ作って確かめます。次の例は「カーソル位置に今日の日付を入れる」コマンドと「init.elを開く」コマンドを定義し、それぞれC-c dとC-c iに割り当てるものです。C-cに続けて英字1文字のキーは利用者用に空けてある範囲なので、標準の割り当てとぶつかりません。keymap-global-set はEmacs 29.1から使える関数で、GNU Emacsマニュアル「Rebinding Keys in Your Init File」にも同じ書き方が載っています。
;; ~/.emacs.d/init.el に追記する
(defun my-insert-date ()
"カーソル位置に今日の日付を YYYY-MM-DD 形式で入れる。"
(interactive) ; M-x やキーから呼べるようにする
(insert (format-time-string "%Y-%m-%d")))
(defun my-open-init ()
"設定ファイル init.el を開く。"
(interactive)
(find-file user-init-file))
(keymap-global-set "C-c d" #'my-insert-date)
(keymap-global-set "C-c i" #'my-open-init)
追記して M-x eval-buffer を実行すれば、すぐにC-c dで日付が入ります。割り当てが効いているかは、C-h k を押してから C-c d を押すと関数名で確認できます。macOSやLinuxの端末からなら、Emacsの画面を開かずに次のコマンドで確かめられ、最終行に my-insert-date と出れば成功です。
emacs -Q --batch -l ~/.emacs.d/init.el \
--eval '(message "%s" (key-binding (kbd "C-c d")))'
この「関数を書く→キーに割り当てる→C-h kで確かめる」流れが、Emacsの設定の基本形です。パッケージの設定も、中身はこの延長にあります。
外部パッケージの導入・設定:package.elとuse-package
追加機能を入れるための標準の仕組みが、パッケージ管理(package.el)です。既定で参照するのはGNU ELPAとNonGNU ELPA(Emacs 28.1〜)の2つで、Git操作のMagitはNonGNU ELPAにあるため追加設定なしで入ります。Emacs 29.1から標準搭載のuse-packageを使うと、パッケージの導入と設定を1か所にまとめられます。
(require 'package)
(use-package magit
:ensure t ; 未導入ならELPAから入れる
:bind ("C-x g" . magit-status)) ; C-x g でGitの状態画面
この例をEmacs 31.1で読み込むと、NonGNU ELPAからMagit 4.7.1(2026年9月1日公開)が入ります。MELPAにしか無いパッケージを使うときは、(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t) を先に書きます。MELPAを足すと、Magitのように両方にあるパッケージは日付形式の版(例:magit-20260926.1436)がMELPAから入る点に注意してください。Emacs 31.1ではインストール・更新の前にダウンロードしたコードや前回との差分を確認できる package-review-policy が加わりました。既定値はnil(確認なし)で、(setq package-review-policy '((archive "melpa"))) とすればMELPA由来のパッケージだけを確認対象にできます。
標準で入っている主な機能:org-mode・Eglot・tree-sitterの使いどころ
数年前のEmacs入門記事では外部パッケージで入れていた機能の多くが、現在は本体に含まれています。古い記事の手順どおりに入れる前に、標準機能で足りるか確かめてください。
| 機能 | 用途 | 標準になった版 |
|---|---|---|
| org-mode | アウトライン・TODO・文書作成 | 22.1(31.1はOrg 9.8) |
| Eglot | LSPクライアント(補完・定義ジャンプ) | 29.1 |
| use-package | パッケージ設定の記述 | 29.1 |
| tree-sitter対応 | 構文解析による色分け・インデント | 29.1 |
| which-key | キー候補の表示 | 30.1 |
| EditorConfig | .editorconfigの反映 | 30.1 |
| lua-mode | Luaの編集 | 31.1 |
org-modeによるTODO管理と文書作成の一元化
org-modeは、*で見出しを作るプレーンテキスト形式(.orgファイル)で、TODO管理・スケジュール・表計算・HTMLやPDFへの書き出しまでを1つのファイルで扱えます。Emacs 31.1に同梱されているのは、Org 9.8系(31.1のソースではOrg 9.8.7)です。書き方とTODO・アジェンダの使い方はorg-modeとは?.orgファイルの書き方とTODO管理・エクスポートの使い方【Org 9.8対応】で詳しく扱っています。
Eglotとtree-sitterでEmacsをプログラミング用エディタにする設定
Emacs 29.1で入ったEglotは、pyright・gopls・rust-analyzerなどの言語サーバーに接続して、補完・定義ジャンプ・エラー表示を行います。言語サーバーを別途インストールしたうえで、対象ファイルを開いてM-x eglotを実行すれば動きます。毎回の手動実行を省くなら、ファイルを開いたときに自動で接続するフックをinit.elに記述してください。
;; Pythonファイルを開いたら言語サーバー(pyright等)へ自動で接続する
(add-hook 'python-mode-hook #'eglot-ensure)
(add-hook 'python-ts-mode-hook #'eglot-ensure)
以前の入門記事でよく紹介されるlsp-modeは外部パッケージなので、新しく始めるなら追加インストールの要らないEglotから試す順番が手堅い選択です。tree-sitterを使うメジャーモード(python-ts-modeなど)は構文を解析して色分けとインデントを行います。Emacs 31.1では treesit-enabled-modes を t にすると使えるtree-sitterモードを一括で有効にでき、treesit-auto-install-grammar で文法ライブラリの自動インストールも制御できるようになりました。
メール・Webブラウザ・ゲームなどエディタ以外に同梱されている機能
Emacsが「エディタというより環境」と言われるのは、テキスト編集以外の道具も本体に入っているからです。Emacs 31.1を設定なしで起動し、次のコマンドがすべて追加インストールなしで使えることを確認しました。
- メール・ニュース:M-x gnus(メールとニュースの閲覧)、M-x rmail(メールの読み書き)
- Webブラウザ:M-x eww(文字中心のページを読むテキストブラウザ)
- ファイル管理とシェル:M-x dired(ファイル一覧の操作)、M-x eshell(Emacs Lispで書かれたシェル)
- PDF・画像の表示:doc-view-mode(PDFを開くとページ画像で表示。PDFの変換にはGhostscriptかmutoolが別途必要)
- ゲーム:M-x tetris、M-x snake、M-x gomoku(五目並べ)、M-x dunnet(テキストアドベンチャー)
日本で長く使われてきたメールソフトのMewや、外部の w3m を使うブラウザのemacs-w3mは本体にもGNU ELPA・NonGNU ELPAにも無く、MELPA(2026年10月23日に収録を確認)から入れます。
Emacs 31.1の主な変更点とインストール済みの版の確認・更新方法
Emacs 31.1で変わった端末操作・パッケージ管理・Windows版の改良
2026年8月24日公開のEmacs 31.1で、使い勝手に直接効く変更は次のとおりです(GNU公式サイトとNEWS.31.1より)。
- 対応端末でマウス操作が既定で有効(xterm-mouse-mode)
- 設定ディレクトリの user-lisp/ に置いたLispファイルを自動でバイトコンパイルしload-pathへ追加
- 端末上でも子フレームが使え、CorfuやPosframeのポップアップが端末で表示可能
- *Completions* バッファの改良(入力に合わせた更新、候補が多いときの表示速度)
- *grep* と *xref* の結果バッファでeを押すと編集でき、元のファイルへ反映
- パッケージのインストール・更新前にコードを確認する機能(package-review-policy)
- Windows版でカラーフォント、テキストのドラッグ&ドロップ、yank-mediaに対応
互換性の面では、古い ctags プログラムが同梱されなくなりました(Universal Ctagsへの移行、または etags --ctags で代替)。ctagsコマンドをEmacs付属のものに頼っていた環境は、更新前に確認しておきましょう。
インストール済みEmacsのバージョン確認と配布経路別の更新手順
インストール済みの版は、端末で次のコマンドを実行するか、Emacs内でM-x emacs-versionを実行して確認します。
$ emacs --version
GNU Emacs 31.1
更新はインストールに使った経路で行います(Windowsは winget upgrade GNU.Emacs、Homebrewの端末版は brew upgrade emacs、GUI版は brew upgrade --cask emacs-app、Snap版は sudo snap refresh emacs)。aptで入れた場合はOSの版に固定されるため、Ubuntu 24.04のまま31.1にはなりません。メジャー版をまたぐと ~/.emacs.d/elpa 内のパッケージが古い版向けにコンパイルされたまま残ることがあるので、動作がおかしいときは M-x package-recompile-all で再コンパイルします。
31.1へ更新した直後に、起動のたびに次の警告が出るようになった場合の対処です。Emacs 31.1で1行目に指定の無い設定ファイルを読み込ませると、実際に次の文面が表示されました。
Warning (files): Missing ‘lexical-binding’ cookie in "~/.emacs".
You can add one with ‘M-x elisp-enable-lexical-binding RET’.
原因は、NEWS.31.1の「Loading a file displays a warning if there is no ‘lexical-binding’ cookie.」という変更です。lexical-bindingは変数の見え方(スコープ)を決める指定で、ファイル先頭に書かないと従来の動的スコープで読まれます。31.1でも既定は動的スコープのままで、変わったのは「指定が無いと警告する」点だけです。
直し方は、警告が名指ししたファイルを開いて M-x elisp-enable-lexical-binding を実行し、保存することです。31.1で試すと、1行目が説明コメントでないファイルでは先頭に ;; -*- lexical-binding: t; -*- という行が挿入され、すでに ;;; init.el --- 個人設定 のような1行目があれば、その行末に -*- lexical-binding: t; -*- が付け足されました。手で同じ行を書いても結果は同じです。
ただし、指定をtにするとスコープの規則が変わるため、古い設定が動的スコープに頼っていると動きが変わります。次の例は、指定なしでは 42 を返し、lexical-binding: t を付けると (void-variable x) のエラーになりました。
(defun f () x) ; 関数の外の変数 x を参照する
(let ((x 42)) (f)) ; 動的スコープなら 42、レキシカルなら x は未定義
setqやuse-packageが中心のinit.elでも、値を計算する式や設定内の関数が動的スコープに依存していれば、tを付けると挙動が変わることがあります。上の例のように、letで束縛した変数を別の関数から読む書き方が残っているファイルは、C-u M-x elisp-enable-lexical-binding を実行し、確認に y と答えて lexical-binding: nil を書き込めば、従来どおり動的スコープのまま警告だけを止められます。なお、(set-default-toplevel-value 'lexical-binding t) は既定のスコープを変える設定で、31.1のバッチ実行で確かめた範囲では警告は消えませんでした。警告を消す手段は、ファイルごとに指定を書くことだと考えてください。
EmacsとVim・VS Codeの選び方:時代遅れかどうかと採用の判断基準
「Emacsは時代遅れか」という問いには、開発が止まっていないという事実で答えられます。2025年2月の30.1でネイティブコンパイルの既定有効化とAndroid版、2026年8月の31.1で上記の改良が入り、LSPもtree-sitterも本体で扱えます。問題は古さではなく、学習コストに見合う使い方をするかどうかです。
| やりたいこと | 向くエディタ |
|---|---|
| サーバーで設定ファイルを直す | vi/Vim |
| チームの拡張機能・設定を共有する | VS Code |
| エディタの動作を自分でプログラムする | Emacs |
| メモ・TODO・文書をテキストで一元管理 | Emacs(org-mode) |
| モード切替のある高速な編集 | Vim/Neovim |
Emacsを選ばないほうがよいのは、SSH先で設定ファイルを数行直すことが主な用途の場合です。viはPOSIXで定められたコマンドで多くのLinuxサーバーに最初から入っていますが、Emacsは追加インストールが必要なことがほとんどです。この用途ならVimとは|テキストエディタの使い方・基本コマンドと他エディタとの違いを先に読むほうが早く目的に届きます。逆に、メール・Git・メモ・シェルまでを1つのエディタで扱いたい人には、これらを共通のキー操作とEmacs Lispの設定で束ねられるEmacsが最有力です。Lispに触れたことがなくても、init.elを書くうちにLisp系言語の考え方が身につきます(JVMで動くLisp系言語はClojureとは?JVMで動くLisp系関数型言語の文法と環境構築・採用判断で扱っています)。
Vimのキー操作に慣れていてEmacsの機能も使いたい場合は、Emacs上でVimのキー操作を再現するEvil(NonGNU ELPA)という選択肢があります。Vim系のまま設定をLuaで書きたいならNeovim(nvim)の使い方|基本操作・init.lua設定・プラグイン・LSP【0.12.6対応】が近い位置にあります。
AIコーディング支援を使うならEmacsで足りるかを判断する材料
エディタ選びでAIによるコード補完・編集を重視する場合、Emacs単体には組み込みのAI機能はありません。外部の仕組みをつなぐ形になり、Emacsから使えるAIコーディング支援の導入例はECA(Editor Code Assistant)とは?Emacs・VS Codeでの導入手順とツール承認の設定で手順を追っています。Emacsの中からLLMを呼ぶパッケージは、MELPAを足さなくても既定のアーカイブから入ります。2026年10月23日時点で、ChatGPTなどのLLMと対話するgptelはNonGNU ELPAに0.9.9.6、LLMを操作するツールのellamaはGNU ELPAに1.33.1があり、前述のuse-packageの書き方で導入できます。AI機能をエディタ本体に統合した製品を求めるなら、VS Code系のAIエディタを比較対象に入れてください。代表例の機能と料金はCursorとは?AIコードエディタの機能・料金・使い方を開発会社が解説にまとめています。
Emacsの採用判断:個人利用に向く条件とチーム導入の制約
個人の道具としてEmacsを検討する理由には、①設定を育てながら長く使いたい、②org-modeでメモ・タスク・文書を1か所にまとめたい、③エディタの振る舞いを自分のコードで変えたい、の3つがあります。反対に、チーム全員で同じ拡張機能と設定を配って揃えたい場面や、AI機能を設定なしで使いたい場面ではVS Code系を選ぶほうが手間がかかりません。Emacs派とVS Code派が混在するチームでは、エディタ自体を揃えるより、EditorConfig・フォーマッタ・LSPの設定をリポジトリに置いて、どのエディタでも同じ結果になる状態を作るのが現実的な落としどころになります。
よくある質問
Emacsの読み方は?
「イーマックス」です。「Editor MACroS」に由来する名前で、GNUプロジェクトの版を指して「GNU Emacs」とも呼ばれます。
Emacsは無料で使えますか?
無料です。GNU GPLバージョン3以降のフリーソフトウェアで、業務での利用にも費用はかかりません。改変の有無にかかわらず、再配布には著作権表示・ライセンス文の保持などの条件が付き、バイナリを配布する場合は対応するソースの提供も必要です。
WindowsでEmacsをインストールするには?
PowerShellで winget install GNU.Emacs を実行すると31.1が入ります。インストーラはPathを登録しないため、コマンドラインから使うには C:\Program Files\Emacs\emacs-31.1\bin をユーザーのPathに追加します。手動で入れる場合の取得先はftp.gnu.orgのemacs-31ディレクトリで、取得するファイルはemacs-31.1-installer.exeです。HOMEを変更していない標準的な環境では、設定ファイルを %APPDATA%\.emacs.d\init.el に置きます。HOMEを変更している場合は、そのディレクトリ内の .emacs.d\init.el を使います。
Emacsを終了するコマンドは?
C-x C-c(Ctrlを押しながらx、続けてCtrlを押しながらc)です。未保存のファイルがあると保存するか確認されます。操作途中で固まったように見えるときは、先にC-gで中断してから終了してください。
EmacsとVimはどちらを使うべきですか?
サーバー作業が中心ならVim、エディタを自分でプログラムしたい・org-modeで情報をまとめたいならEmacsです。どちらも固有のキー操作を覚える必要があり、Vimのキー操作のままEmacsを使うEvilという選択肢もあります。