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が記事を書き続ける必要があるのだろう。