PRESS』編集部が自信を持ってお届けするシリーズです。本書に寄せて[改訂新版]Emacs実践入門──思考を直感的にコード化し、開発を加速する[改訂新版]Emacs実践入門──思考を直感的にコード化し、開発を加速する本書に寄せて私はEmacs使いです。最初にEmacsに接したのは,私がまだ大学生だったころの1988年のことです。そのころはまだ大学のコンピュータは1台のワークステーション(Sun-3でした)をたくさんの学生が共有していて,学部生はメモリを消費するEmacsを利用することは禁止されていました。それでも好奇心からこっそりEmacsを立ち上げてみて,「変わったエディタだな」と感じたことを覚えています。「Emacsはプログラマのためのエディタである」と言われます。たしかにその通りだと思います。Stallman氏によって開発されました。根っからのプログラマであるStallman氏によって開発されたEmacsがプログラマ向けでないはずがありません。Emacsがプログラマ向けであるのはいくつかの理由があります。その第一の理由は「Emacsは究極にカスタマイズ可能である」という点です。私を含めて多くのプログラマは,自分の環境を自分の好みに合わせてカスタマイズすることを好みます。それによってほんのわずかでも自分の効率が向上すると喜びを感じるのです。ある種の「環境改善オタク」と呼んでもよいでしょう。Emacsはエディタとしてのありとあらゆる機能をカスタマイズ可能です。それ以前に,Emacsは本質的にはエディタではなく,「テキスト編集機能が付いたLispインタプリタ」です。エディタとして使えるようなデフォルト設定がされているだけなのです。「普通のエディタ」であれば組込みであろう機能まで,Lispのプログラムで実現されています。「a」のキーを押せば画面に「a」という文字が表示される,そんなあたり前の機能までです。Lispプログラムを書けば,あらゆる機能をEmacsに追加できるのです。究極のカスタマイズ可能ソフトウェアですね。第二の理由は,第一の理由の延長線上です。Lispでエディタをカスタマイズできるということは,「Emacsはプログラマブルである」ということです。できるものならばなんでもプログラムによって制御したいと考えるのは,プログラマの本能のようなものです。エアコンやテレビをプログラムによって制御したいとしばしば考えるのは私だけではないはずです。第三の理由も,それに続きます。Lispプログラムのためのアプリケーションフレームワークである」ということです。Emacsが提供しているエディタとしての基本機能は,そのままさまざまなEmacs上で動作するアプリケーションを構築するための道具として使えます。Lispプログラムは本当にたくさんあります。メールリーダーもあればブラウザもあります。五目並べやテトリスのようなゲームもあります。プログラム可能なだけではなく,便利な道具立てがすでにそろっていること,また,先人がたくさんの実例を用意してくれていることも,Emacsをプログラマ向けエディタとして魅力あるものにしてくれています。「Emacsはエディタではなく,環境である」という言い方がよくされます。Emacsがあれば,テキストやプログラムを記述するだけではなく,メールの読み書きもできれば,スケジュール管理やToDo管理もできます。ターミナルの代わりにshell-modeを使うこともできます。Emacsに触れて以来20年以上,私はEmacsに手を入れ続けてきました。Emacsなしで長い文章を書くことは苦痛になってしまいました。私はEmacsの中でメールを読み書きし,プログラムを書き,デバッグし,メモを書き,原稿を書くのです。Emacsのために独自のメールリーダーを開発し,Rubyのための編集モードも開発し,日本語入力プログラムを自作するのです。これだけのことができるエディタがほかにあるでしょうか。1970年代に開発が始まったEmacsは,たしかに設計は古く,ところどころダサい点も見受けられますが,それでもなお,無限の可能性があります。本書はEmacsのインストールから便利な拡張機能の紹介まで,Emacsの初歩から中級レベルまでの知識が紹介されています。本書がより多くの人々にEmacsの可能性を提示する入口となりますように。前の版の「本書に寄せて」を書かせていただいてもう5年が過ぎました。IT業界の変化は激しく,5年の間にEmacsを取り巻く状況も変化しました。Emacsは(少なくとも私にとって)至高の環境です。5年前に書いた気持ちにもまったく変化がないことを申し添えておきます。プログラミング言語Rubyの生みの親。