虎(牛)龍未酉2.1

記録帳|+n年後のジブンが思い出せますように……

Vimの光の中で: Bram Moolenaar氏への感謝と追悼

短い追悼

今週、Vimの生みの親であるBram Moolenaar氏が亡くなられたとの報に接しました。ご冥福をお祈り申し上げます。Bramさん、世界をすこしでも過ごしやすい場所にしてくれて、ありがとうございました。

長い追悼

完璧な文章などといったものは存在しない。
完璧な絶望が存在しないようにね。

風の歌を聴け』(村上春樹

(ほぼ)完璧な絶望

ぼくがBram Moolenaarの文字をはじめて目にしたのは、2020年11月のことだった。

MacBook Proのターミナルにvimとタイプすると、起動画面があらわれた。ソフトウェアのタイトル「VIM - Vi IMproved」、そして(英語で)「ウガンダの恵まれない子どもたちに援助を!」とある。そこにならんで、Bram Moolenaar氏の名前があった。

img

なぜウガンダ。国のウガンダなのか。それともなにかの比喩なのか。あるいは別のソフトウェアのことか。英語に自信もないし、たんにぼくの読み間違いだろうか。

そんな疑問が頭をよぎるが、次の瞬間には消し飛んでいた。Vimの操作の壁はとても高いのだ。

「いったいこれはどうやって操作するのだ」

まず文字が入力できない。かろうじてカーソルは動くが、Vimを終了させる方法がわからない。しかたなくmacOSのターミナルごとウィンドウを閉じたのだった。

そもそもぼくはviが苦手だった。2004年まではソフトウェアエンジニアの仕事をしていた。その前は大学院でスーパーコンピュータで数値計算をしていた。そのときに使っていたエディタ(コンピュータ上で文章やコードを書く・編集するためのツールやプログラム)はEmacsだった。1994年にviをはじめて触ったころの、あの(ほぼ)完璧な絶望が、Vimという装いで、26年ぶりにふたたび襲いかかってきた。

あまい水を求めるホタルのように

ぼくがエディタと本格的なつきあうようになったのは、大学生になってからだ。まだWindows 95は発売されていなかった。入学するとメールアドレスと手引書を渡される。そしてコンピュータ室に行くように指示される。手引書を片手にワークステーションの端末にログインし、メールを書いた。

そのときのメールを書くソフトウェアがEmacsというエディタだった。正確にはEmacsではなく、MULE(Multilingual Environment for Emacs)。そのころのEmacsはまだ日本語をうまく扱えず「多言語対応特別版Emacs」であるMULEをみんな使っていたのだ。

ちかくの私立大学では学生全員にMacintosh PowerBookが配布されたことがニュースになっていた。そんなおしゃれなコンピュータ環境にほど遠かったが、お金のないぼくたちは無料で電子メールをつかえることに感激した。あまい水を求めるホタルのように、無機質なコンピュータ室にぼくたちは吸い寄せられ、50台ほど並んでいる端末にむらがっていた。

そのころはまだ「エディタを使ってメールを書いている」というを理解してたかどうかも怪しい。メールを書きたければ、ログインしてMULE(以下Emacs)をひらく以外の選択肢はなかった。

扉を開ける前に

たしかにEmacsはむずかしかった。けれどもなんとか使うことができた。電子メールを使いたい、という明確な欲求があったから。そのころ自宅にパソコンがあっても、ネットワークにつながっていないことはふつうだった。深夜23時から翌朝8時まで通信料金が定額になる「テレホーダイ」開始は1年後だ。そもそもパソコンを持っている人だって、理系の60人クラスのなかでも、せいぜい10人というところだった。

パソコン通信」というものがあると聞いていたが、直接の知り合いはだれもやっていなかった。「ひとつなぎの大秘宝(ワンピース)」のようなもので、悪魔の実を食べていない一般人にとってのパソコン通信は、現実味のない、ほとんど空想上の現象だった。

むかしばなしをしたいわけではない。しかしそのような状況で、タダでネットワークがつかえるのは、すごいことだった。「Amazonというのがあって、洋書を自分で手配して買えるらしいぞ」「インターネットすげーな」がぼくたちの最先端の話題だった。

無料でつかえるインターネット、その応用例としての電子メール、という欲望に駆動され、Emacsを(メールソフトとして)つかいはじめた。しかしviの壁は別格に高いものだった。計算機基礎演習みたいな名前の授業で、いちどはviをさわった。チートシートももらった。しかし「ノーマルモードとインサートモードがあって、文字入力したければまずモードを変える」という入り口で挫折した。まわらない寿司屋に入ろうと決意はしたものの、達筆な看板を見て、扉を開ける前に心が折れたようなものだ。

1997年にスティーブ・ジョブズがアップルに復帰し、しきりに「ユーザに優しいのはモードレスなインタフェースだ」と言っていた。それを聞くたびviをおもいだした。あんなむずかしいものは、ふつうの人間には使えない。これからの時代はモードレスになっていくのだから。とじぶんを慰めた。

カラフルに蘇ってくる

そんな絶望感と苦手意識のかたまりのviに、2020年のぼくは再入門することにした。

2002年に大学院を中退したのちERPの導入コンサルタントのエンジニアになり、2004年にエンジニアをやめて組織マネジメント専門のコンサルティング・ファームに転職した。そこはヒトとかかわることが中心だった。もちろん文房具としてパソコンは使ったが、コーディングはしなかった。VBAマクロさえ組まなかった。

やがて現場でコンサルティングをするより、ファームの経営に携わるようになった。2015年には、じぶんの業務の効率化とミス防止のためにみじかいコードを書いて、小さなツールを自作するようになった。気合と根性の生産性向上に限界を感じたのだ。

転機は2020年にやってきた。コロナ禍でリモートワークが中心となり、MacBook Pro(MBP)のまえに一日じゅう座る生活になった。それまでは出張も多かったし、つねにMBPを開いてはいないので、コンピュータ環境の整備は避けていた。コンピュータを便利にしすぎると、それに足を引っ張られる可能性があったから。

しかし一日じゅうMBPを開いているなら、MBPの最適化をすすめても問題ない。ふとmacOSunixであることをおもいだした。もしかしてEmacsがつかえるんじゃないか。調べるともちろんmacOS用のEmacsがあった(もうMULEはなかった)。さっそくインストールして設定を進めた。小さいころに住んでいた街の路地裏を歩くと、すっかり忘れていたできごとがカラフルに蘇ってくるかのように、約20年前のEmacsとの親密な日々がよみがえってきた。

未来へのマスターキー

1997年から研究室に所属し、スパコン数値計算を行うようになった。Emacsは道具として欠かせなかった。計算用のデータ処理や、計算結果をビジュアル化するコードをEmacsで書いた。論文や書類はLaTeXだったので、とうぜんのようにEmacsで書き、コンパイルやPDF化をEmacs上でおこなった。ウェブサイトのHTMLも、メールもEmacsで書いた。

当時は周囲のほとんどみんな、みわたすかぎりEmacsをつかっているようだった。うわさではvi派の存在も耳にしたが、実際に目にしたことはなかった。おそらく、2000年以前はVim/viで日本語を扱うことに限界があって、Emacsが有利だったのではないだろうか。

そのころ、コンピュータを扱うことは、ターミナル(シェル)とEmacsをつかうことと同義語だった。手元のマシンはiMacPowerBookなどのMacintoshだったが、ほとんどの時間はターミナルエミュレータを起動し、Sunのワークステーションtelnetで入って、コンソールでEmacsをつかった。sshさえまだ一般的ではなかった。

ぼくにとって、(シェルと)エディタは、新しい世界を見せてくれ、不可能を可能にしてくれる万能ツールだった。メール、ニュースグループ、超並列計算、計算結果の3Dイメージ化。コンピュータの可能性の大部分はエディタをつうじてもたらされた。これひとつあれば、きたるべき未来にアーリーアクセスできるマスターキーのようなものだった。

春の暖かい日差しのなかで

希望に満ちた世界とエディタは親密な関係でむすばれていて、エディタとぼくは親密な関係にあった。世界とエディタとぼくは、平和な三角関係にあった。まるで獰猛なトラをねこじゃらしで手なづけ、お腹のやわらかい毛に顔を埋めて、春の暖かい日差しのなかで昼寝をしているような気分だった。

もちろん、2020年に再会したEmacsもすばらしかった。2020年にいちばん幸せだったのは、macOSEmacsをつかえたことだった。とくにorg-modeの発見が最高だったが、それはまた別の話。

ところがEmacsとともに、焼けぼっくいに火をつけてばかりいるわけにもいかなかった。エディタの世界ではVimの人気がEmacsを逆転したと聞いた。『Vim & Emacsエキスパート活用術』を読んでいると、「100人超に聞いたところ、インド・中国の大学生の半数強はVimユーザ、Emacsは4人のみ」と書いてある。

個人的な聞き取り調査結果とはいえ、無視できない。最強のエディタと信じて疑わなかった、かのEmacsよりいいものがあるなら、知らずに人生を終えるわけにはいかない。据え膳食わぬは男の恥、とむかしのひとは言ったのである。

こうしてぼくは2020年の秋、Vimを起動した。このころ体調を崩し、仕事をしばらく休んで療養していた。数年前からコンサルティング・ファームの副社長をしていたのだが、そもそもが激務で、さらにコロナ禍で世の中が混迷を深めタフな仕事が続いていた。プライベートでも問題があった。暗い部屋にとじこもって大画面テレビに映したディアブロ3で地獄にもぐり、たまにMBPをひらいて興味が湧くことをやった。

間違えて2冊買った

MacBook Proのターミナルにvimとタイプすると、起動画面があらわれる。ソフトウェアのタイトル「VIM - Vi IMproved」、そして(英語で)「ウガンダの恵まれない子どもたちに援助を!」とある。そこにならんで、Bram Moolenaar氏の名前があった。

ウガンダ?」なぜウガンダ。国のウガンダ?なにかの比喩なのか、それとも別のソフトウェアなのか。英語に自信もないし、もしかすると読み間違いだろうか?

そんな疑問が頭をよぎるが、次の瞬間には消し飛んでいた。Vimの操作の壁はとても高いのだ。

「いったいこれはどうやって操作するのだ」

1994年にviをはじめて触ったころの、あの(ほぼ)完璧な絶望が、Vimという装いで、26年ぶりにふたたび襲いかかってくる。

しかし開けない夜はなく、諦めるまで負けることはない。『VimEmacsエキスパート活用術』や『マスタリングVim』(間違えて2冊買った)、『実践Vim 思考のスピードで編集しよう!』などを手引きに、Vimというエベレストを一歩一歩のぼっていった。

いまになっておもうのだけれども、Vimが見せてくれる風景が、なかばこころを病みかけていたぼくに、なにか救いを提示してくれていたのかもしれない。

はじめの高い壁を超えた裏側にあるVimの世界は、合理的で、機能的で、整合性が取れており、ひとことで言うと美しかった。さすがは世界最高峰クラスのエディタ・Vim。ぼくなどはせいぜい2合目までしか到達していないとおもうが、それでも、達成感とそれまで見たことのない景色を目にする感動は計り知れなかった。

完璧なコミュニケーション

オープンソースのソフトウェアには独特の魅力がある。とくにVimのような世界中で愛されるツールをつかうと、まるで「世界じゅうの賢い人たちから直接ノウハウを学んでいる」感覚になる。はじめは複雑で理解しづらい部分ばかりだが、時間をかけて学び、実践していくうちに、その背後にある理由や深い意味が見えてくる。

たとえばVimの入り口にそびえ立つ高い壁、モード切替(ノーマル・インサート・ビジュアル)は、最初は面倒でしかない。っていうか意味がわからない。しかし、これはコンピュータに対する明確な指示のための仕組みであり、それによってキーボードを最大限に活用することができる。

Vimを使いこなすための思考モデルは、人間がコンピュータのように明確な指示を出すこと。このメンタルモデルを採用すると、テキストとの間に完璧なコミュニケーションが生まれる。それは、人間と人間ではまず不可能な、完璧なコミュニケーションが実現する世界である。

とぼくは理解している。

風の歌を聴け』で村上春樹が書くように、完璧な文章は存在しないかもしれない。しかし、テキストとコンピュータと人間のあいだには、完璧なコミュニケーションが存在しうる。

たしかにVimの学習には時間と労力が必要だが、その価値は計り知れない。「世界じゅうの賢い人」の知恵に触れることもできる。完璧なコミュニケーションも体験できる。これほど素晴らしいことはない。もしかしてここはすでに、約束された楽園なのではないか。

シーズン1がむずかしい

Vimの哲学は、Emacsとは違う。そして間違いなくすばらしい。VimEmacsやほかのエディタと比較して優劣を語るべきものではない。それぞれのエディタに、それぞれの誇り高き設計哲学がある。

ぼくはまだVimという山の2合目くらいまでしか知らないが、このエディタは「少ない手数で効率的にテキストを編集する」という魔法のような能力を持っていると感じている。学習曲線があまりに急で戸惑うことばかりだが、ある一定のラインを超えると、まるで魔法の世界に足を踏み入れたかのように、新しい発見が待っている。

HBOのテレビドラマシリーズ『ゲーム・オブ・スローンズ(GOT)』のようなものだ。GOTは、IMDbのレーティングで9を超える名作だが、とにかくシーズン1がむずかしい。登場人物がやたら多く、あまり説明なく次々と登場する。慣れないまま引きずり回されるシーズン1はつらい。しかし登場人物相関図を手に入れて学び、顔と名前を一致させる苦行を終え、シーズン2に入るころになると急速に世界に引き込まれ、続きを見たくて止まらなくなる。

ぼくもあれほど苦手だったVimだったが、いまはどこでもVimをつかいたい。Obsidianというマークダウンエディタも常用しているが、キーバインドVimVimの設定を活用するVimrc Supportというプラグインがあって、この改訂にもコントリビュートした。TypeScriptもしらなかったし、GitHubをつかうのもほとんどはじめてだったが、どうしてもVimっぽくつかいたかったので改訂版のコードを書いて送った。Emacsにもevilという、Vim風に操作するためのプラグインを入れて使っている。

はじめに言葉ありき

ここからは思考実験。もし人類がコンピュータをゼロから再発明することになったと仮定する。もし、人類が記憶を失い、これまでに蓄積したノウハウなしにスタートしても、かなり早い時代にスクリーン・エディタが再び登場するだろう。もしも、記憶を残して再スタートしたなら、できるだけ急いでスクリーン・エディタをつかえるところまで辿り着こうとするだろう。

最初期のコンピューティングは、スイッチの直接操作やパンチカードをつかって指示を与えるなどの、とても煩雑な手法で行っていた。これらの手法は手間がかかり、エラーの原因となりやすい。

スクリーン・エディタは、コンピュータに対する指示を、文字をもちいて直感的で効率的に書き込む道具であり、コンピュータとのコミュニケーションをシンプルに、そして明確にするものだ。エディタの存在なしに、われわれはコンピュータの能力を十分に引き出すことが難しい。いいエディタができれば、プログラム言語やコンパイラも発展する。そしてプログラム言語が発展すれば、エディタもさらに発展する。

「はじめに言葉ありき」ではないが、コンピュータと人間の間で「言葉でのコミュニケーション」が成立する所以は、エディタがあってこそである。人類とコンピュータの親密な関係を築く土台として、エディタは特別な位置を占めていると言っても過言ではない。

そのようなエディタの世界で、Bram Moolenaar氏は革命的なソフトウェア、Vimを生み出された。

哲学と機能美が見せてくれた風景

1991年にBram氏が生み出したVimは、数十年にわたりプログラマやシステム管理者の必須ツールとして多くの人々に支持されることになった。そのモーダルなエディタの設計は、効率的なテキスト編集を可能にし、ユーザーが複雑な編集作業をすばやく遂行することをサポートした。

Vimは単なるテキストエディタではない。拡張性、移植性、強力な検索・置換機能は、世界中の多くの環境でテキスト編集の新しいスタンダードを確立した。また、オープンソースプロジェクトとしてのVimは、世界中の開発者コミュニティの支持を受け、多くのリソースやプラグインが生まれる原動力となった。

とくに2000年以降は飛躍的にユーザ数を増やし、またVim以外のツールでも、Vimライクな操作が広がっていった。Vimの設計哲学の強固さと、コミュニティの豊潤さ、その結果としてもたらされるユーザの願いをなんでも叶える万能感、世界じゅうの賢い人ノウハウを伝授してもらえる感。さらに、このむずかしいソフトウェアを扱っているという自己満足感は、ほかになかなかない体験だ。

すくなくともぼくにとって、2020年の混迷からかろうじて戻ってこれた、その理由のいくばくかは、Vimの設計哲学と機能美が見せてくれた風景のおかげ。いまここにあるいのちの何パーセントかは、Vimによって支えられている、といっても過言ではない。(ほぼ)完璧な絶望の壁をのりこえ、(あるいは)完璧なコミュニケーションが存在する可能性を見せてもらった。

また、Bram氏の影響は技術的なものだけにとどまるものではありません。彼はVimのライセンスを通じて、ウガンダの孤児を支援するチャリティ活動を推進しており、テクノロジーと社会貢献を結びつけるビジョンをもっていました。

Bram Moolenaar氏の逝去は、技術界の巨星が星空へと昇っていったかのようです。しかし彼の遺したVimや彼のビジョンは、これからもわれわれの中に生き続けることでしょう。Bram氏が築き上げた文化的遺産に感謝し、彼の冥福を心からお祈り申し上げます。

この乱雑で混迷した世界を、すこしでも過ごしやすいものにしてくれて、ありがとうございました。