PR:この記事にはアフィリエイトリンクが含まれます。
Emacs Lispの本は、操作入門から拡張開発まで扱う範囲が広く、タイトルだけでは中身を想像しにくいものです。マクロという語も、キー操作の記録とLispの式を組み立てる仕組みの両方を指します。
自作拡張をパッケージとして配布したい人は、式の評価や関数、バッファ操作を学び、その先にマクロの展開と配布の知識を置くと理解しやすくなります。紹介する3冊も、扱う範囲はそれぞれ異なります。
3冊はいずれもElispの基礎に触れますが、操作や拡張導入を扱う幅には差があります。マクロやパッケージ開発を目指す人に向けて、早見表に主な内容をまとめました。
| 本 | 主に学べること | 向いている読者 |
|---|---|---|
Emacs Lisp – An Introduction | Lispの基礎、評価、簡単な拡張 | プログラミング未経験からElispを学ぶ人 |
[改訂新版]Emacs実践入門 | Emacs操作、設定、Elisp入門、パッケージ導入 | 日本語でEmacs全体を押さえたい人 |
Learning GNU Emacs, Third Edition | Emacsの基本、Elisp、モードやライブラリの例 | 古い版も含めてEmacsを広く知りたい人 |
基礎を固める
Emacs Lisp、略してElispも、式をかっこで囲んで書きます。関数呼び出しでは関数名と引数をリストに収める形。まず、この書き方と評価の意味を押さえましょう。
Emacsでは、書いた式をその場で評価し、結果を見られます。短いコードを動かして値やエラーを確かめると、構文の意味が手に取るように分かることもあります。設定ファイルの一行を変える練習も身近です。
バッファやカーソルを扱えるようになれば、日々の作業を小さなコマンドに置き換えられます。語句の整形や定型見出しの挿入など、身近な面倒から試すと、Elispの使い道を実感しやすいでしょう。
入門書の軸
Robert J. Chassell著『Emacs Lisp – An Introduction』は、プログラミング未経験者も対象にした入門書です。2015年11月刊行のペーパーバック版は270ページ。リストや式の評価から関数定義、バッファ操作へ進みます。
反復処理や正規表現、設定ファイル、デバッグも扱います。演習では簡単なEmacs拡張を作り、dolistやdotimesのマクロにも触れます。基礎を学びながら、実際のElispで構文がどう使われるかを確かめられる内容です。
3冊の中では、Elispの言葉や式を初めて学ぶ人に最も直結する一冊です。公開用パッケージの構成や配布手順は中心テーマではありません。初学者には、本書で基礎を築き、その先の開発知識を公式マニュアルで補う進め方がおすすめです。
実践入門
『[改訂新版]Emacs実践入門』は、技術評論社から2017年に刊行された日本語書籍。A5判、264ページです。基本操作や設定ファイルに始まり、Elispの構文と評価にも進みます。Emacsの全体像をつかみやすい構成ですね。
キーボードマクロとElispマクロは別の機能です。前者はキー操作を記録して再実行するもの。本書ではこれに加えて、package.elとELPAによるパッケージ導入も学べます。既存の拡張を取り入れる段階で役立つでしょう。
定価は税込2,838円で、実売価格は時期や販売店によって変わります。日本語で操作から拡張の導入まで学びたい人には、最初の一冊としてすすめやすい内容です。Elispマクロの定義や公開を深く知るには、別の資料も必要になります。
古典の価値
『Learning GNU Emacs, Third Edition』は2005年刊行の英語書籍で、509ページあります。GNU Emacs 21.3、とくに21.3.5を対象に、初心者から中級者へ向けて操作や設定、Elispの基本を幅広く解説しています。
メジャーモードやLispライブラリの例も扱います。Emacsが拡張可能な環境であることを、具体例から知る助けになるでしょう。載っているマクロにはキーボード操作の記録も含まれます。現行EmacsでのElispマクロ開発を主に学ぶ場合は、内容を補う必要があります。
発売時の米国定価はUS$39.95で、販売価格は時期や店によって異なります。新品のオンデマンド印刷版が販売されることもあります。英語の技術書を読み慣れ、Emacsの機能や考え方を幅広く知りたい人におすすめです。
マクロの肝
Elispのマクロは関数と仕組みが異なります。関数は引数を評価してから実行しますが、マクロは受け取った式をもとに別の式を組み立てます。その式を評価させて処理するため、プログラムを書くための構文を作れます。
たとえばunlessは、条件が成り立たない場合の処理を簡潔に書くマクロです。macroexpand-1を使えば、書いた形がどんなコードへ展開されるか確認できます。まず既存マクロの展開を見ると、仕組みを理解しやすくなります。
自分でマクロを定義するときは、バッククォートとカンマを使い、生成する式に引数を埋め込みます。ただし、同じ引数を二度埋め込むと、その式が二度評価される場合もあります。値を変える副作用には注意が必要です。
一時変数の名前が、マクロを使う側の変数と衝突することもあります。Elispは名前の衝突を自動では避けないため、cl-gensymなどを検討します。新しい構文が必要か、関数で足りるかも考えてみてください。
開発の現場
Elispパッケージは、一つの.elファイルから作り始められます。冒頭に概要やバージョン、必要なEmacsの版などを記し、利用側が読み込めるよう機能名をprovideします。依存する機能はrequireで明示します。
利用者が呼び出す関数には、役割や引数が伝わる名前を付けます。起動時に読み込ませたい公開コマンドには、;;;###autoloadを付ける構成も一般的です。自分の設定で一度動いただけでは確認は十分ではありません。初期設定から読み込めるかも試しましょう。
配布時には、依存関係や対応Emacs版、ライセンス、変更履歴、インストール手順も整えます。GNU ELPAやMELPAなど、公開先ごとに運用ルールは異なります。提出前には各プロジェクトの最新案内を確かめてください。
動作確認には、バイトコンパイルの警告や括弧の対応チェック、ERTによるテストが役立ちます。小さな関数ごとに入力と出力を決めておけば、修正後も以前の機能が保たれているか確かめやすくなります。
現行環境へ
紹介した本は2015年、2017年、2005年の刊行です。いずれも現行版Emacsの最新ガイドではありません。操作画面や推奨される書き方に違いが出る場合もあります。版に関する疑問はEmacs Lisp Reference Manualで確かめるのが確実です。
公式マニュアルは、式や関数の意味を確認する一次資料。本に出てきた項目を引き、短いコードで動きを試せば、知識を今の環境に結び付けられます。関数名から引数や戻り値を読み取る習慣も、開発の助けになりますよ。
パッケージ開発は、本を読み終えれば完了というものではありません。公開中の小さなパッケージを開き、ファイル構成やメタデータ、テスト、依存関係を実例から学ぶのが近道です。作る機能を一つに絞れば、初めての公開にも進みやすいでしょう。
結論
プログラミング未経験からElispを学ぶ人には、『Emacs Lisp – An Introduction』がおすすめです。式の評価やバッファ操作を押さえ、演習では簡単な拡張まで作れます。マクロの入口にも触れられます。
Emacsの操作や日本語の設定解説も欲しい人には、『[改訂新版]Emacs実践入門』をすすめます。ただ、Elispマクロの設計からパッケージ公開までを一冊で学べる本は、今回の3冊にはありません。
Amazon の PC をスコア化してみた
Amazonにある8〜14インチの小型WindowsタブレットやノートPCを、スペック別にスコア化して比較・ランキング。

![[改訂新版]Emacs実践入門](https://m.media-amazon.com/images/I/513bqny7PYL._SL500_.jpg)


