C - x 「Emacsはただのエディタではなく、環境そ
のものである」とは?
(シェル)

最近、あらためて Emacs を触っていて、楽しいと感じる場面が増えました。
効率が上がったから、というだけでなく、「コンピュータをいじっている」という感覚が戻ってきた、という方が近いかもしれません。

この感覚がどこから来るのかを考えていくと、「Emacs はエディタではなく環境そのものだ」という昔からある言い回しが、ようやく腑に落ちてきました。
そしてそれは、Emacs が CLI と GUI の中間に生まれたプログラムだったからではないか、と今は捉えています。

関連記事

1. CLIとGUI、それぞれの「強さ」と「割り切り」

CLIとGUIの特徴 CLI 知識がそのまま力になる 掛け算の力 コマンドを組み合わせ パイプで連携 高いハードル 覚える必要あり GUI 見れば使える世界 直感的 初めてでも分かる 最大の強み 組み替え困難 分かりやすさ優先

1.1. CLIは「知識がそのまま力になる世界」

CLI(コマンドライン)は、文字で命令を入力してコンピュータを操作します。
UNIX では、小さなコマンドをパイプでつなぎ、組み合わせて使う文化が発達しました。

この世界の面白さは、機能が「掛け算」になる点です。
単体では地味なコマンドでも、組み合わせ次第で強力な道具になります。

ただし、その力を引き出すには、コマンド名や考え方を覚える必要があります。
知識がある人ほど速く、自由に使える。
その代わり、最初のハードルは高めです。

1.2. GUIは「見れば使える世界」

GUI(グラフィカルユーザーインターフェース)は、ウィンドウやボタンをマウスで操作します。
初めて触っても、だいたい何ができるか分かる。
ここが最大の強みです。

一方で、機能同士を直接つなげたり、自分なりに仕組みを組み替えたりするのは簡単ではありません。
GUI は「分かりやすさ」を優先した設計だと感じます。

2. Emacsはその間にあった

Emacsはその間にあった バッファ中心 ファイル 検索 シェル すべてバッファとして扱う キーボード操作で瞬時に切替 拡張可能 Elisp 拡張言語 環境を育てる感覚 短い試行錯誤サイクル 並べて見る × 一つずつ処理 作業の流れが途切れない

2.1. バッファという「作業の単位」

Emacs を使っていて特徴的なのは、ウィンドウよりも バッファ が中心にある点です1
ファイル、検索結果、メモ、シェルの出力など、すべてがバッファとして扱われます。

これらは同時に存在し、キーボード操作で瞬時に切り替えられます。
見た目は地味ですが、作業の流れが途切れません。

GUI のように「並べて見る」世界と、CLI のように「一つずつ処理する」世界の、ちょうど中間にある感覚です。
Emacs自体がユーザーとシステム(カーネル)をつなぐ「シェル」なんですね。

2.2. コマンドと拡張が環境を育てる

Emacs では、機能はコマンドとして定義され、キーに割り当てられます。
さらに、Elisp(Emacs Lisp)という拡張言語で、自分用の機能を追加できます2

ここで面白いのは、何かを追加する感覚が「アプリを入れる」というより、「環境を育てる」に近いことです。
少し不便を感じたら直す。
その修正が、次の作業を楽にする。

この循環がとても短い。

3. なぜGUIが主流になったのか

ここで誤解しやすい点があります。
GUI が主流になったのは、CLI や Emacs が劣っていたからではありません。

なぜGUIが主流になったのか 認知コスト CLI / Emacs 覚えることが多い GUI 見ればだいたい分かる 誰でも使える 参加できる人数が 圧倒的に違う 劣っていたからではなく、認知コストの違い

理由はシンプルで、認知コストです3

CLI や Emacs は、覚えることが多い。
一方 GUI は、見ればだいたい分かる。
社会全体で見ると、参加できる人数が圧倒的に違います。

GUI は「誰でも使える」代わりに、「誰でも作れる」世界を手放しました。
その結果、アプリケーションは長い間、専業の開発者やメーカーのものになっていったように思います。

とはいえ、自分でGUIアプリケーションを作るのは、大変です4
いちいちプロジェクトを作って、ウィンドウサイズなどを決めたり。
ちょっとコードを書いて動かす、ということがしにくいです。

4. 最近また楽しい理由

それでも今、Emacs が楽しいと感じるのは、
「自分の操作が、ちゃんとコンピュータに効いている」という感覚があるからです。

「いじっている」という感覚 触る 試してみる 壊す 実験する 直す 改善する 理解 仕組みがわかる 覗ける 仕組みが見える 変えられる 自由に調整 地続き 操作と仕組み

少し触って、壊して、直す。
この流れが許される環境は、意外と少ない。

4.1. 「いじっている」という感覚

GUI では「便利に使う」ことはできます。
でも Emacs では、「いじっている」と感じやすい。

それは、仕組みと操作が地続きだからだと思います。
キーを押せば、何が動いているか分かる。
分からなければ、覗ける。
気に入らなければ、変えられる。

Emacs はただのエディタではありません。
CLI と GUI の間に生まれた、作業そのものを扱うための環境です。

そのことに気づいたとき、
コンピュータはまた少し、触って楽しい存在に戻りました。

  1. Emacsの最初のバージョンは1976年にRichard StallmanがMIT AI LabでTECOエディタのマクロとして開発しました。その後、1978年にBernard GreenbergがMultics Emacsを開発し、これが初めてLispを拡張言語として採用した実装とされています。 – Emacs – Wikipedia
  2. Emacs LispはMacLispから派生したもので、GNU Emacs(1985年リリース)で採用されました。それ以前のGosling EmacsはMocklispという、Lispに似た構文だがデータ構造が異なる言語を使用していました。 – My Lisp Experiences and the Development of GNU Emacs – GNU Project
  3. 1985年当時のGNU Emacsは1MBのRAMを持つ32ビットマシンを想定して設計されており、当時としてはハイエンドな環境が必要でした。これが小規模な実装(MicroEMACS、mgなど)が開発された理由の一つです。 – Emacs
  4. 現代のエディタであるVS Codeは拡張性とGUIの両立を実現しています。拡張機能は独立したExtension Hostプロセスで実行され、APIを通じてエディタ本体と通信します。これにより安定性を保ちながら高い拡張性を提供しています。 – Extension API | Visual Studio Code Extension API