新刊『Emacsテクニックバイブル 〜作業効率をカイゼンする200の技〜』8/3発売

みなさん、楽しくEmacsしていますか?

この度、技術評論社より『Emacsテクニックバイブル 〜作業効率をカイゼンする200の技〜』を発刊することになりました。

Emacsには無数のコマンド、操作方法、Lispプログラム、設定があって、ムズカシイし、ややこしいですね。 あなたもきっと、そんな印象を持っているかと思います。

Emacsは現在、新しい時代へ向かっています。 Emacsは歴史のあるソフトウェアですが、ここ数年で多くの先進的なLispプログラムが登場してきました。

本書は次世代Emacsのありかたについてあなたにお伝えするものです。 本書をマスターすれば、Emacsの便利さを再発見し、Emacsユーザの最先端を走ることができます。

<2010-07-17 土> Update: 目次を公開しました

<2010-08-10 火> Update: 正誤表

筆者とEmacs

本書の内容に入る前に、筆者の歩んできた道を紹介しましょう。

1993年春、筆者が初めてパソコンと出会いました。 当時はWindowsではなくてMS-DOSの時代でした。

MS-DOSとは、乱暴に言えば低性能のパソコンで動く劣化Unixみたいなものです。 今のようにグラフィカルな画面で操作するのではなく、コマンドラインからコマンドを打って操作するものでした。 「ワープロソフトは重いから、ちょっとした文章を書くならテキストエディタで」と言われていました。 エディタはNIT Emacsを使っていました。 これは、「にてまっくす」と呼びEmacsの縮小版です。 当時のパソコンでは、本物のEmacsはあまりにも大きすぎて動かなかったのです。 Emacsとはナニモノ? エディタは軽いという常識を覆すEmacsに好奇心をかりたてられ、使いたくてたまらなくなりました。

1996年夏、Linuxという名のパソコンで動くUnixクローンがあることを知りました。 Unixへの憧れが強かった筆者は、迷わずWindows95を捨ててLinuxをインストールしました。 そして、コマンドラインからemacsと打ち込んだとき、起動しました、夢にまで見た本物のEmacs(当時はEmacs19)です。 M-x (Altキーを押しながらx)の後にTABを押すと、補完ウィンドウにNIT Emacsには存在しない無数のコマンドがざっくざく出てきました。 質素すぎるあの画面から、広い世界への入口を感じました。 これが筆者とEmacsとの出会いです。

しばらくEmacsを使ってみて、気付きました。 「こうしたいんだけど、いったいどう操作すればいいんだ?」、「こういう機能が欲しいんだけど、どのコマンドを使えばいいんだ?」、などなど無数の疑問が出てきました。 当時は今のようにインターネットが発達しているわけではなかったので、調べるのは容易ではありませんでした。 Emacsに詳しい人も、近くにはいませんでした。

Linuxメーリングリストやフォーラムで質問すれば誰か答えてくれるかもしれない、と思い、わからないところを質問していきました。 しかし、返ってきた答えは「そんなの自分で調べろ」など厳しい言葉が多かったのを覚えています。 調べ方がわからないから質問してるのでしょ、という言葉を胸に秘め、メーリングリストから遠ざかっていきました。

Emacsは、Emacs Lispというプログラミング言語を使って自由自在に機能を追加することができます。 幸いEmacs Lisp日本語マニュアルがありました。 ならば自分で実現してしまおう、という発想でEmacs Lispを勉強し始めました。 今思えば、既存の機能を自分で実装して、いわゆる車輪の再発明をしていたことでしょう。 しかし、その機能へ到達する道筋がわからなかったのです。

なんとか欲しい機能(コマンド)を実装したものの、今度は別の問題に直面しました。 コマンドは自由にキーに割り当てることができますが、「割り当てたキーが覚えられない」、「せっかくキーに割り当てても使わないうちにキーを忘れてしまう」問題です。 気付くとコマンドの存在そのものも忘れてしまいます。 最初は便利だと思っても、時間がたつにつれて使わないコマンドが出てくるものです。 そして、使わないものは忘れてしまうのが人間です。 そんな感じで、幾多のコマンドが生まれては(頭の中から)消えてきました。

時はたち、インターネット常時接続時代が来ました。 自作Emacs Lispを公開する場所ができたので、ちょくちょく公開していきました。 それでも、「覚えられない問題」は相変わらず深刻で、解決しようといろいろ考えました。 この問題の解決ができないまま、時ばかりが過ぎていきました。 Emacsは難しい、覚えられない、そして、きりがない。 とにかくもがき苦しみました。

2007年夏、anything.elというLispプログラムが登場したことで転機が訪れました。 何かクエリを入力すると、適切な機能が提示されるという奇跡のLispプログラムです。 その革新的インターフェースに、筆者は魅了されました。 もう複雑なコマンドを覚えなくてもいいのです。 もうもがき苦しまなくてもいいのです。 そして、そのことをブログに書くと、 またたくうちに日本でもanythingブームが訪れました。 Software Designにもanythingの記事を書きました。

奇跡はまだ終わりません。 ちょうど1年後、2008年にanythingの開発を引き継ぐことになりました。 原作者はanything開発の時間が取れないとのことで、熱烈なanythingファンの筆者がすぐに次期開発者として名乗りを上げ、了承されました。 バグを修正し、使いやすくするために大幅に機能を追加しました。 その結果、コードは約4倍に膨れ上がりました。 熱狂的なファンも増えました。 anythingを使ったLispプログラムもたくさん登場しました。 いつしかanythingがないと生きていけない様を表す「anything脳」という言葉も登場しました。 anythingで生産性が上がった人がたくさんいます。 そして現在は「anythingのるびきち」として知られるようになりました。

本書について

このように、筆者とEmacsの付き合いは平坦なものではありませんでした。 それでも筆者は長年のパートナーであるEmacsを心から愛しています。 ベテランユーザになった今でも、よりよい問題解決法を模索しています。 その中で得た選りすぐりのテクニックを200個、あなたに継承します。

本書は最小限の労力で楽しく実用的にEmacsを使えるようにするための新しいタイプの解説書です。読者対象は主にEmacsを使ったことのある人向けですが、テキストエディタとは何かということを知っている人ならば読めるように書いています。あなたがEmacs初心者または他のテキストエディタからの乗り変え組ならば、Emacsがどうあるべきかという道筋が見えてくるでしょう。なんとなくEmacsを使っている人ならば、よりよい方法が見つかるでしょう。特に、Emacsは難しすぎて挫折してしまった人には本書でEmacsの良さを再発見できるでしょう。もうもがき苦しむ必要はありません。

多くの解説書ではEmacs標準の機能の解説に重点を置いていますが、本書は外部Lispプログラムに目を向けています。なぜなら、外部Lispプログラムには既存の機能とは異なる発想で作成されていたり、既存の機能をより良くしていくものが多いからです。より良いものをどんどん取り入れていった結果、作業しやすい環境が出来上がってきます。

本書が掲げている「カイゼン」という言葉には、自らの手で現状をより良くするという意味があります。改善という日本語がKaizenとして今や世界で通用する言葉になっています。Emacsにおけるカイゼンとは使いやすくするということです。使いやすいとは、使うための労力を最小限にすることだと筆者は考えています。本書では「覚えることを最小限にする」ことと「指の負担を軽減する」ことに焦点を当てます。

ラスト2章ではあらゆる事柄を統一的に扱う最新インターフェースanythingを開発者自ら紹介します。それ以前の章ではカイゼンにつながるいろいろなLispプログラムを紹介します。個々のLispプログラムについてはとりあえず使ってみてください。使い方を無理に覚えなくてもかまいません…どうせ最後には統合されるのですから。

本書を最後まで読み切れば、Emacsの「今」がわかるでしょう。逆引き形式で書かれているので、必要に応じて部分読みすることもできます。

次はあなたが先進Emacsユーザになる番です!

予約注文受付中

注文はこちらから→http://www.amazon.co.jp/gp/product/4774143278

はてなブックマークhttp://b.hatena.ne.jp/entry/www.amazon.co.jp/gp/product/4774143278

返事

To 23.1.1試行錯誤中

目次公開しました。

To id:maskin

ありがとうございます。 僕もこの本はemacs+org-mode+skkで執筆しました、奇遇ですね。 書籍の原稿を1つのorgファイルにするとHTML変換がめちゃくちゃ遅いので、非同期化するhackを噛ましましたが。

To id:inouetakuya

電子化の予定は今の時点ではありません。

To id:at-aka

http://at-aka.blogspot.com/2010/07/emacs.html

応援記事ありがとうございます。

ちなみにfcopy.el便利に使ってます。 GNU Screenみたいな感じでなかなかイケてる割に、ユーザが少ないのが不思議です。