【特典付】『Emacs Lispテクニックバイブル』発売します
お久しぶりです。この度、新著の
『Emacs Lispテクニックバイブル 〜真髄を知るLispの掟〜』
を執筆しました。この本は、すでにEmacsを使っている人が、
Emacsを手足の如く扱うことを目的にしています。前著『Emacsテクニックバイブル 〜作業効率をカイゼンする200の技〜』は
あらゆるEmacs Lispプログラムを活用して、快適な環境を構築するための
カタログ的な本でした。紹介された様々なEmacs Lispプログラムによって、
あなたのEmacsは劇的な進化を遂げたことでしょう。それでも、人間の欲というものは限りないものです。
「このEmacs Lispプログラムのココが気に食わない」
「このようなEmacs Lispプログラム欲しいけどないなー」
「世界でただ一つ、俺だけのEmacsを作りたいぜ」みたいな欲が出てくるんですね。
もし、その感情が湧いたことが一度でもあるのならば、
本書は絶対に買わないといけないと断言できます。そもそもEmacs上での課題を解決するには、
2通りの解決法しかありません。
- それを解決してくれるEmacs Lispを探す
- 自分でEmacs Lispを書いて解決する
こう書くと、探す方が圧倒的に楽であるかのように
思えてきますが、そう簡単な問題ではありません。
そこに立ち塞がる最大の壁が
「英語」
です。
我々日本人の多くは、英語を速読することができません。
Emacs Lispプログラムを探すにしても、
大量の英語の海に入らないといけないのです。
さらに、他人のプログラムというのは、
使い方を学ぶこともバカにならないコストです。
マニュアルはもちろん英語です。
丁寧に解説してあれば、なおさら長文の英語を読まないといけません。
そして、コマンドの使い方を覚える場合も、
あらゆる場面でテストをしないと、
予想外の挙動に悩まされることになります。
そのため、小さな問題は自分でEmacs Lispを書いた方が早いのです。
たとえば、F12キーを押すと特定のファイルが
開かれるようにしたいのですが、
ファイルが複数個にわたる場合は、
続けてF12を押して切り換えたい場合を考えます。
ファイルは、以下の3つとします。
- ~/memo.org
- ~/project.org
- ~/gtd.org
これらのファイルは特に重要なので、
ワンタッチで開けるようにしたい
という目的を想定します。
この程度のプログラムならば、
わずか10行(設定込)で済みます。
(defvar file-ring nil)
(defun make-file-ring (files)
(setq file-ring (copy-sequence files))
(setf (cdr (last file-ring)) file-ring))
(defun open-file-ring ()
(interactive)
(find-file (car file-ring))
(setq file-ring (cdr file-ring)))
そして、以下のように設定すれば今すぐ使えます。
(make-file-ring '("~/memo.org" "~/project.org" "~/gtd.org"))
(global-set-key [f12] 'open-file-ring)
お好みのファイルに置き換えて試してみてください。
これくらいのプログラムならば、10分あれば書けます。
もし、これと同じ挙動をするEmacs Lispプログラムが
EmacsWikiにあるとしたら、それを探すのに何分かかりますか?
膨大な英語を掻き分けて、
いろいろな検索ワードを使って
調べないといけません。
当然、そのプログラムがある保証はありません。
存在しなかった場合は、その時間は無駄になってしまいます。
このように、自分で書けば解決する
問題というのは案外多いものです。
そのためには、Emacs Lispの知識が不可欠になります。
Emacs Lispの世界は広大なため、
どこから手をつければいいか
わからない人が多いと思います。
Emacs Lispマニュアルは膨大な情報が含まれていますし、
幸いなことに日本語訳も存在します。
しかし、情報が古い上に、普段使わない事柄も
多く載っているため、すべてを理解するのは
とてつもなく時間と労力がかかり、困難です。
マニュアルというのは、性質上全ての
事柄について説明してあります。
それに対して、本質的に必要となる知識は
20:80の法則が表すように2割程度に過ぎません。
めったに使わない知識については、
必要なときに調べれば済むことです。
マニュアルから学ぶということは、
かなり時間のロスになってしまいます。
あなたは、
Emacs Lisp学者になりたいわけではありませんよね?
自分が抱えている問題を解決したいのですよね?
そこで、本書では重要な事柄を330ページに凝縮し、
以下のステップでEmacs Lispを教えていきます。
1) プログラミング言語elispの基礎を知る
2) バッファとウィンドウによる表現方法を学ぶ
3) 関数を少しずつ覚えていく
4) オンラインヘルプの使い方を学ぶ
5) 応用的な知識をつける
6) Common Lispマクロを使ってエレガントに表現する
7) テスト、デバッグ方法を知る
8) 実際にelispで書いてみる
日常の作業を便利にする小さなコマンドくらいは、
2段階目が終わった段階で書けるようになります。
5、6段階目に入ったところで、本当の
Lispの楽しさを知ることになります。
どうせ学ぶなら、楽しい方がいいに決まっています。
なので、Lispを毛嫌いしている人も、
挫折した人も、もう一度Emacs Lispの
ひいてはEmacsの楽しさを再発見して
いただきたいです。
本書は僕の近著とは異なり、オーソドックスに
基礎から順番に解説していくスタイルです。
最初はとても易しく、徐々に高度な内容に
入っていく形をとっています。
ただ、これだけだと前に学んだ内容を
忘れてしまう問題があります。
そのため、各章末には「まとめ」を設け、
手軽に復習できるようにしています。
それでも学習していくうちに、
「こういう時には何を使うんだっけ?」
という疑問がわいてくるものです。
そこで、「逆引き目次」というのを作成しました。
たとえば、
「代入するには『setq』を使う p48[2-2-3]」
「コマンドを定義するには関数定義の最初に『interactive』を置く 78[2-10-1]」
といった具合で答えが書いてあるページ数と項番号を書いています。
よって本書は、オーソドックス+逆引きの
ハイブリッドスタイルとなっています。
頭から読んで基礎から応用までをマスターし、
その後で疑問に思ったときに辞書的に
活用できるようにしています。
本書には、以下の内容が含まれています。
- あなたはなんでもかんでもelispで書きたいですか?そうですか、でもelispの特性を知らないと100倍動作が遅くなり、実用的ではありません。すべてelispで書いて使いものにならなかったプログラムの紹介。
- 関数定義の本当の意味とは?一度この視点を持ってしまえば、あなたのコードは10倍綺麗になります。
- Lispの括弧が嫌いですか?怖いですか?大丈夫です。今までいらついていた括弧と逆に親友になる魔法を教えます。
- 新たなプログラミング言語がなかなか覚えられないで困っていますか?そうですか。elispのプログラムの実行の仕組みは1節に収まるほどとても簡単なのですぐに覚えられます。
- あなたは*scratch*バッファにコードを書いていませんか?これほどもったいないことはありません。試行錯誤した経験を後で活かす方法をシェア。
- 対話的にelispを実行するときはシェルのようなインターフェースが好きですか?それは最高のインターフェースではありません。テキストエディタの特性を活かし、一度に複数の式の評価結果を知る方法を教えます。
- 正規表現を作成するのは苦手ですか?そうですか。では、このコマンドを使って正規表現を組み立ててください。初心者でも1分足らずで複雑な正規表現を作成できるようになります。
- elispの正規表現はバックスラッシュの羅列で醜いですね。安心してください。実は人間にとって簡単に理解できる正規表現の記法があるのです。この記法に置き換えて、メンテナンス地獄から逃れてください。
- コンスセルとリストの違いがわからない?それらをとあるものに例えれば5才児相手にも説明できるようになります。
- whileループを使うのはやめてください。コードの意図をはっきりと表現する方法を学び、まわりのプログラマを一気に追い抜いてください。
- バイトコンパイラはそのままではただの時間泥棒です。現状では、高速化の恩恵よりも、バイトコンパイル問題解決の方に時間を取られてしまうのです。とある仕掛けを施して悪魔を封印し、あなたのelispを常に2倍速で動かしてください。
- ヘルプバッファを表示することでせっかく作り上げたウィンドウ構成が壊されていませんか?ウィンドウ表示方法を根底から覆し、邪魔されなくする方法をシェア。
- オンラインヘルプを見るのに、複数のコマンドを使い分けていませんか?いまや、たった一つのコマンドを覚えれば検索もヘルプも定義もすべてがまかなえるのです。
- 最新のEmacsではハッシュテーブルに大革新が起きたことを知っていますか?強力でありながら、これまで使いづらかったデータ構造でしたが、一気に市民権を得るようになりました。
- Lispは参照と設定が別の関数(carとsetcarのように)になっていて覚えにくいですよね?この概念を使えば参照の関数のみで値を設定することができます。あなたの脳内メモリを解放してあげてください。
- Common Lispの様々な機能がうらやましいですか?そうですか。実は、elispにはすでに多くのCommon Lispの機能が使えるようになっているのです。数々の便利機能を伝授。
- 一連のデータの塊を名前でアクセスしたいですか?でもLispの構造体は複雑すぎて困る?いいえ、本質さえ理解すれば十分なのです。学んですぐに使えます。
- loopマクロが覚えられなくて悩んでいませんか?loopマクロのコアさえしっかりとらえれば、決して難しくありません。1時間であなたもloopマスターになれます。
- メジャーモードを作成することに抵抗がありますか?実はメジャーモードは最短1行で定義できます。初心者でもメジャーモードを作成できる方法を伝授。
- あなたはメジャーモードを作成する必要がないかもしれません。多くの人が知らないたった一つの式を.emacsに入れるだけで、メジャーモードの数が20個以上増えます。
- Emacsユーザにとっての理想的なシェル環境とは?この秘密を知ってしまえば、10年間使ってきたシェルにサヨナラを告げ、Emacsからあらゆるコマンドを起動してしまうようになります。
- Emacsをマルチスレッド化する方法とは?これまで不可能と思われたelispによる並列プログラミングを可能にする秘技を伝授。
- 実用的なアプリケーションを初心者でも作成できてしまう秘密とは? 最低限のコードを記述すれば、あとはEmacsに任せるだけです。
- 関数の中に関数が書けることを知っていますか?方法は3つあるのですが、それぞれ全く異なる目的になります。その使い分けの基準を明確に教えます。
- Rubyのブロック付きメソッドが羨しいですか?それに相当する機能はRubyが生まれるはるか昔から存在するのです。喜べ!Rubyistたちよ!!制御構造定義でもメタプログラミングでもなんでもやってしまってください。
- 関数の途中で抜けることができなくて書きにくいですか?その方法はある秘密を使えば可能です。これで手続き型言語に慣れている人も安心です。
- 我々が普段から使っている「同じ」という言葉には、2通りの意味があることを知っていますか?両者の違いを小学生でも理解できる言葉で解説!
- 多種多様な制御構造が用意されている本当の理由とは?使い分けの基準を明確にします。
- Emacsで音楽・動画を再生したいですか?elispはこういうことも可能なのです。
- 気に入らない挙動の関数を正す最強の方法とは?行儀悪い関数はこの秘術で教育してください。
- あなたのプログラムのファンに対して敬意を払う方法とは?これを守って開発しないと、あなたのプログラムのファンから不満を買い、使ってもらえなくなります。
- Windowsのコマンドプロンプトは劣悪でイライラしますよね?無理矢理Windowsを使わされているUnixウィザードにとっての救世主がココにいます。コマンドプロンプトを投げ捨て、コレに置き換えてください。
- 小さなネットブックでウィンドウが分割されるとストレスですよね?この設定でウィンドウ分割が抑止し、快適にEmacsを使い倒してください。
- 変数ひとつ変更するだけでプログラム全体に変化をもたらす「データ駆動プログラミング」の秘密とは?このテクニックを活用して、保守性を5倍に引き上げてください。
- Lispだからこそできる強力なデバッガとは?一度これを使うと、プログラムのおかしい部分がすぐにわかり、あれだけ忌み嫌っていた括弧に惚れてしまうようになります。
- 他にもここでは紹介しきれないまだまだ多くの秘密を公開...
本書は、初歩からEmacs Lispを活用できる
レベルまで一気に引き上げる内容です。全体像をはっきり描き、基礎から最新技術まで
無理なく身に付けられるようになっています。さらに「逆引き目次」により、
本書に書いてある事柄ならば
あらゆる質問の答えが書いてあります。これで、あなたはEmacs Lispをマスターし、
Emacsを手足の如く操り、楽しいEmacsライフを
過ごすことから逃れられません。これ読まずして、どうやってEmacs Lisp覚えるの?
これを読まないと、Emacsマスターにはなれません。
プレゼント!
さらに、お買上の人には秘蔵の 音声ファイルをプレゼントします。 Vim界のanything.elといわれているunite.vimで 有名なShougoさんとの対談です。 タイトルは 「EmacsとVim〜二人の異端児による次世代エディタ裏話〜」 です。 EmacsとVim、世界は違えどやりたい放題で お互い思い切り創造的破壊かましています。 この対談はディープでコアでかなりアブないです。 Emacs Lispを書く人はもちろん、 Vimスクリプトを書く人も必聴です。 プレゼントはすぐに締め切るので申請はお早めに。
次回は、もう一つのプロジェクトを発表します。 お楽しみに!