VimとEmacs:なぜ半世紀前のエディタが現代の最強IDEを凌駕し続けるのか

Tech & Logic
スポンサーリンク

数ギガバイトのメモリを平然と消費し、AIによる高度なコード補完や洗練されたGUIデバッガを標準装備した現代の統合開発環境(IDE)。VS CodeやJetBrainsの各プロダクトがソフトウェア開発の標準基盤となった2020年代においても、半世紀前に誕生した二つのツール――Vim(vi)とEmacsを巡る議論は決して終わることがない。

クラウド上のリモートサーバーにSSHでログインし、黒いターミナル画面でキーボードを叩くとき、歴戦のエンジニアが手にするのは最新鋭のGUIツールではなく、1970年代のUNIX黎明期に原型を完成させたテキストエディタである。ハードウェアの計算能力が何億倍にも向上した現代において、なぜ半世紀前の遺産が最前線で生き残り、時に最新鋭のIDEすら凌駕する圧倒的な生産性を叩き出すのか。そこには、単なるノスタルジーや宗教的狂信を超えた、冷徹な「道具の設計思想」と「操作の人間工学」の力学が存在している。

Emacs使いがvi使いをマウントしていた時代の愚行

かつてプログラミングの現場には、Emacs使いがvi使いを見下し、傲慢なマウントを取るという奇妙で不毛な力学が確実に存在していた。

リチャード・ストールマンが提唱した「拡張可能な自己完結の小宇宙」という理想のもと、Emacsは内部に巨大なLispインタプリタを抱え込んだ。テキスト編集にとどまらず、メール送受信、Webブラウジング、ファイル管理、果てはシェル操作に至るまで、すべての計算機作業をエディタという単一の空間で完結させる。「viなんてただの原始的な文字入力器に過ぎない」「Emacsこそが真のハッカーのOSであり、ライフスタイルそのものである」――そう口角泡を飛ばしてvi使いを侮蔑したEmacs愛好家たちのマウントは、いま振り返れば道具の本質を見失った愚行の極みであった。

彼らが誇っていた万能性の実態とは何だったのか。それは、数千行から数万行に及ぶ秘伝のタレのような設定ファイル(.emacsやinit.el)と、大量の外部パッケージを抱え込まなければまともに動作しないという「極度の依存性」に他ならなかった。自分のローカルマシンという温室から一歩外に出た瞬間、彼らは何もできなくなったのである。

一方、ビル・ジョイが1976年に世に送り出したviの哲学は、どこまでも禁欲的かつプラグマティックであった。「テキストの編集だけを極限の速度で行う」。UNIXの基本思想である「ひとつのことをうまくやる(Do One Thing and Do It Well)」を愚直に体現したviは、巨大な環境構築を必要とせず、どんな過酷な現場でも即座に立ち上がる強靭さを手に入れていた。

『ed』から受け継がれたコマンド体系:思考を直撃する文法構造

viの真の凄みは、その操作体系が1960年代末にケン・トンプソンが開発したラインエディタ『ed』から連綿と受け継がれている点にある。

ディスプレイという概念すらなく、紙のテレタイプ端末で1行ずつ印字しながらテキストを操作していた時代の極小インターフェース。そこで研ぎ澄まされた正規表現、置換構文、行指向のコマンドは、スクリーンエディタ『vi』、そして後継の『Vim』へと一切のブレなく継承された。

現代の多くのテキストエディタが採用している「文字を入力しながら、必要に応じて矢印キーやマウスでカーソルを動かす」というモードレスなインターフェースは、直感的ではあるが、打鍵の運動エネルギーを著しく分散させる。ホームポジションから手を離してマウスを握り、ポインタを微調整し、再びキーボードに手を戻す。この物理的な反復は、思考のフローを細切れに寸断する摩擦でしかない。

viが採用した「モーダル編集」は、テキストの入力を「文字打ち」ではなく「文法的な命令」へと昇華させた。「d(削除)」という動詞に、「w(単語)」という名詞を組み合わせることで「dw(単語を削除)」となり、「c(変更)」に「i(内側)」と「"(ダブルクォーテーション)」を繋げて「ci"(クォーテーション内を書き換え)」となる。

キーボードのホームポジションから指を一ミリも外すことなく、頭に浮かんだ修正の意図をそのままコマンドの構文として叩き込む。紙端末時代の極限の通信制約から生まれたedのDNAは、半世紀の時を経て、人間の思考速度に指先を追従させる究極の人間工学インターフェースとして結実したのである。

画面分割不要論:極小ディスプレイの知恵と現代ターミナルの必然

エディタを巡る議論の中で、長年「高機能の証」として語られてきた機能のひとつに画面分割(スプリットウィンドウ)がある。ひとつのエディタ画面の中で、左右上下に無数のバッファを並べ、参照しながら作業するスタイルだ。

しかし、歴史的背景と現代のシステム運用の双方から検証したとき、「エディタ側で画面を細かく分割して作業する」というアプローチには大きな工学的疑問符がつく。

そもそもVT100をはじめとする初期の端末ディスプレイは、わずか横80桁・縦24行という極小の描画領域しか持たなかった。その狭隘なキャンバスをエディタの機能で半分や4分の1に割ったところで、視界は窒息し、コードの全体構造を見失うノイズにしかならない。当時のエンジニアたちは、画面を分割して一覧性を稼ぐのではなく、単一の画面に思考を集中させ、バッファの切り替えによって頭の中のワーキングメモリを整理していた。

そしてこの「画面分割不要論」は、高解像度モニターが普及した現代において、皮肉にも一周回って再び正当性を獲得している。現代の開発環境において、画面の多重化やレイアウト管理はエディタが抱え込むべき責務ではない。

現代のエンジニアには、SSHセッションを多重化するtmuxやscreenといったターミナルマルチプレクサがあり、GUI側には自在に切り替えられるターミナルのタブやタイリングウィンドウマネージャが存在する。コードの編集は単一のフルスクリーンでviを立ち上げて集中し、ログの監視やシェルの実行はターミナル側のタブやセッション切り替えに委ねる。「エディタの中で無理にすべてのペインを抱え込まない」という役割分担こそが、Unix哲学に則った最も合理的で壊れにくいアーキテクチャなのである。

道具がすごいんじゃない、使いこなしてなんぼ:生き残ったviの覇権

歴史の審判は、すでに下っている。

かつて傲慢なマウントを取っていたEmacs使いが築いた重厚長大な城は、クラウドネイティブとコンテナの荒波によって砂上の楼閣と化した。AWSやGCPの仮想インスタンス、極限まで軽量化されたAlpine Linuxのコンテナ、あるいはネットワークが寸断された障害復旧の現場。そこに巨大な設定ファイルとLispランタイムを抱え込んだEmacsが存在する余地など最初からどこにもない。

現場に標準装備されているのは、いついかなる時代も、最小限のフットプリントで静かに息づくviだけだった。VS CodeやIntelliJのような最新鋭のIDEですら、開発者が最も重宝するプラグインの筆頭は「Vimエミュレーション」であるという事実が、この道具の操作体系が普遍の勝利を収めたことを残酷なまでに証明している。

道具がすごいのではない。道具の文法を完全に身体化し、手足のように動かして結果を出す人間こそが本物なのだ。肥大化した環境に溺れた者たちが姿を消す中、時代の荒波を生き残り、現代の現場を制したのは紛れもなくviである。

結果、今生き残ったのはvi(Vim)であり、俺様はvi使いである。

タイトルとURLをコピーしました