Emacsは完成したエディタというより、時間をかけて育ってきた環境だと感じています。
その感覚は、標準で入っているパッケージを年代ごとに並べて眺めると、かなりはっきりします。
1. Emacsの標準パッケージの歴史
ここでは、パッケージがEmacs本体に取り込まれた時期を基準に、いくつかのまとまりに分けて整理します。実際に使ってきたときの感覚や、今振り返って思うことも交えています。
| 主な搭載バージョン | 代表的なパッケージ | この時代のEmacsの性格 |
|---|---|---|
| Emacs 18以前 | Dired、Rmail、Calendar、Diary | 編集とファイル管理そのものが目的。Emacs単体で作業を完結させる思想が強い |
| Emacs 19〜20 | VC、Ediff、Gnus、CC Mode | 差分管理や履歴管理が入り、統合環境への第一歩が始まる |
| Emacs 21〜22 | IDO、Ibuffer、TRAMP、Org mode、Flymake | 日常利用の快適さが大きく向上。使い続けるための機能が増える |
| Emacs 23〜26 | CEDET、nXML、EasyPG、DocView、package.el | IDE的機能と外部連携が本格化。拡張文化が定着する |
| Emacs 27〜29 | project.el、tab-bar-mode、Eglot、use-package | 標準機能だけで現代的な開発環境が成立する段階 |
2. 初期のパッケージ(Dired)
Emacsのかなり初期の頃は、編集できること自体が価値でした。
この時代を象徴するのがDiredやRmailです。
Diredは、ファイル一覧そのものを編集対象として扱います。最初に触れたときは、なぜファイルの一覧が編集できるのか理解しにくく感じました。ただ、慣れてくると、ファイル操作をするうえでこれ以上に速い方法はあまり思いつかなくなります。
RmailやCalendarもこの時代に生まれた機能です。今の基準で見ると不便な点は多いですが、Emacsの中だけで作業を完結させたいという考え方は、この頃から一貫して存在していたように思います。
3. 差分や構造(Ediff, CC Mode)
次の段階では、Emacsは単なるテキストエディタを少しずつ超え始めます。
差分や履歴、構造を扱う機能が入ってきました。
VCやEdiffがその代表です。Ediffを初めて使ったとき、画面を分割し、差分を一つずつ選んでいく操作に強い印象を受けました。現在でいうマージツールですが、考え方自体はとても素直です。
CC Modeの存在も大きな変化でした。言語ごとに振る舞いが変わり、プログラムを書くときの補助が当たり前になっていきます。この頃から、Emacsは「賢く振る舞う編集環境」としての輪郭を持ち始めたように感じます。
4. 日常的な快適さ(IDO, TRAMP, Org Mode)
Emacsを日常的に使い続けるための工夫が一気に増えたのが、次の時期です。
この頃にIDO、Ibuffer、TRAMP、Org modeが入りました。
特にTRAMPの体験は強烈でした。SSHで接続した先のファイルを、ローカルのファイルとほとんど同じ感覚で編集できる。この機能があることで、作業場所を強く意識せずに済むようになります。今でもEmacsを使い続けている理由の一つです。
Org modeについては、単なるメモツール以上のものだと感じています。考えを書き、その流れでタスクにする。メモと作業が分離しない点が、この機能の特徴だと捉えています。
5. 拡張(package.el)
その後、Emacsはさらに多くの機能を取り込みます。
IDE的な振る舞いや外部との連携が目立つようになりました。
CEDETやFlymake、nXMLなどがこの時期に加わりますが、なかでも大きかったのはpackage.elです。それまでのEmacsは、自分で設定を書いて拡張するものという印象が強くありました。ここからは、必要な機能を後から追加する文化が定着していきます。
一方で、CEDETのように便利ではあるものの理解が難しい機能も増えました。この頃から、Emacsは少し敷居が高くなったとも感じています。
6. より使いやすく(use-package, Eglot)
最近のEmacsは、かなり現代的な開発環境に近づいています。
project.elやtab-bar-mode、Eglot、use-packageが揃いました。
Eglotを使い始めて感じたのは、設定しなくてもある程度賢く動いてくれる安心感です。以前は外部パッケージで構築していた環境が、標準機能だけで成立する場面が増えました。
use-packageが標準搭載されたことも象徴的です。長い間、多くの人が事実上の標準として使ってきたものが、正式に取り込まれました。Emacsがコミュニティでの使われ方を受け入れた結果だと捉えています。
こうして振り返ると、Emacsは完成を目指すソフトウェアというより、使われ方を取り込み続ける器のように見えてきます。
古い機能が残り、新しい機能が重なっていく。その雑多さ自体が、Emacsらしさなのかもしれません。