本書に寄せて

『Emacs実践入門―思考を直感的にコード化し、開発を加速する』
p.ⅲ~ⅳより転載
2012年2月 まつもと ゆきひろ

私はEmacs使いです。最初にEmacsに接したのは、私がまだ大学生だったころの1988年のことです。そのころはまだ大学のコンピュータは1台のワークステーション(Sun-3でした)をたくさんの学生が共有していて、学部生はメモリを消費するEmacsを利用することは禁止されていました。それでも好奇心からこっそりEmacsを立ち上げてみて、⁠変わったエディタだな」と感じたことを覚えています。

「Emacsはプログラマのためのエディタである」と言われます。たしかにその通りだと思います。EmacsはもともとMIT(Massachusetts Institute of Technology)の超絶Lispハッカーであり、フリーソフトウェア運動の創始者でもあるRichard M. Stallman氏によって開発されました。根っからのプログラマであるStallman氏によって開発されたEmacsがプログラマ向けでないはずがありません。

Emacsがプログラマ向けであるのはいくつかの理由があります。その第一の理由は「Emacsは究極にカスタマイズ可能である」という点です。私を含めて多くのプログラマは、自分の環境を自分の好みに合わせてカスタマイズすることを好みます。それによってほんのわずかでも自分の効率が向上すると喜びを感じるのです。ある種の「環境改善オタク」と呼んでもよいでしょう。Emacsはエディタとしてのありとあらゆる機能をカスタマイズ可能です。それ以前に、Emacsは本質的にはエディタではなく、⁠テキスト編集機能が付いたLispインタプリタ」です。エディタとして使えるようなデフォルト設定がされているだけなのです。⁠普通のエディタ」であれば組込みであろう機能まで、Lispのプログラムで実現されています。⁠a」のキーを押せば画面に「a」という文字が表示される、そんなあたり前の機能までです。そして、Lispプログラムを書けば、あらゆる機能をEmacsに追加できるのです。究極のカスタマイズ可能ソフトウェアですね。

第二の理由は、第一の理由の延長線上です。つまり、Emacs Lispでエディタをカスタマイズできるということは、⁠Emacsはプログラマブルである」ということです。できるものならばなんでもプログラムによって制御したいと考えるのは、プログラマの本能のようなものです。エアコンやテレビをプログラムによって制御したいとしばしば考えるのは私だけではないはずです。

第三の理由も、それに続きます。Lispプログラムを記述することによってどのような機能でも追加できるということは、すなわち、⁠EmacsはEmacs Lispプログラムのためのアプリケーションフレームワークである」ということです。Emacsが提供しているエディタとしての基本機能は、そのままさまざまなEmacs上で動作するアプリケーションを構築するための道具として使えます。事実、Emacs上で動作する単なる編集機能以上を提供するEmacs Lispプログラムは本当にたくさんあります。メールリーダーもあればブラウザもあります。五目並べやテトリスのようなゲームもあります。単にプログラム可能なだけではなく、便利な道具立てがすでにそろっていること、また、先人がたくさんの実例を用意してくれていることも、Emacsをプログラマ向けエディタとして魅力あるものにしてくれています。

「Emacsはエディタではなく、環境である」という言い方がよくされます。Emacsがあれば、テキストやプログラムを記述するだけではなく、メールの読み書きもできれば、スケジュール管理やToDo管理もできます。また、ターミナルの代わりにshell-modeを使うこともできます。

初めてEmacsに触れて以来20年以上、私はEmacsに手を入れ続けてきました。もはやEmacsなしで長い文章を書くことは苦痛になってしまいました。私はEmacsの中でメールを読み書きし、プログラムを書き、デバッグし、メモを書き、原稿を書くのです。また、Emacsのために独自のメールリーダーを開発し、Rubyのための編集モードも開発し、日本語入力プログラムを自作するのです。これだけのことができるエディタがほかにあるでしょうか。いや、ない。

1970年代に開発が始まったEmacsは、たしかに設計は古く、ところどころダサい点も見受けられますが、それでもなお、無限の可能性があります。本書はEmacsのインストールから便利な拡張機能の紹介まで、Emacsの初歩から中級レベルまでの知識が紹介されています。本書がより多くの人々にEmacsの可能性を提示する入口となりますように。

まつもとゆきひろ

1965年生まれ。鳥取県米子市出身。筑波大学第三学群情報学類卒業。プログラミング言語Rubyの生みの親。㈱ネットワーク応用通信研究所フェロー,一般財団法人Rubyアソシエーション理事長,Heroku Chief Architectなど,肩書多数。三女一男犬猫一匹ずつの父でもある。温泉好き。鳥取県出身,島根在住。牡羊座。O型。