Skip to content

Instantly share code, notes, and snippets.

@tani
Last active April 14, 2024 03:07
Show Gist options
  • Save tani/04c52c12ab4254528c1ba7ad509946ad to your computer and use it in GitHub Desktop.
Save tani/04c52c12ab4254528c1ba7ad509946ad to your computer and use it in GitHub Desktop.

Project V 「思考のスピードで編集せよ。32年の伝統をもつテキストエディタをビルドする。」

Vim職人の朝は早い ――。

「Vimはね、日々進化するんですよ。」

そう言いながら職人はおもむろにVimのビルドスクリプトを叩く。

「おれが子供とのときはMercurialを使ってこうやってVimをダウンロードしたもんです。今じゃあ、Gitですがね。」

$ sudo apt install --no-install-recommends git ca-certificates
$ git clone https://github.com/vim/vim

使い込まれたHHKBから、コトコトと心地よい音が響く。どうやら、余計なライブラリはインストールしたくないらしい。 --no-install-recommends をつけるところに職人に拘りがみえる。

「いまの若いもんたちがうらやましいよ。オープンソースのCコンパイラがたくさんあるんだから。おれはtccをつかうよ。おっと、libcのヘッダが必要だった。」

$ sudo apt install --no-install-reocmmends tcc libc-dev

gcc や clang の二大巨頭があるなか、職人はあえて依存関係の少ない tcc を使う。 tcc とは ffmpeg や qmenu の作者として知られているFabrice Bellard氏によって開発されているCコンパイラだ。 遅いCPUや小さいメモリ領域でも動作することが売りで、ここにも職人に気遣いがあった。

「わたしはね、GUIが苦手なんだよ。黒い画面いっぱいにテキストが広がる、そこにロマンがある。そうだろう?」

$ sudo apt install --no-install-reocmmends libncurses-dev

そういって職人は 端末描画API Cursesの互換ライブラリをインストールした。 どうやらX Window System や Wayland 向けのGUIフレームワークのGTKを使うつもりはないらしい。

「いつの時代ってビルドっていったら、これだろう。」

$ sudo apt install --no-install-recommands make

説明するまでもないだろう。VimはたくさんのCソースファイルから構成されるソフトウェアだ。 各ファイル間の依存関係を解決するビルドツール make だ。

「サァ、これで仕上げだ。」

$ cd vim && ./configure && make && sudo make install

職人は同時に4つのコマンドを並べた。 cd vim で vimのソースツリーに移動し、 ./configure によってビルドに必要なパラメータを設定し、 make でビルドを実行、 make install でビルドした成果物を各ディレクトリに設置したのだ。

「ビルドするのがカッコよい?さぁねぇ。今じゃNightlyビルドが GitHub Releasesにアップロードされてる。 こうやってビルドするのは、おれみたいな拘りの強い頑固者だけだろうよ。」

そう。CIによる自動リリースが発展した昨今、職人は後継者不足になやまされている。 たとえば、GitHub Releasesには毎晩、その日に追加されたコミットを加えたVimがアップロードされている。

もう、職人は必要とされていないのか。否、こういったパッケージ自動化スクリプトの裏には、 職人たち代々磨いてきた技術が生きているのだ。こういった伝統を後世につたえていくためにも、 われわれVimmerが記事を書き続ける必要があるのだろう。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment