@kyanny's blog

My thoughts, my life. Views/opinions are my own.

Programming in Emacs Lispを読み始めた

Emacsいじりが面白くなってきた今日この頃、Mewでメール受信できて喜んだり、emacs-w3mでWebを閲覧できて喜んだりしていたんだけど、やっぱり一番やりたいことはプログラミング!だけどcolor-theme.elに付属のテーマはVimに付属のmorningっていうテーマに比べるとイマイチ気に入らない。ので、自作というか、既存のものをちょこっといじってカスタマイズというか、そんなことを始めようと思いたち、Webを検索してみたり、color-theme.elの中身をのぞいてみたりした。

しかし、それらは当然Emacs Lispで書かれていて、当然Emacs Lispなんてさっぱりわからないので、どうしたものかと途方にくれていたところ、Programming in Emacs Lispなんていう素晴らしい文書を発見!どうやらもともとEmacsに付属している文書の訳のようで、これこそ「ドキュメント読めよ」といわれてしまいそうな「灯台もと暗し」な文書だったんだけど、軟弱なのでやっぱり訳してあるほうがいいし、Webというかネット大好きっ子としてはブラウザで読めたほうがいいよね、ということで読み始めてみたらこれが結構面白い!

この文書は、プログラマではない人々への、初歩的な入門書として書かれている。もしあなたがプログラマであるなら、あなたはこのような簡単なものでは満足出来まい。というのも、あなたは既にリファレンスマニュアルを読むのに熟達しているかもしれないし、その場合この文書のような書き方ではまどろっこしく感じるだろうからだ。

例えば、この文書を読んだある熟練したプログラマは、私に次のように言った。

僕は、リファレンスマニュアルから学ぶ方が好きなんだ。各々のパラグラフに「ダイブして」そして各パラグラフの間で「息継ぎをする」感じだ。

僕はあるパラグラフの最後に辿り着いたら、その主題については終了したものと見倣すんだよ。つまり、(次のパラグラフでより詳しいことが説明されるような場合を除いて) 必要なことは全て分ったと考えるわけなんだ。だから無駄な沢山の繰り返しがなくって、必要な情報が載っている個所へのポインタがきちんと整備されているようなのがいいな。

この入門書はこのような人のために書かれたのではない!

あなたは、幾つかのパラグラフには「ダイブする」必要がある。それらには、別のもっと楽な読み方があるわけではない。しかし、私はそのようなパラグラフの数はなるべく押さえたつもりだ。この本は、そびえたつ山ではなく、ちゃんと登ることができる丘であるように書かれている。

Lisp を学ぶことは、最初の道が急な坂であるような丘を登るようなものである。あなたが現在登っているのはもっとも急な部分である。先に進むに従って、より楽に進めるようになるはずだ。

なんていう風に、初学者を励ますような一言がいたるところにちりばめられていて、俺のようにちょっとしたことでつまづくとすぐに自信をなくして投げ出してしまうタイプにはありがたい限り!もちろんEmacs Lispの解説そのものも、豊富なサンプルと丁寧な説明で構成されていて、自分の手でサンプルコードを実行させつつ、その意味するところを知ることができて非常に良いと思う。正しい理論を教えながらも、「とりあえず、動かせる」ためのサンプルも紹介されていて、ちゃんと扱える自信をみにつけながら基礎を固めていくことができる。俺の考えにぴったりのとてもいい文書だと思った。

これだけ素晴らしい文書に出会えたので、とりあえずcolor-themeがどうとかいう応用編についてはおいといて、真面目にEmacs Lispを勉強してみたい。リスト、関数、シンボルなどの基本をしっかり理解してから、いずれはオリジナルのテーマやメジャーモードを作れるようになったらいいなあ、とこれは淡い希望。。現状ではgnome2とvim-colorsを気分で使い分けてる感じだけど、ひょっとしたらすぐにこれらに目が慣れてしまうかもしれないし。

ということで、1.List処理をほぼ読み終えた。これもページ数なり文字数なりを把握できれば、はてなグラフに進行度合いをつけてみても面白いかもしれない。まだまだ先は長いけど、Perlを学び始めた頃の「CGIがちゃんと動いた!」に似た気分になれてとても楽しい。