Humanity

Edit the world by your favorite way

15.1 理想のテキストエディタを求めて

この章のEmacsを使った正規表現にまつわる話の部分を読み逃していたのは何の因果でしょうか...
せっかくなので新しいエントリで。

正規表現が使えるだけで、本当に「何日」という単位での時間の節約ができることもあります。
著者は、正規表現の威力を思い知らされるような出来事を実際に経験しています。
1000を超える数のEJB(Enterprise JavaBean)を使うプロジェクトに関わった時のことです。
そのプロジェクトで、非EJBメソッド(EJBに必要とされるコールバックメソッド以外の全メソッド)すべてに、
余分のパラメータを1つ持たせることになったのです。
パラメータ追加を手作業で行えば、6日間はかかると推測されました
(また、その種の作業を人の手で行うべきではない、という意見も多く聞かれるようになっていました)。
ところが、チームの中には、正規表現を非常によく知っている技術者がいたのです。
彼が自分のマシンに向かい、愛用のテキストエディタ(Emacs)を使うと、
2時間ほどでもう追加作業はすべて完了していました。

これに関して、前ちょっとLingrvim部屋で言った記憶があるのですが、
VimとかEmacsで強力なのって、キーバインドの次にやっぱり置き換えだと思うんですよ。


これのおかげで上の事例みたいにかなり時間の節約ができて、
普通のやつらの上を行くことができます。
いや、すいません言いたかっただけです。


具体的に言うと、EmacsVimを使ってない人より積極的に「汚いアドホックでダーティハック満載の」
コードを書いてなんとかプロトタイプを仕上げたとしても、
あとから書き換える時間はずっと少なくて済むわけです。

プロトタイプ、つまり試作品が重要なのは、えーと「UNIXという考え方」を読んでください。


もちろんそういうコードを書くことを奨励しているわけじゃなく、
「動くものを作り上げることができる」のが一番すばらしいわけで、
VimとかEmacsだったらそれができるわけですよ。最強じゃないですか。


「そんなのIDEでもできるよ」。
まぁ確かにそうですね。
でも正規表現のオプションはどのくらい充実しているでしょうか。

:help :s_flags

で表示されるオプションの中いくつぐらいですか?
そしてそれは例えばこのようなことができますか?


もちろん、エディタの機能は正規表現だけじゃないです。
僕はさっき「キーバインドの次に」という風に言いました。
これはhjklキーバインドということではなく
キーを押して即座にそれを実行する、ということです。


これは対話的インターフェースのプログラムを使うたびいつも思うことですが、
全ての対話型インターフェースを持つプログラムが
vimぐらい強力な、キーシーケンスに対して様々な処理を行うことができたら
どんなに素晴らしいでしょうか。


実際そんな風ではありませんし、「それほど必要ではないし」
という妥協もあるでしょう。妥協も時には大事なことです。
いえだいたいにおいて、と言ってもいいかもしれません。


しかし、本当に
「自分の手足となってくれるプログラム」
を求めたい場合、妥協は悪でしかありません。


そこでvimですよ。と僕は言いたいわけです。

最後に

EmacsIDEのように使う人はいる(という噂)けど、Vimでは見かけないよね」

という言葉をよく聞きます。
そうではない人を僕は何人か知っています。
そういう人はよくLingrのVim部屋にいます。
僕もその一人です。


これは冗談ではなくて、VimでもEmacsぐらい「IDEみたいなこと」
をする人は、そのうち増えてくると思います。

IDEみたいなこと」が何を指すのか、
正確な定義は言ってる自分ですら実のところあいまいですが、
だいたいにおいて、それはフレームワークを提供するようなものだと思っています。
新しい概念に浸り、その中でものを考えるということです。