Dreaming in Greater Boston

An Introduction to Programming in Emacs Lispを読みました

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もある程度読めるようになります。しかし、例えばテトリスのような簡単なゲームが作れるレベルにはなりません。

効果として一番大きいのは、Emacsに備わっているドキュメント類を読んだり探したりできるようになることだと思います。

3.4 次のステップ

例えばPythonやJavaScriptでは入門書から中級者向けの本に事欠きませんが、ユーザーの少ないelispには次に読むべき本がありません。あとはひたすらelispのドキュメントを読み、先人の書いたソースコードから学ぶしかないのでしょうか。

4 終わりに

最初に読み始めてから、長い中断も含めて、2,3年かけてやっと読み終わりました。もっと早く読んでおくべきだったとは思いますが、Mastering Emacsを読んでいなかったら挫折したままだったとも言えます。Emacsにやっと本格的に入門することができた、という感想を持っています。