Microというテキストエディタについて

Micro - Home

Microは、Golangで書かれたターミナルベースのテキストエディタである。モダンなターミナルの機能を最大限利用している、プラグインマネージャが最初から入っている、依存性のない静的バイナリ、といった特徴が謳われている。

主にUnix系OSで使われる、nanoという単純なエディタがあるが、その後発を狙っている(ネーミングからしてまんまだが)。

しかし、microの面白いところは別にあると私は考える。

このエディタ、コードベースが非常に小さいのである。

clocでカウントすると全体で12673行。ただし、runtime.goというファイルが3100行程度あり、これはほとんどボイラープレートなので無視してよい。読むべきコードは1万行弱だ。機能もよく分離されており、実装は愚直で非常に読みやすい*1。これは教育的なエディタなのだ。

もっとも、このコード読めそう…!と私に思わせてくれた背景にはkiloという1000行で書かれたCエディタを写経しているから、というのがあると思う。kiloは標準以外のライブラリへの依存関係を排除していたが(ncurseすらなし)、microはターミナルの描画管理にtcellというライブラリを使っている。精読を行う上ではtcellの使い方を理解できるかがキモだろう。


1000行程度のプログラムがきっちり読めるようになってきた。今度は1万行程度のプログラムを読めるのではないかと思えてきた。いまはまだ登山口から頂上を見上げているだけだが、少し楽しい場所に向かっていると思う。

*1:もっとも、筆者はGolangを知らないので今は雰囲気で読んでいる