[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
テキストエディタGNU Emacsの大部分はEmacs Lispと呼ばれるプログラミング 言語で書かれている。 このプログラミング言語で書いたコードは、ユーザーが指令を与えた ときに何をすべきかをコンピュータに指示するソフトウェア(一連の命令)である。 Emacsは、Emacs Lispで新たにコードを書いてエディタの拡張機能として 簡単に追加できるように設計されている。 「拡張可能なエディタ」と呼ばれる結縁である。
(Emacsは編集機能以上のものを提供するため、「拡張可能な計算環境」とでも 呼ぶべきであるが、少々いいづらい。 マヤ暦や月の満ち欠けを調べたり、多項式を簡約化したり、コードをデバッグしたり、 ファイルを管理したり、手紙を読んだり、本を書いたりなどの Emacsで行えるすべてのことは、もっとも一般的な意味で編集である。)
Emacs Lispはテキストエディタに関連付けて考えられがちであるが、 それ自体で1つのプログラミング言語である。 他のプログラミング言語と同様に使える。
プログラミングを理解したい、Emacsを拡張したい、プログラマになりたいという 読者もいることであろう。 Emacs Lispの入門である本書は、プログラミングの基本を学ぶための指針を与え、 さらに重要なことは、自力で学習する方法を示すために執筆したものである。
本書には、Emacsで実行できる小さな例題プログラムがある。 GNU EmacsのInfoで読んでいる場合には、 例題プログラムに出会うたびにそれらを実行できる (これは簡単に実行できるが、その方法は例題をあげたときに説明する)。 あるいは、Emacsが動いているコンピュータを脇に置いて、 印刷された本書を読んでいる場面もあろう (これは、筆者の好みでもある。 筆者は印刷した書物が好きである)。 手もとでEmacsを実行できなくても本書を読む意味はある。 ただし、そのような場合には、小説や初めての国への旅行案内とみなしてほしい。 興味深いはずであるが、実際にそこにいるのとは異なる。
本書の大部分は、GNU Emacsで使っているコードを眺める、 つまり、ウォークスルーであり、ガイド付きツアーである。 これらのツアーには2つの目的がある。 第一に、実際に動作する(日常的に使用している)コードに慣れてもらうことであり、 第二に、Emacsの動作方式に慣れてもらうことである。 エディタの実装方式を学ぶことは興味深いはずである。 また、ソースコードを読み進む際のコツも学んでほしい。 ソースコードから学んだり、アイデアを堀り起こせるはずである。 GNU Emacsはまさに宝の山である。
エディタとしてのEmacsやプログラミング言語としてのEmacs Lispを学ぶことに加えて、 例題やガイド付きツアーは、Lispのプログラミング環境としてのEmacsを熟知する 機会となるはずである。 GNU Emacsは、プログラミングの支援に加えて、M-. (コマンドfind-tag
を起動するキー)などの慣れると便利なツールも提供する。 エディタ環境の一部であるバッファやその他のオブジェクトについても学ぶ。 Emacsのこれらの機能を学ぶことは、読者の街の周りの道を新たに学ぶことに似ている。
読者が知らないプログラミングの側面を学ぶためのEmacsの利用法も伝えたいと思う。 読者を惑わすことがらを理解したり、新たなことを行う方法を調べるためにも Emacsを利用できるのである。 この独立性は好ましいだけでなく利点でもある。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
本書は、プログラマではない人向けの初歩の入門書である。 すでにプログラマである読者には、本書は物足りないであろう。 というのは、そのような読者はすでにリファレンスマニュアルを存分に読めるように なっており、本書の構成は間延びして見えるであろう。
経験あるプログラマは、本書をつぎのように評価してくれた。
リファレンスマニュアルで学ぶほうが好きである。 各段落に「飛び込んで」、段落のあいだで「息つぎ」する。段落を読み終えたときには、そこで取り上げた話題は完結しており、 必要なことは(以降の段落でより詳しく説明する場合を除いて) すべてわかったと仮定したい。 よく構成されたリファレンスマニュアルには、 冗長な部分がなく、必要な情報への索引が整備されているはずである。
本書は、このような人向けではない!
第一に、おのおののことがらを少なくとも3回は説明するように努めた。 1回目は紹介、2回目は使い方、3回目は別の使い方や復習である。
第二に、1つの話題に関するすべての情報を1か所にまとめることはせずに、 1つの段落に詰め過ぎないようにした。 筆者の考え方では、そうしないと読者に重荷を背負わせることになるからである。 かわりに、その時点で必要なことのみを説明するように努めた (あとで詳しく説明する場合に備えて、少々余分に説明する場面もある)。
1回読むだけで、すべてを理解してもらえるとは考えていない。 読者は、説明内容を「わかったつもり」にしておく必要があるだろう。 重要なことがらを正しく読者に指し示し、 注意を促すように本書を構成したつもりである。
いくつかの段落には、「飛び込んで」もらうしかなく、 それ以外に読み進む方法はない。 しかし、そのような段落の個数は少なくするように努めた。 本書は登頂困難な山ではなく、楽に歩ける小山である。
本書
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
Lispは、人工知能の研究のために、 1950年代末にマサチューセッツ工科大学で初めて開発された。 Lisp言語はその強力な機能のため、 エディタコマンドを書くなどの他の目的にも優れている。
GNU Emacs Lispは、1960年代にMITで開発されたMaclispから多くを受け継いでいる。 1980年代に標準規格となったCommon Lispからも一部を受け継いでいる。 しかし、Emacs Lispは、Common Lispよりもずっと単純である (Emacsの標準ディストリビューションには、 Common Lispの多くの機能をEmacs Lispに追加するための 機能拡張用ファイル`cl.el'がある)。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
GNU Emacsを知らない読者にも、本書は有益であろう。 しかし、たとえスクリーンの移動方法だけであってもEmacsを学ぶことを勧める。 Emacsの使い方は、オンラインのチュートリアルで自習できる。 それには、C-h tとタイプする (つまり、CTRLキーとhを同時に押してから離し、 さらに、tを押してから離す)。
Emacsの標準コマンドを参照するために、 M-C-\(indent-region
)のように、 コマンドを起動するために押すキーに続けて括弧内にコマンド名を書く。 つまり、コマンドindent-region
は、 慣習的にはM-C-\とタイプすると起動できることを意味する (望むならば、コマンドを起動するためのキーを変更することもできる。 これをリバインド(rebinding)という。 See 節 16.11 キーマップ)。 M-C-\は、METAキー、CTRLキー、\キーの3つを 同時に押すことを意味する。 ピアノを演奏するときの和音になぞらえて、 このような組み合わせをキーコード(keychord)と呼ぶこともある。 METAキーがないキーボードでは、かわりにESCキーを前置キーとして使う。 このような場合には、M-C-\は、ESCキーを押して離してから、 CTRLキーと\キーの2つを同時に押すことを意味する。
GNU EmacsのInfoで読んでいる場合には、 スペースバーSPCを押すだけで全体を読み進められる (Infoについて学ぶには、C-h iとタイプしてInfoを選択すればよい)。
用語に関しての注意:単語Lispのみを使った場面では Lispのさまざまな方言全般を意味するが、 Emacs Lispを使った場面ではGNU Emacs Lispのみを意味する。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
本書の執筆に協力していただいた方々に感謝したい。 特に、Jim Blandy、Noah Friedman、Jim Kingdon、Roland McGrath、 Frank Ritter、Randy Smith、Richard M. Stallman、 Melissa Weisshausに感謝したい。 辛抱強く励ましてくれたPhilip JohnsonとDavid Stampeにも感謝したい。 誤りがあれば筆者の責任である。
[ << ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |