テキストエディタ「Emacs」が、2026年に誕生50周年を迎えた。MIT Technology Reviewが10月20日に公開した記事は、1976年にマサチューセッツ工科大学(MIT)の人工知能研究所で誕生したEmacsが、現在まで使われ続けてきた歴史を振り返っている。しかし、現在広く利用されているGNU Emacsは、Richard Stallmanが1984年9月に開発を始めた別の実装だ。50年間にわたって同じプログラムが動き続けてきたわけではない。

それでもEmacsが長く使われてきた理由は、何なのか。その答えは、特定のソースコードよりも、共通のキー操作と、利用者自身が機能を改良して共有するという開発文化にあると考えられる。Emacsの歴史は、ソフトウェアの寿命が必ずしも実装そのものの寿命と一致しないことを物語っている。

AD

Emacs誕生から50年、現行のGNU Emacsは1984年に開発開始

emacs-50-years-split-bar.webp

Emacsの起源は、1962年にDan MurphyがPDP-1向けに開発したテキストエディタ「TECO」にさかのぼる。TECOは1文字のコマンドを組み合わせてテキストを編集する仕組みを持っており、1971年にはCarl Mikkelsenが、編集結果を画面へ即座に反映するControl-R機能を追加した。その後、スタンフォード大学のAI研究所で開発されたフルスクリーンエディタ「E」の影響を受けたStallmanがTECOを改良し、1976年には各キーにマクロを割り当てられる構造へと発展させた。

この仕組みによって、MITの研究者たちは自由にコマンドを追加できるようになったが、利用者ごとに操作方法が異なるという問題も生まれた。そこでGuy Steele Jr.が中心となり、David MoonやStallmanと協力して、共通のコマンド体系を整備した。単語単位で前進する「Meta-F」や、後退する「Meta-B」といったキー割り当ても、この過程で標準化された。Steeleは後に、目的は優れた新しいエディタを作ることではなく、研究室内の社会的な問題を解決することだったと振り返っている。

ただし、1976年に誕生したEmacsと、現在のGNU Emacsは同じ実装ではない。GNUプロジェクトの公式な沿革によると、初期のEmacsはTECOのマクロ集として実装されていた。一方、GNU Emacsは1984年に開発が始まった新しい実装で、C言語とLispを基盤としている。Stallman自身も1984年9月にGNU Emacsの開発に着手し、1985年初頭には実用的な状態になったと述べている。

GNU Emacsの公式バージョン履歴では、最初の一般公開版に当たるバージョン13が1985年3月20日に登場したと記録されている。また、1985年7月15日のバージョン16.56では、James Goslingが開発したコードが著作権上の理由から取り除かれた。つまり、GNU Emacs自身も初期の段階で実装を大きく変更している。

2026年10月時点で、GNU Emacsの開発開始から約42年が経過した。1976年からの50年間に対して約84%に相当するが、これはあくまで開発の経過年数を比較したものであり、現行コードの84%が42年前から残っているという意味ではない。さらに、Stallmanは1981年の論文でEmacsの開発を1974年に始めたとも述べており、開発の起点をどこに置くかによって歴史の長さも変わる。現行ソースに1984年以前のコードがどれだけ残っているかは別途検証が必要だが、少なくとも50周年は単一の実装が継続した期間を表しているわけではない。

実装が変わっても受け継がれたキー操作と「共有」の文化

emacs-meta-keys-across-systems.webp

Emacsが当時の多くのエディタと異なっていたのは、利用者自身が機能を追加・変更できる拡張性にある。Stallmanは1981年の論文で、利用者が編集作業を続けながら新しいコマンドを追加し、既存のコマンドを変更できることを重視していた。利用者が作成した拡張機能をライブラリとして共有し、優れたものを基本システムに取り込むことで、Emacs全体を継続的に改善できる。この仕組みは、現在のソフトウェア開発で広く使われるオープンな共同開発の先駆けともいえる。

ただし、初期のEmacsにおける共有には独自のルールがあった。Stallmanは1981年のマニュアルで、Emacsは無料で利用できるものの、利用者は「EMACSソフトウェア共有コミューン」に参加し、自分が加えた改良を送り返すことを求めていた。実際にStallmanが後年に行った講演でも、集めた改良を新しいバージョンへ取り込み、共同体全体で利用できるようにしていたと説明している。

一方、Emacsの名前を持つ実装がすべて同じ共有ルールに従っていたわけではない。1978年にはBernard GreenbergがMultics向けの別実装を開発し、Honeywellが商用販売した。さらに1983年5月6日には、Goslingによる実装が395ドルの商用製品「UniPress Emacs」となった。共通の操作体系を持ちながらも、自由に再配布できない実装が存在していたのである。

この経験は、Stallmanが後にGNUプロジェクトで採用した「コピーレフト」の思想にもつながっている。GNUプロジェクトの説明によれば、コピーレフトは、プログラムの利用、改変、再配布を認める一方、公開する改良版に新たな制限を加えることを認めない仕組みだ。GNU General Public License(GPL)はその代表的なライセンスである。ただし、初期Emacsのように改良を必ずStallman本人へ送り返す義務があるわけではない。受け継がれたのは個別の配布条件ではなく、改良の成果を共同体で共有するという考え方だった。

こうした開発文化は、日本語対応の歴史にも表れている。1989年12月15日には、日本語のマルチバイト文字を扱える派生版「NEmacs 3.2.1」が登場した。さらに1992年3月4日公開の「MULE 0.9.0b」では、日本語、中国語、韓国語などの入力方式への対応が進み、1993年8月1日にはGNU Emacs 18.59を基盤とした「MULE 1.0」が公開された。Jamie ZawinskiがまとめたEmacsの系譜表にも、これらの派生版の登場が記録されている。利用者はEmacsの操作体系を維持しながら、必要な機能を独自に発展させていった。

キー操作の継承は、Emacs以外のソフトウェアにも広がった。例えばmacOSでは、Emacs由来のControl-Aによる行頭への移動やControl-Eによる行末への移動、Control-FとControl-Bによる文字単位の移動などが、多くのテキスト入力環境で利用できる。また、Control-Option-FやControl-Option-Bによって単語単位で移動できる環境もある。Appleは2019年にmacOSへのGNU Emacsの標準同梱を終了したが、公式のキーボードショートカット一覧には、現在もEmacs由来の操作が数多く掲載されている。

Emacs自体の改良も続いている。2026年8月24日に公開されたGNU Emacs 31.1では、対応するターミナルでのマウス操作が標準で有効になったほか、新規ユーザー向けに代替設定をまとめた「newcomers-presets」テーマが追加された。このテーマは従来の設定を全面的に置き換えるものではなく、利用者が選んで適用する仕組みとなっている。長年の操作体系を残しながら、新しい利用者に合わせた改善も進めている。

AD

Emacsの50年を支えたのはコードか、それとも設計思想か

Emacsの50年を、単なるキー操作や共有文化の歴史と捉えることには異論もあり得る。StallmanはTECO版のEmacsとGNU Emacsの双方で中心的な役割を果たし、拡張性を重視する設計思想も引き継いでいる。同じ開発者の思想を基に作り直されたソフトウェアであれば、実装が変わっても一つの製品として歴史を数えることは不自然ではない。Steeleも、StallmanがTECOとEmacs Lispという異なる基盤でエディタを発展させた功績を高く評価している。

しかし、Emacsの特徴は、開発者や実装から独立して操作方法や設計思想が広がったことにある。キー割り当ての標準化にはSteeleら複数の研究者が関わり、日本語対応は独立した派生版で発展した。さらにmacOSのように、Emacs本体とは異なるソフトウェアにも操作体系が取り込まれている。こうした歴史を踏まえると、Emacsの長寿を支えたのは特定のコードではなく、利用者が操作方法を共有し、必要に応じて機能を改良できる仕組みだったと考えられる。

もっとも、この見方にも検証すべき点は残る。現行GNU Emacsのソースコードを詳しく調査し、1984年以前の実装が相当量引き継がれていると分かれば、コードの連続性も長寿の理由として再評価する必要がある。また、今後の主要バージョンでMeta-FやMeta-Bなどの標準的なキー割り当てが大きく変更されれば、従来の操作体系がどこまで維持されるかという問題が生じる。ただし、将来の変更によって過去50年間の継続性そのものが否定されるわけではない。

1976年にMITの研究室で生まれたEmacsは、複数の実装や派生版を経ながら、50年にわたって使われ続けてきた。その歴史は、ソフトウェアの価値が個々のコードだけでなく、利用者に共有される操作体系や開発文化にも宿ることを示している。GNU Emacs 31.1で新しい操作環境への対応が進められている現在も、Emacsは伝統を残しながら変化を続けている。