ハジメマシテ.skk です.
社内でも u*nx (*1) 歴が比較的長い筆者は,テキスト処理をする際,Emacs を使うことが多いです.スクリプトやメールの作成,簡単なリスト作成など,細かくテキスト処理を行なう際には,Widows 上でも Emacs を利用しています.
Windows で開発が進んでいるもろもろのエディターや,eclipse などの IDEも使いやすいし,いろんな機能があるのは知っているし,使って便利だとも思うのですが,一度手に慣れてしまったツールというのはなかなか手放せません.
ということで,ネタが尽きるまで,Emacs に絡んだ記事を書いていきたいと思います.
取りあえず今回は,Emacs とはなんぞ?というところから.
Emacs は,GNU を立ち上げた,かのリチャード・ストールマンが 1970 年代に開発したテキストエディタです.当時はラインエディタと呼ばれるタイプのエディタが主流だったそうです.これは,現在のテキストエディタのように,ファイル内の文字がある程度閲覧できる形ではなく,テキストが一行ずつ表示され,その一行に対してどのような操作をするか,プログラミングをするかのように指定していたそうです.(un*x を利用されている方は,sed コマンドを想像して貰えるのが一番近いのではと思います.)
このような時代に,Emacs は WYSIWYG (What You See Is What You Get) なエディタとして登場し,評判を得たそうです.今では一般的な,文字が見渡せて,キーボード入力と同様の結果が反映されるようなタイプのことですね.
このエディタの特徴は,WYSIWYG の他にもう一つ,Lisp と呼ばれる言語をベースにして柔軟なマクロを記述できる点にあります.Lisp は,関数型の言語で,例えば以下のように記述します.
(+ 3 2)
この括弧を評価(実行すること)すると,5 という結果を得られます.すでにEmacs を利用していて,この記事を読んでいる方は,括弧の最後にカーソルを移動させ, C-x C-e と打ってみて下さい.エコー領域に 5 と表示されるはずです.括弧の中の一番最初の要素は関数です.この例では,足し算です.残り2 つの要素は足す対象の要素になります.これを,Emacs 上で評価(実行)すると,5 という結果が下のバーの部分に表示されます.
なぜ Lisp という関数型言語をマクロ言語として採用したのかは,筆者もしりません.どなたか,教えて頂けないでしょうか^^;; Wikipedia をぱっと読んだ感じだと,少ないメモリ空間で動作させる際,関数型言語の特徴適していたように読めます.
この Lisp (Emacs 用にカスタマイズされた言語なので,Emacs Lisp とか,Elisp と呼ばれます),括弧のついたソースコードを直接評価してもよいのですが,バイトコンパイルすることで,5 〜 10 倍程度(体感)の高速な評価が可能になります.バイトコンパイルとは,Emacs のみが理解できる中間コードのことで,現在 Java や C# では一般的な手法になっています.余談ですが,筆者が初めて Java を見た時,「まるで Emacs のようだ」と周囲に話して,笑われた記憶があります.
とりあえず今回はこの辺で.
次回は,各種環境における Emacs のインストール方法の紹介と,動かし方について説明していこうと思います.
*1 un*x とは,unix 風な os のことを総称して指し示す用語です.unix という単語は,The Open Group という団体の登録商標なのですが,unix におけるさまざまな考え方,例えば,マルチユーザ,プロセス,パイプ,シェルや,各種システムコールなどの OS の内部構造が継承された OS が現在も広く使われています.例えば,Linux 系 OS,BSD 系 OS (FreeBSD/NetBSD/OpenBSD),Solaris, IBM のAIX, HP の HPUX などなどです.登録商標の関係上,これら OS のことをUnix like OS とか,un*x とか表現するようです.