Table of Contents
1 はじめに
Robert J. Chassell著のAn Introduction to Programming in Emacs Lispはとても評判の良いemacs lisp(elisp)の入門書です。いい加減にelispを学ぶことは避けて通れないと思って、読み始めては挫折することを繰り返し、3度目の正直でやっと読み終わりました。
2 eslipについて
Emacsは高機能なテキストエディタという表の姿の影で、elispの実行環境であるという真の姿があります。高速化のためにC言語で書かれた一部の低レベル機能を除いて、Emacsの本体や拡張機能の多くはelispで書かれており、elispを使うことでEmacsでできることの範囲が大きく広がります。
また、elispが分からないと、init.elでの設定が自分ではできず、ネット上にある先人の例をコピペするしかありませんでした。自分でinit.elを書けるようになりたいということが、elispを学ぶ大きなモチベーションの一つでした。
3 本書について
3.1 フォーマット
本書はemacsに付属していて C-h i
で出てくる一覧から飛べるようになっている他、ネット上にPDF版やHTML版があります。どうせEmacs上で例を実行(評価)したり関数を作ったりしながら進めるのだから、Emacsの付属版を使うのがよいと思います。Infoモードのキーバインドを覚えるのに若干敷居が高いですが。
3.2 難易度
結構難しい本です。最初に、プログラマーでなくてもわかるように平易に書いた、ようなことが書いてあるのですが、プログラミング初級者はついていけないと思います。一つずつの章をきちんと正しく理解して、学んだことを覚えていかないと、章が進むにつれて読むのが辛くなってきます。文章もアカデミックで、私の英語力に問題あるだけかもしれませんが、意味がすんなり頭に入ってきません。
私はこれを克服するために、(もちろんemacsで)メモを取りながら読み進めました。
正規表現の章に至っては、正規表現自体の使い方の説明はほぼ無いのに、正規表現をほぼノーヒントで書かなくてはならない演習問題が出てきます。私の2回目のチャレンジではこの章で挫折しています。。。
3.3 読んだ効果
プログラミングの本では半ば常識と思いますが、出てきた例や演習問題はすべて手で入力して、その言語に体で慣れていく必要があります。この本では、そういったハンズオンの量が少なすぎると思います。
本書を一通りこなしたら自分のinit.elがある程度読めるようになります。しかし、膨大なelispライブラリの知識が不十分すぎて、やりたいことを実現することはできないでしょう。
効果として一番大きいのは、Emacsに備わっているドキュメント(docstring)が読めるようになることだと思います。
3.4 次のステップ
例えばPythonやJavaScriptでは入門書から中級者向けの本に事欠きませんが、ユーザーの少ないelispには次に読むべき本があまりありません。いろいろ検索した結果、2冊見つけました。
- Hacking your way around emacs by Marcin Borkowski
An introduction to programming in Emacs lispの次に読むことを想定された本(電子版のみ)です。うれしいことに2021年末リリースなので、情報が新しいです。ページ数が104と少ないのが気になります。
- Writing GNU Emacs Extensions by Bob Glickstein
1997年発行で、紙の本は中古でしか入手できません。内容が古いので、すでにdeprecatedされた機能が説明されていたりするようです。
elispはマイナーな言語なので選択肢が限られますね。次はこれらに挑戦してみたいと思います。
4 終わりに
最初に読み始めてから、長い中断も含めて、2,3年かけてやっと読み終わりました。もっと早く読んでおくべきだったとは思いますが、Mastering Emacsを読んでいなかったら挫折したままだったとも言えます。Emacsにやっと本格的に入門することができた、という感想を持ちました。