紫藤のWiki

最近の更新履歴

.emacsの基本


dot.emacsとは?

GNU Emacsの項目に書いた通り、Emacsは設定ファイルである.emacsファイルが無いと殆ど、と言って良い程使い物になりません。

Windowsを長く使っているとPC UNIXの「設定ファイル」の概念が良く分かりません。少なくとも、Windowsでは「設定ファイル」にあたるバッチファイルを作るのは少々骨が折れます。そもそもWindowsでは環境変数の設定が容易ではないです(また、バグが多かったりします)。
従って、Windowsユーザーが設定ファイルを作る事は殆ど無く、そして、Emacsの「.emacs」の存在に抵抗が生じるのです。

.emacsファイルはPC UNIXでは何も特殊なものではないです。
PC UNIXでは.(ドット)ファイルはほぼ全て「設定ファイル」となります。そして.ファイルはあらゆるアプリケーションで存在するのが普通です。
それらはHOMEディレクトリ内の個人ディレクトリに配置され、元々「マルチユーザー向け」志向のUNIX上で個人個人が「好きな」設定を共有コンピュータ上で実現出来る、と言う大変優れたテクニックだったのです。

.emacsも概念的には上のようなものなんですが、かと言っていきなりEmacs新参者が.emacsファイルを自在に作る、ってのは無理でしょうね。
何らかの雛形があった方が良い。

ところで、GNU/Linuxのディストロ、UbuntuではEmacsは標準搭載されていません。当然viもありません。
UbuntuのデフォルトのテキストエディタはGNOMEの付属テキストエディタであるgeditとなっています。geditはWindowsのメモ帳ライクなテキストエディタなんですが、なかなか高機能なので初心者向けにはこれで良い、と判断したのでしょう。確かにEmacsは少々マニアックです。

GNOME標準のテキストエディタ、gedit

見た目はWindowsのNotepadみたいだが、編集機能は遥に充実している。ある種「羊の皮を被った狼」。確かに初心者には取っ付き易そうに見える。


Ubuntuには標準でEmacsはいらない」
とUbuntuの提供元は判断したんでしょうが、Ubuntu Japanese Teamの判断は少々違ったようです。よほどEmacsファンが多いのか、

「日本語ローカライズ版には追加として簡単にEmacsを導入出来るようにしよう。」

と考えたようです。
そして、.emacsの設定としては、当初はこのページに紹介されていた形で提供していたのですが、 現在ではUbuntuの/usr/share/doc/emacs-env-jaと言うディレクトリに.emacsの「雛形」を提供してくれているのです。ホント、至れり尽くせり、ですね。
つまり、Ubuntuユーザーはそこにあるdot.emacs.exampleをホームディレクトリにコピーして.emacsに「名前を変更」して使えば良い、と言うスタイルになっているんです。
この「雛形」発想は重要だと思います。

この「雛形」もGPLで配布されているようなので、ここで紹介しておいても良いでしょう。
ここでは、Ubuntuで配布しているものそのものでは無くって、Emacs22にも対応するようにちょこっと改良しています(オリジナルはEmacs21用)。また、Lisp系言語では「括弧の対応を見る」のが大事なので、括弧の強調表示モードも付け加えています。
「Emacs最初の一歩」として使って、これを「改造していけば」良い、と思います。
なお、WindowsのMeadowは独自のdot.emacs.jaと言う初期設定ファイルを含めて配布されている模様です。

注意点を一つ。
.emacsは設定ファイルと言いながら、その実態はれっきとした「Emacs Lispで書かれたインタプリタ用スクリプトファイル」です。
従って、ファイルの途中で一ヶ所でも「実行出来ない」場所があればそれ以降は「エラー」となって無視されます。
よって、何らかの異常が見つかった場合はその問題のあるコードを;(セミコロン)でコメントアウトして、「バグの場所」の確認をする事が出来ます。
また、;(セミコロン)によるコメントアウトはLisp系プログラミングの基本テクニックであります。
dot.emacs.exampleでも様々な項目がコメントアウトされているので、どこがどんな効果を生むのか、色々試してみてください。

Emacsでは立ち上げ時にどこで問題が起きたのか、は全てEmacsの*Messeges*バッファで見ることが出来ます。
従って、*Messages*バッファの情報を元にどこがおかしいのか分かるように.emacsでもコメントを上手に活用して設定ファイルを書き上げる事が大事です。
Ubuntuが提供しているdot.emacs.exampleはそう言う「望まれた.emacsの書き方」に関しても基本的なマナーを提供してくれている、と思います。

dot.emacs.example


また、Windows版Meadowもサンプルとしてdot.emacs.jaと言う初期設定ファイルをGPLで配布している模様です。
こちらも括弧の強調表示モードを追加してここで紹介しておきます。Windows版Emacs(ないしは、例えばLispbox)を利用する場合は、これを流用すれば良いでしょう。

dot.emacs.ja

同じくWindows用のNTEmacsの場合、調べてみたらUbuntuやMeadowのように、.emacsのサンプルは配布していない模様です。
なければ作っちゃえ、と言う事で、Ubuntu版及び、Meadow版を参考にして.emacsの雛形、dot.ntemacs.exampleを作成致しました。当然GPLで公開するので、勝手に持って行って下さい(笑)。

dot.ntemacs.example



なお、Windows XP使用者の方に忠告しておきますが、上のdot.ntemacs.exampleはWindowsの美麗フォント、メイリオ使用を前提に書いています。
メイリオは非常に美しいフォントで、これを用いてNTEmacsを使うと、現状では、PC-UNIXの現行Emacsより遥かに気持ちよくNTEmacsを扱う事が出来ます。
この機会に、XPユーザーの方には、メイリオフォントを導入する事をお奨めしておきます。このページを参考にして、メイリオを導入してください。
 

dot.emacsの保存

ここからは少々実践的な話、です。
とは言っても大した話ではないんですがね(笑)。
自分のオリジナルの.emacsの保存をどうするのか?と言う話です。いやいや、ローカル環境の話ではないです。

上で挙げた雛形を流用したとしても、色々な言語モードや開発支援を追加していくと、.emacsはどんどんどんどん肥大化していきます。
あるいは、自分で好みのElispコードを付け足して行っても同じです。あっという間に.emacsは「コンパクトさ」と無縁の存在になっていきます。

一つ、Emacsの愛用者が廃れないのはどうしてか、と言う事に、この「自分独自のオリジナルの.emacsへの愛着」ってのがあると思います。Emacsは古くは75年に誕生してるので、下手すれば30年ものの.emacsってのもこの世のどっかにあるかもしれません。
ワインかよ!!!
ってツッコミももっともですが(笑)、まあ、そう言った事はあり得ます(笑)。自分のクセや好みに合わせてカスタマイズする人はバンバンカスタマイズしますんで。

さて、この.emacsの優秀な部分に、ある意味「可搬性」があります。つまり。ある程度のアドオンが揃ってる環境だったら、
.emacsさえ持ち運べばどのコンピュータでも自分専用のEmacsと同じ環境が再現出来る。
ってのがEmacsの特徴なんです。他人のパソコンだろうが漫画喫茶のパソコンだろうがお構いなし、なんですね(笑)。
プロのプログラマですと、例えば会社のコンピュータと自宅のコンピュータでのEmacsの環境を「全く同じように」するため、古くはフロッピーディスクから始まって、現在ではUSBメモリ辺りに.emacsを入れて持ち歩いている人がいるそうです。一旦「自分専用に」カスタマイズされたEmacsに慣れてしまえば、なかなかその「環境以外」では書けるものも書けなくなってしまいますからね。
この辺の話では、Rubyの作者が書いたまつもとゆきひろのハッカーズライフに興味深い記述がなされてある。彼の.emacsファイルはその時点で812行もあり、今だったら1,000行に到達しているかもしれない。普通のプログラムに比べれば行数は少ないだろうが、ここまで来るといっぱしの「一つのプログラム」である。単なる「設定ファイル」の枠組みを越えている。
ところで、特にLinux環境なんですが、割に定期的に「クリーン・インストール」をする必要性、ってのが出てきたりします。
と言うのも、Linuxに於いては、ディストリビューションにも依りますが、割にヴァージョンアップ、と言うのを頻繁に行わなければならないケースがあります。また、これはアプリケーションのアップグレード、と言うよりは、どっちかと言うと、Windowsで言う「XPからVista」へのアップグレードみたいなもので結構大掛かりなんですね。そして確かに、OS丸ごと変える、と言うのはかなり大変な作業です。
Linux界隈では「ヴァージョンアップの自動化」を頑張っているのは事実なんですが、正直今はそんなに信頼性は高くありません。「自動アップグレード」はパッチレベルならいざ知らず、OS丸ごと入れ替え、と言うレベルではやはりCD/DVDでのクリーンインストールの方が信頼性が高い、のです。もちろん将来的には改善されては行くでしょうが、「今の時点では」自動アップグレードはダメダメなんですね。
そうなると、重要なのは、「今まで使っていた環境に限りなく近い」環境再構築を如何に素早く行うのか、と言うのが鍵になります。再セットアップに「かかる時間」を短縮出来るなら短縮出来るに越したことが無い。特に必要な「設定ファイルの保存」をどうするのか、と言うのが問題になってくるんです。
この文脈に当然.emacsも含まれます。アプリケーション類はレポジトリの整備により再インストールはあまり不便さは感じないんですが、とにかくパーソナル用途にカスタマイズした「設定ファイル保存」と言うのは割にアタマが痛い問題なのです。

当然、CD-ROMや外部ハードディスクに保存する、って言うのがティピカルな方法論なんですが、ここでは一歩進んでいっそオンラインに保存してしまえばどうだ?と言う提言をしてみようと思います。CD-ROMや外部ハードディスクドライヴですと可搬性が低くなるんで、今流行りのオンラインサービスを徹底活用した方が良いのでは、と言うのがここでのポイントです。

一つは上で使ってるようなGoogle Docs & SpreadSheetsを利用する、と言う手です。これは一旦保存してしまえば編集もダウンロード(特にプレーンテキスト形式で)も自由自在なので結構楽ちんでしょう。また、Google Notebookも良い手です。(Google Notebookはサービスが停止しました。)しかしながら、両者とも保存できる容量が結構限られています。例えばGoogle Docs & SpreadSheetsはファイル一つの容量の上限が512Kbと言う、ワードプロセッサとしては致命的な容量制限があります。またNotebookの方のメモ一つの上限は「それ以下」なのです。

そこで。割にお勧めなのが、最近無料でオンライン版がリリースされた紙copi.Netを利用する、と言う手です。ここに.emacsなんかの定義ファイルを定期的に保存しておけば、いざと言う場合の環境再構築に結構便利なんじゃないのかな、とか思います。

紙copi.Netに保存してある.emacsファイル。
ブラウザさえあればどこからでも参照可能なので、楽ちんである。
ここから適当なテキストファイルに「コピペ」すればあっと言う間に設定ファイルが作れてしまう。
また、紙copi.Netはそもそも「Webページの保存」を重視して作られているので、Web徘徊で見つけた.emacsの設定等をコピペするにも重宝すると思われる。
これからはこう言う「オンラインサービス」を徹底活用していけば、USBメモリ等の「持ち運び」さえいらなくなっていくだろう。