1. OSSのレキシラジオ
  2. Vimのレキシ〜「h,j,k,l」の起..
2026-01-12 12:51

Vimのレキシ〜「h,j,k,l」の起源は紙への印字?物理的制約から生まれた哲学〜

エンジニアなら誰もが一度は触れるエディタ「Vim」。「思考の速度で編集する」という哲学や、独特な「h,j,k,l」でのカーソル移動。これらは実は、1969年の「ある物理的な制約」によって生まれたものでした。


今週のテーマは「Vimのレキシ」についてです。

「チャリティウェア」という側面も持つVimについて紐解いていきましょう。


サマリー

このエピソードでは、Vimエディタの歴史とHJKLキーの起源が探求されています。特に、VimがEDやEX Editorからどのように進化し、その背後にある哲学に焦点が当てられています。Vimは、その起源からブラムさんの人生と密接に結びついており、近年の開発や競争相手であるNeoVimの誕生を経て再び活発な進化を遂げています。今後も安定性を重視しながら、Vimはエディターとしての進化を続けると考えられています。

Vimの起源と進化
こんにちは、OSSのレキシラジオです。このポッドキャストでは、現役エンジニアの私、hentekoが、毎週一つのOSSプロジェクトを取り上げて、そのプロジェクトにまつわる歴史や背景にあるドラマを紹介していく番組です。
さて、本題に入る前にですね、少しだけ緊急報告の方させてください。
最近ダイエットを続けているんですけど、ここ数日、毎朝、多重蹴りに乗っても変化が本当に微量なんですよね。誤差レベルの変化しかなくて、正直モチベーションが下がりつつあります。
これだけ我慢してこれかと思ってしまうんですが、ここで止めてしまってはもともともないという形で、ダイエットは継続して我慢したいなと思っております。
さて、そんなわけでですね、気を取り直して今週のテーマに参りましょう。今週はですね、エンジニアなら誰もが一度は触れたことであるであろうビームの歴史について見ていけたらなと思っております。それではよろしくお願いします。
まずビームの概要からなんですけど、ビームはですね、思考の速度でテキストを操作するというような設計思想を持ったエディターです。
最大の特徴としてはですね、キーボードからホームポジションから手を離すことなくあらゆる操作が可能であるということです。
マウスを使ってGUI、グラフィカルユーザーインターフェースでですね、操作するっていうのが当たり前の現代において、キーボードだけで操作するビームっていうのはですね、ある種のハッカー的な憧れっていうのがあるんじゃないかなと思っております。
このビームなんですけど、ビームといえばなんですけど、ノーマルモードやインサートモードといったような独特なモード編集、そしてHJKLキーによるカーソル移動というところが有名なんですけど、皆さんこの起源っていうのがこのHJKLだったりモード編集っていうところの起源がどこにあるかって知ってたりしますかね。
実はこれ、1969年にUNIXで利用されていたEDというようなラインエディターまで坂場に登ります。
当時ですね、エンジニアたちが使っていたっていうのが、使っていたパソコンというのがディスプレイがついていたものではなくてですね、テレタイプ端末というようなものでした。
このテレタイプ端末っていうのをGoogleで画像検索とかしていただければわかるかなと思うんですけど、実はディスプレイがないんですよね。
どのように確認していたかというとですね、キーボードで打った内容っていうのを紙に1行ずつ印刷していたというような形で出力がされていました。
つまりですね、これどういうことかというと、今自分がキーボードでどういう文章を書いているのかっていうのを確認する術がないんですよね。
すべて脳内で入力した文字列を保管しながらテキスト入力をして、最後確定すると印刷されるというような形でした。
すごい時代ですよね、本当に現在から考えると。
そのためですね、EDというのは極力短いコマンドでメモリ上にあるテキストを操作するというようなために作られていました。
実はですね、EDというのはですね、現在Mac OSだったりとかLinuxだったりとかを使っている方はターミナルを立ち上げてEDって実行してもらいたいんですけど、実はコマンドとして現代も存在しています。
基本的にはUNIXをベースとしたOSであればだいたい入っているというようなコマンドがEDになっています。
そんなEDなんですけど、そのEDを改良して生まれたのがEX Editorというものです。
このEX Editorというものが何が優れていたかというとですね、画期的な機能が搭載されていたんですけど、それがVisual Modeです。
これはVimを知っている方だったら聞いたことあるかなと思うんですけど、Visual ModeというところがここでEX Editorとして実装されました。
このモードによってですね、目で見て編集できるような形になっていったんですけど、ここで初めてHJKLによるカーソル移動というのが実現されました。
このEX EditorのVisual Modeこそがですね、Vimの直接の祖先であるVIです。
つまりですね、このVIの実態というのは実はEX EditorのVisual Modeを起動しているというようなことになっています。
現代でもそのような形になっています。
このVIというのもEDと一緒でですね、大体のOSにはデフォルトでインストールされているコマンドになっているかなと思うんですが、
このVIというのが実はEX EditorのVisual Modeであるというような形になっています。
基本的にこのVIというのはUNIX以外のOSでは使えなかったんですけど、
このVIをUNIX以外のOSでも使えるように移植しようとしたのがVimの産みの親であるブラム・ウーリナーさんです。
ただですね、このVIをそのまま移植したという話ではなくてですね、オリジナルのVIのコードというのはライセンスの問題が実はあったので、
ブラムさんはですね、スティービーというようなVIのクローンしたようなエディターというものの実装として存在していたんですけど、
そちらをベースに改良を加えたというような形でVimを作成しました。
こうしてVimというのがVIのクローンとして生まれたんですけど、
初期のVimというのはですね、VIイミテーション、VIの魔法というような略としてVimという名前が付けられました。
さて、そういった形でVIイミテーションとして生まれたVimなんですけど、ここから独自の進化というのをどんどん遂げていきます。
Vimのユニークなライセンス
ブラムさんはですね、改良をどんどん重ねていって、オリジナルであるVIにもなかった機能である、
数回戻ることができる安定機能などなどを複数実装しました。
そしてですね、元々はUNIX以外のOS向けにVimというのを移植して作っていたんですけど、
逆にUNIX向けに逆移植ということをブラムさんはします。
この時点でですね、すでにオリジナルのVIにはなかった機能などもいろいろ盛り込まれていたので、
VimというのはVIイミテーションからVIインプルーブド、改良されたVIというような名前に意味を変えていきました。
そういった形でVIインプルーブドになっていったんですけど、その後の進化というのはどんどん止まることを知りませんでした。
バージョン3.0から7.0にかけてマルチウィンドウ対応だったり、GUI版であるGVimの登場だったり、
あとはシンタックスハイライト、コード補完、そういった単なるエディターからIDE統合開発環境への進化というのをしていきました。
そしてですね、Vimを語る上で欠かせないのがチャリティウェアというような存在です。
ブラムさんはですね、実はウガンダでボランティア活動を行った経験があったそうなんですけど、
その経験からVimのライセンス条項へユニークな願いを盛り込みました。
その内容というのがVimを自由に使用してコピーできるんだけども、もしVimが役立つと感じたら、
ウガンダの恵まれない子どもたちへの寄付を検討してほしいというような願いというようなものです。
こういったライセンスが含まれていますので、実はVimを起動するとですね、このメッセージというのが表示されるんですよね。
Vimの開発史
見たことある方もいるかなと思うんですけど、ウガンダへの寄付をお願いしますというようなメッセージが表示されます。
この表示というのは単なる表示ではなくてですね、実際に世界中の開発者の方の心に響き渡ってですね、
長年に渡って継続的な寄付というのを生み出すような素晴らしいサイクルというのを生み出すことになりました。
そんな形で十分満パンに見えるようなVimなんですけど、停滞の時期というのがここで訪れます。
2006年にVim 7.0がリリースされたんですけど、それ以降ですね、開発の速度というのはどんどん低下してきました。
2013年までの約7年間ですね、大きな機能追加というのはVimにはありませんでした。
しかしその間ですね、Webの開発現場というのはどんどん激変していくんですけど、
移動機処理を活用した静的解析リントだったりとか、あとは自動の補完だったり、
あとはLSPと呼ばれるLanguage Server Protocolのサポートなどが急速に復旧していきました。
さらにですね、Vimの開発コミュニティ内からも、
移動機の実装というのを求めるような声が上がったんですけど、
ブラムさんはですね、安定性の低下を懸念してですね、消極的でした。
こういった形で開発コミュニティ内もですね、なかなかフラストレーションが溜まるような形だったんですが、
この状況を打破するために2014年に生まれたのがですね、Vimをフォークする形で生まれたNeoVimというものです。
NeoVimはですね、移動機処理だったり、あとは設定言語としてルアーの採用だったりとか、
いろんなモダンな技術を積極的に取り入れることに成功しました。
そのNeoVimの存在、誕生によってですね、何があったかというとですね、
本家Vimにも大きな動きが行われることになりました。
結果的にはNeoVimというような競争相手が出現したことによって、
いい刺激が起きたというような形になります。
それを皮切りにVim 8.0、そして9.0というような形でメジャーバージョンアップが行われて、
移動機IoEの対応だったり、あとは高速なVim9スクリプトというようなものを新たに開発して導入されるなど、
再び開発が活発化していきました。
そんな中、悲しいニュースが2023年に世界を駆け巡ることになってしまいます。
Vimの唯一のオーナーであって、SSDゲスト中であったブラムさんがですね、
病気のため亡くなってしまったというような秘宝です。
実はVimの開発というのは、唯一のオーナーとしてブラムさんが存在していました。
他の方々はオーナーの権限などは持っておらず、チーム開発というよりかは独裁者としてブラムさんが開発をリードしていました。
そんな形だったので、唯一のオーナーがいなくなってしまったというような形のVimなんですけど、
今後の開発はどうなるのかという混乱も予想されたんですけど、
ブラムさんの家族の協力もあってですね、オーナー権というのは無事長年のコントリビューターたちで無事に依存されるということになりました。
開発体制というのもですね、一人に依存する形から集団的な体制というのに移行することに成功しました。
さらにブラムさんの意思を引き継いでですね、チームとしては今後もVimというのは安定性と互換性を重視するというような方針を掲げて、
現在も開発というのが引き続き行われているというような形になっています。
またですね、チャリティーソフトウェアとしての側面も持っているVimなんですけど、
ウガンダイへの寄付活動ですね、そちらについては寄付を担っていた、寄付の実行になっていた団体というのは
事実上、活動ができなくなってしまうというような形で解散することになったんですが、
Vimの起動時に表示されるウガンダイへの寄付をお願いするメッセージというのは、
ブラムさんの功績や思いを残すために今後も残り続けるというような形になるそうです。
ブラムさんの影響
そして、そんな形でVimというのは今後も安定的なエディターとして進化を続けていくことになるんじゃないかなと思っております。
さて、ここまでいかがだったでしょうか。Vimの歴史はですね、まさにオーナーであるブラムさんの人生そのものでもあってですね、
さらにですね、そのVimの得意な操作性というのはですね、Linuxが生まれた当初の物理的な制約から生まれたものというものがありました。
普段何気なく押しているようなEscapeキーだったり、HJKLの移動だったりというところはですね、
その操作の向こう側にはですね、1969年から続く長い歴史や、あとはブラムさんの思いが詰まっているというのを考えるとですね、
少しVimだったり他のエディターというところを見る目というのは少し変わってくるかなと、僕自身思いました。
さて、今回のお話は以上となります。もし少しでも今回のお話がいいねと思ったら、お聞きのプラットフォームでの高評価とフォローの方をお願いします。
また、XなどでハッシュタグOSSの歴史ラジオをつけて感想をつぶやいてもらえるとモチベーションになりますので、ぜひよろしくお願いします。
次回はですね、Webサーバーを運用する際、ほとんどの人がお世話になっているんじゃないかなと思われるエンジンXの歴史について見ていけたらなと思います。
それではまた次回お会いしましょう。さよなら。バイバイ。
12:51

コメント

スクロール