[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

序文

GNU Emacs というエディタは大部分が Emacs Lisp と呼ばれるプログラミング言 語で書かれている。このプログラミング言語の中に書かれているコードは、計算 機がコマンドが与えられた時何をすべきかを教えるソフトウェア---命令の集ま り---である。Emacs は、あなたが Emacs Lisp で新しいコードを書き、簡単に 拡張機能としてエディタに組み込むことが出来るよう設計されている。これが Emacs が「extensible editor (拡張可能エディタ)」と呼ばれる所以である。

(実際には、Emacs は通常エディタが出来ると思われている機能をはるかに上回 ることをやってのけるので、むしろ「extensible computing environment (拡 張可能計算機環境)」とでもいうべきだろう。まあ、ちょっと長ったらしいフレー ズになってしまうし、あなたが Emacs の中でする全てのこと---マヤ暦や月の満 ち欠けを調べたり、多項式を整理したり、コードをデバッグしたり、ファイルを 扱ったり、手紙を読んだり書いたりといったこと---はもっとも広い意味では編 集 (edit) の範疇に属するものではあるが。)

何はともあれ、Emacs Lisp はテキストエディタに関する言語と思われがちであ るが、実際は計算機全体に関するプログラミング言語である。あなたはこの言語 を他のプログラミング言語と同じ様に使うことが出来るのだ。

多分、あなたはプログラミングを理解したいと思っていることだろう。あるいは、 Emacs の機能を拡張したいとか、プログラマになりたいと思っているかもしれな い。

この Emacs Lisp についての文書は、その出発点を示すことを意図している。つ まり、あなたをプログラミングの基本的な事柄に慣れさせ、更により大切なこと だが、あなたが自分自身でより先に進むにはどうしたら良いかを示すことを目的 としている。

このテキストを読むにあたって  
これは誰のために書かれたものか  
Lisp の歴史  
初心者の人へ  
謝辞  
訳者まえがき  

このテキストを読むにあたって

この文書の中には、Emacs の中で走らせることの出来る小さなサンプルプログラ ムが登場する。この文書を GNU Emacs の Info の中で読めば、そのプログラム をその場で走らせることが出来る。(これは簡単に実行出来る。その方法はその プログラムが出てきた時に説明する。) あるいは、この文書を印刷製本し Emacs が走っている計算機のそばに座りながら読むことだって出来る。(私はこの方法 が好きだ。私は印刷された本の方が好みなので。) たとえあなたの近くで Emacs が動いていなくても、この本を読むことは出来る。が、その場合はこれを小説か、 まだ行ったことのない国の旅行ガイドのように扱うのが良いだろう。面白いにし ても実際とは違うものだ。

この文書の多くの部分は、GNU Emacs の中で使われるコードのガイドツアーとい うべきことに費やされている。これらのツアーの目的は次の二つである。一つ目 は、あなたを実際に役立つコード (あなたが毎日使うコード) に親しませること。 二つ目は、あなたを Emacs を活用する方法に親しませることである。エディタ がどのように実装されているかを見ることは面白いものである。また、私はあなた がソースコードを眺める習慣を身に付けることを望んでいる。あなたはそこから いろいろなこと学び、そしてアイディアを発掘することが出来る。GNU Emacs を 手に入れるということは、宝が隠されたドラゴンの洞窟を発見したようなものな のである。

これらの例やガイドツアーを通して、エディタとしての Emacs を学んだり、プ ログラミング言語としての Emacs Lisp を学習するだけでなく、Emacs が Lisp プログラミング環境であることを理解するきっかけが与えられることだろう。 GNU Emacs はプログラミングをサポートし、あなたが快適に使いこなしたくなる ような様々な道具を与えてくれる。例えば M-. (find-tag コマン ドを発生させるキー) なんかがそうだ。また、エディタ環境の一部であるバッファ やその他のものを学べる。Emacs のこれらの特徴を学ぶことは、あなたが故郷に 帰る新しいルートを探すことに例えられよう。

最後に、私はあなたがまだ知らないプログラミングの側面を学ぶために Emacs を利用して出来る幾つかのテクニックを伝えることが出来ればと思う。難解な事 柄を理解したり、何か新しいことをしたりする際、その解決方法にしばしば Emacs そのものを利用することが出来る。こういった自己完結性があることは、 単に気分が良いというだけでなく、実際に非常に便利なものである。


これは誰のために書かれたものか

この文書は、プログラマではない人々への、初歩的な入門書として書かれている。 もしあなたがプログラマであるなら、あなたはこのような簡単なものでは満足出 来まい。というのも、あなたは既にリファレンスマニュアルを読むのに熟達して いるかもしれないし、その場合この文書のような書き方ではまどろっこしく感じ るだろうからだ。

例えば、この文書を読んだある熟練したプログラマは、私に次のように言った。

僕は、リファレンスマニュアルから学ぶ方が好きなんだ。各々のパラグ ラフに「ダイブして」そして各パラグラフの間で「息継ぎをする」感じだ。

僕はあるパラグラフの最後に辿り着いたら、その主題については終了したも のと見倣すんだよ。つまり、(次のパラグラフでより詳しいことが説明されるよ うな場合を除いて) 必要なことは全て分ったと考えるわけなんだ。だから無駄な 沢山の繰り返しがなくって、必要な情報が載っている個所へのポインタがきちん と整備されているようなのがいいな。

この入門書はこのような人のために書かれたのではない!

まず一つ目に、私は全てのことを少なくとも3回は繰り返すようにした。まずは それを紹介し、次にそれがどんな場合に使われるかを見て、そして、別の使われ 方を見るか、それを復習するといった具合だ。

二つ目に、私はその主題についての全ての情報を一箇所にまとめるようなことは 殆どしなかった。ましてや、一つのパラグラフに押し込めるようなことは避けた。 これは個人的な考えだが、そういうやり方は読者に過剰な負担を強いることにな る。その代わりに、私は各々の場合に必要なことだけを説明するように心がけた。 (時々は、後で正式に説明する時に戸惑うことのないよう、ちょっと先走った事 柄の説明も含めたりしたが。)

この文書を読む時は、あなたは全てのことを初めて学ぶものと考えられている。 取り上げられた幾つかの項目については、言わば、会えば会釈する程度の浅い付 き合いしかする必要がないものもある。あなたが本当に大切なことが何かに気付 き、それに集中することが出来るだけの十分なヒントを提供出来るように、この 文書をうまく構成出来ていればと思う。

あなたは、幾つかのパラグラフには「ダイブする」必要がある。それらには、別 のもっと楽な読み方があるわけではない。しかし、私はそのようなパラグラフの 数はなるべく押さえたつもりだ。この本は、そびえたつ山ではなく、ちゃんと登 ることができる丘であるように書かれている。

この Emacs Lisp によるプログラミング ---初心者のための入門--- は次の本と兄弟関係にある。

section `The GNU Emacs Lisp Reference Manual' in The GNU Emacs Lisp Reference Manual. 日本語訳もある。 透土社から出版されている。

 
GNU Emacs Lisp リファレンスマニュアル
著 Bil Lewis, Dan LaLiberte and the GNU Manual Group.
監訳 榎並嗣智 井田昌之
発売 丸善
発行 透土社
定価 6796円(消費税含まず)
ISBN 4-924828-39-4

リファレンスマニュアルには、この入門書よりも詳しいことが載っている。また リファレンスマニュアルでは、あるトピックについての全ての情報は一箇所に固 まっている。もしあなたが、上に挙げたプログラマのようなタイプなら、こっち を読むべきだろう。また、勿論この入門書を読み終えた後、自分自身でプログラ ミングをする場合には、リファレンスマニュアルがいろいろと便利であることが 納得出来るだろう。


Lisp の歴史

Lisp は最初、1950年代の終わりに、マサチューセッツ工科大学で人工知能の研 究のために開発された。Lisp 言語が持つ素晴しい能力は、エディタのコマンド を書くことは勿論のこと、他の目的についても優秀さを発揮した。

GNU Emacs Lisp は Maclisp の影響を多く受けている。Maclisp は1960年代に MIT で書かれた。Common Lisp の影響もいく分受けている。こちらは1980年代 に標準となった。しかしながら、Emacs Lisp は Common Lisp と比べて非常に単 純である。(標準的な Emacs の配布には、オプションとして `cl.el' が含 まれている。これは Emacs Lisp に多くの Common Lisp の機能を付け加えるた めのものである。


初心者の人へ

もしあなたが GNU Emacs について知らないとしても、この文書には何かしら役 に立つことが書かれているだろう。しかしながら、たとえ、コンピュータのスク リーンの中を動き回るということだけでも良いから、Emacs を学ぶことを薦める。 あなたはオンラインのチュートリアルを使って自分自身でその使い方を学べる。 そのためには、C-h t とタイプするだけでよい。(これは CTRL キーと h キーを同時に押して離し、次に、t キーを押して離すこ とを意味する。) (訳註:Mule ならば、C-h T で日本語や韓国語、タイ語 のチュートリアルが行える。)

また、私はしばしば Emacs の標準的なコマンドを、そのコマンドを引き起こす キーを書き、その後に、そのコマンドの名前を括弧でくくって書くことで示した りする。例えば M-C-\ (indent-region) といった感じだ。(もし 望むなら、そのコマンドを引き起こすためにタイプするキーを交換することも出 来る。これは、リバインディング (rebinding) と呼ばれる。 キーマップ, 参照)。この M-C-\ という省略形は、 META キーと CTRL キーと \ キーを同時にタイプすることを 示している。このような組み合わせはよくキーコードと呼ばれる。理由は、ピア ノでコードを弾くのに似ているからである。もし、キーボードに META キー が無ければ、ESC キーがその代わりになる。この場合は、M-C-\ は、 まず ESC を押して離し、ついで、CTRL\ を同時にタイ プすることを意味する。

もし、この文書を GNU Emacs の Info を使って読んでいるなら、この文書全て をただ単にスペースバー、SPC を押し続けることで読んでしまうことが 出来る。(Info について学ぶには、C-h i とタイプし、ついで Info を選 択すれば良い。)

言葉の使い方についての注意だが、私が単独で Lisp という単語を使う場合は、 大概、Lisp の様々な方言にも通用する、一般的な事柄を述べている。しかし、 Emacs Lisp と言うときは特に GNU Emacs Lisp のことを言及している。


謝辞

執筆に際し助けて頂いた全ての人々に感謝します。特に、Jim Blandy, Noah Friedman, Jim Kingdon, Roland McGrath, Frank Ritter, Randy Simith, Richard M.Stallman, そして、Melissa Weisshaus に感謝します。また、Philip Johnson と David Stampe の 忍耐強い励ましにも感謝します。この文書の間違いは、全て私の責任です。


訳者まえがき

この文書は Robert J. Chassell 氏の『Programming in Emacs Lisp: A simple introduction』を訳したものです。個人用の訳なので拙い所も多く、また形式上 もあまりしっかりしてはいません。が、一応実用には耐えられるのではないかと 判断しています。また、訳者の実力不足のために訳に間違い等が含まれていると 思われますが、お気付きの方は連絡していただけると嬉しく思います。

また、飯田義朗様、木村浩一様、幸田薫様、本田博通様、 山下健司様、岡部拓也様には、以前の版での誤り、不具合等について 指摘して頂きました。 この場をかりて深く感謝いたします。


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Matsuda Shigeki on April, 10 2002 using texi2html