Emacs実践入門―思考を直感的にコード化し,開発を加速する
はじめに
Wikipediaに次のように書かれています注1。
1975年にリチャード・ストールマンがガイ・スティールとともに書いたTECOエディタのエディタ・マクロ(editing macros)一式が最初のEMACSである
1975年と言えば,筆者はまだ生まれてもいません。そんな歴史あるソフトウェアですから,Emacsを10年以上も利用している方たちがざらにいます。1983年生まれの筆者が,Emacsの書籍を執筆できると決まったとき,その光栄さと重圧を感じずにはいられませんでした。
Emacsは,おそらくプログラマであればその名を知らない方はいないと思います。日本ではRubyのまつもと ゆきひろ氏注2,元はてなCTOで現GREEの伊藤直也氏など,海外ではフリーソフトウェア財団の総裁Richard M. Stallman氏,AmazonからGoogleに移り,ブロガーとしても人気のあるSteve Yegge氏などのビッグネームがいくらでも思い浮かびます。また,Emacs多言語化の基礎を築き,現在もEmacs本体の開発に参加している半田剣一氏など,日本のソフトウェア開発をリードしてきた方々の活躍も忘れることはできません。そういったハッカーに憧れて,Emacsに興味を持った方も多くいるのではないでしょうか。
さて,ここで筆者とEmacsの出会いについてお話します。自身のブログを参照してみると,初めてEmacsに触れたのは2007年11月で,MacBookを購入し,WindowsからMacの世界へとやってきたのがきっかけでした。それまではxyzzyというEmacsライクなエディタを利用していたのですが,Windows専用のソフトウェアであったため,Macでも動作するEmacsを使い始めました。
つまり,筆者は本書執筆現在,Emacsを使いはじめてまだ4年しか経っていません。ですが,幸いにもWebで知り合った方々に助けられ,Emacsについて多くのことを学ぶことができました。筆者にとってEmacsについて学ぶことはとても楽しく,そのことを共感してもらいたくてブログを書き続けた結果,本書を執筆するに至ったわけですが,なぜ,ここまでEmacsにのめり込んだのか改めて考えてみます。
筆者がインターネットに触れたのは2002年の中ごろで,その広大さ,自由さ,変化の激しさに熱中しました。大好きな言葉に,「Anyone can say anything about anything」(誰もがどんなことについて何でも言える)というフレーズがあります。これはWebが自由で拘束がない世界であることを表しているのですが,Emacsもまさに同じ思想のソフトウェアなのです。
本書のAppendixで軽く触れていますが,Emacsはフリーソフトウェアであり,自由があります。すべてのソースコードが開示され,誰もが何でも変更可能ですし,またそれをリリースすることも認められています注3。
その精神はEmacsのソフトウェア設計にも息づいています。Emacsは限りなくカスタマイズ可能になっており,柔軟さは数あるソフトウェアの中でも至高の存在です。その柔軟さゆえに,学習コストが高いと言われたりもするのですが,「何でもできる」のは本当に幸せです。なぜならば,不満を自分の力で解消できるからにほかなりません。
しかし,最近ではIDE(Integrated Development Environment,統合開発環境)と呼ばれる開発を力強く支援する機能が多く盛り込まれたソフトウェアが存在し,いつまでも古臭いEmacsに固執する必要があるのか? という疑問の声を聞くこともあります。
たしかに,最初から便利なIDEは学習コストも低く,プログラミングを始めるには良い選択肢だと思います。ですが,筆者はIDEでは学ぶことのできないことをEmacsから学びました。それがLispというプログラミング言語です。
Lispは,1958年にJohn McCarthy氏によって考案されました。EmacsにはEmacs Lispという方言が拡張言語として採用されています。このLispに触れるまで,筆者はプログラミングが苦手でした。嫌いだったと言っても過言ではありません。それは,プログラミング言語に必ず存在する「関数」について正しく理解できていなかったためです。しかし,Emacs Lispに触ることで関数型言語を体験し,関数が何であるのかを理解できました。その結果,プログラミングへの苦手意識はきれいさっぱり消え去ってしまいました。
このように,EmacsにはIDEやほかのエディタでは体験できない要素が詰まっています。Emacs Lispについては残念ながら本書では詳しく解説していませんが,興味のある方は「Lisp 一夜漬け」を参考に触れてみるとよいかもしれません。
本書は,筆者が初めてEmacsに触れてから,これまで学んできたことをまとめた解説書です。筆者自身が初学者だったときにつまずいた点・難しかった点については特に丁寧に解説しています。
また,筆者自身が現役のWebサービス開発者であるという視点からも,日々の開発でなくてはならない設定や,拡張機能などを紹介しています。もし,あなたが開発者であったり,開発者を志すのであれば,本書がきっと助けになってくれるはずです。
本書が,初めてEmacsに触れる方にとっての良き入口となり,すでにEmacsを利用している方にとっての良き成長の糧となり,一時的にEmacsから離れてしまった方にとって良き復帰材料となれば最高に幸せです。
- 注1)
- 「Emacs」『フリー百科事典 ウィキペディア日本語版』。2012年2月10日15時(日本時間)現在での最新版を取得。文字間の半角スペースや記号は本書に合わせて変更しています。
- 注2)
- 「本書に寄せて」をご執筆いただきました。
- 注3)
- ただし,あなたがリリースしたものについても同様の自由を与える必要があります。
謝辞
最後に,スタートアップの忙しい時期に本書執筆を承諾してくれたラングリッチのメンバー。応援してくれた家族,執筆場所といつもおいしいうどんを提供してくれた「めん屋 森友店」のみなさん,最後まで辛抱強くサポートしてくれた技術評論社編集部の池田様,そして本書を手にとってくださったあなたに感謝します。