vim-jp/vim-jp.github.io

10 Questions with Vim’s creator, Bram Moolenaar

Closed this issue · 20 comments

翻訳して vim-jp にのっけようと思ったんですが難しかったのでどなたかヘルプ。
だいぶシックスセンスを駆使しています。
許可は問い合わせ中。

please edit

10 Questions with Vim’s creator, Bram Moolenaar - Binpress の翻訳です。


Vim の作者 Bram Moolenaar への 10 の質問

by Alexis Santos, November 19, 2014

Vim の登場から 23 年、何百万行ものコードが Vim で書かれました。私たちはこの偉大なテキストエディタの作者である Bram Moolenaar にお話を伺い、20 年間の開発で彼が学んだことや、NeoVim についての彼の考えなどを聞きました。また、Reddit の Vim ユーザーからの質問も投げかけてみました。Bram の回答をご覧下さい。

1: このような大きくて広く使われるソフトウェアを長期間メンテナンスすることから学んだことは?

人が間違う可能性のあるあらゆることを学びました。自分自身の失敗や他人のコードから見つけたりしたものです。Vim が C で書かれていることは助けになりません。C では簡単に間違いを犯すことができます。現在のコンピューターはとても速くメモリもたくさんあるのでコンパイラーにプログラマーの手助けをして欲しいです。そのようなコンパイラを趣味のプロジェクトとして作っています。名前は Zimbu です。生成されるコードは例えばそれで Vim のようなものを書けるほど速いものです。

他に学んだことは、開発者は未来へのビジョンを持たなければならないということです。ユーザーはしばしば、簡単に追加できそうな小さな新機能をリクエストしてきます。一度に一つずつ機能を追加していくと、そしてその後の方向性を考えないでいると、後から追加された機能は簡単にはアクセスできないものになります。Vim の場合はすべてのコマンドは一つか二つのキーストロークに割り当てられています。キーが一つなら入力が簡単なので、それはよく使うコマンドのために取っておく必要があります。しかし将来、どのようなコマンドが追加されるのでしょうか? 私の推測ですが、それをビジョンと呼ぶことができるかもしれません。

例えば、word オブジェクトを追加するとき、二文字で "aw" とすることにしました。これは "a word" の意味です。一文字にすることもできましたが、後で他のオブジェクトも追加されるだろうことを私は知っていました。そして私達は今 "a paragraph" の意味の "ap" やその他のオブジェクトを持っています。もし "a" 自身が何かの機能に使われていたらこのようなことはできなかったでしょう。

2: 世界には Vim のような動作を提供するプラグインを持つテキストエディタがたくさんありますが、Vim と他のエディタではどのような違いを感じますか。別の言い方をすると、もし Vim が何かのチャンピオンだとすると、何のチャンピオンなのでしょうか?

Vim のコマンドを学び、日々の業務を効率よくこなすトリックを学びつづけるには投資が必要です。Vim が提供しているものは、あなたが学んだことはずっと使い続けることができる、という約束です。他のプログラムでは "新しい改善された" バージョンが出ると、機能はあちこちに移動し、あなたが再び効率的に仕事をできるようになるにはしばらく時間がかかります。Vim とその前身の Vi は標準で定義されています。すべてのコンピューターでそれが動き続けることを信じることができます。

3: Vim のデフォルトオプションは直感的ではないとしてしばしば批判されますが、もしすべてをやり直せるとしたらデフォルト設定や動作は変更しますか?

これは上で述べたことにも通じます: 一度に一つの機能を追加する。後から変更を加えるとき、特に機能を追加するときは、オプションを定義して新しい機能が後方互換性を壊さないようにする必要があるでしょう。例えば、マルチレベルアンドゥは "u" コマンドの動作を変えます。したがって、古い動作を無効化するためのオプションが必要になるのです。

変更したとしてもそれほど多くは変えなかったでしょう。マルチレベルアンドゥや構文強調表示や 'nocompatible' オプションによって変更されるものなど、もっと多くの機能をデフォルトで有効化したかもしれません。要するに $VIMRUNTIME/vimrc_example.vim に書いてあるようなことですね。

あるいは、多くのユーザーはそれぞれの期待を持っているでしょう。あるユーザーが他のユーザーも同じような期待を持っていると予想するのは簡単です。実際にはユーザーは多くの違った好みを持っています。最終的にデフォルト値を決定すると、そこには文句を言うユーザーが常に一定数いるのです。そのようなユーザー数がなるべく少なくなるように努力しています。

4: NeoVim の開発はおよそ 8 ヶ月に渡って続いています。NeoVim の勢いについてどのようにお考えですか?

さあ。最終目標に対していくつかの基本的な選択は奇妙で不適切に見えます。例えばあるシステムのサポートを切ったり後方互換性を維持してないことなどです。そのようなことをしなくてもうまく実装できたのではないでしょうか。

彼らは Vim の古いコードが嫌いでそれを "正しく" しようとしているように感じます。古いコードが醜いことには同意です。しかし新しく実装するには膨大な手間がかかるでしょう。これは Elvis に起こったことによく似ています: Elvis は再実装により改善を行いました。それは Vim が多くの機能拡張を行っている間も行われ続け、とても長い時間が費やされました。最終的には Elvis は非常に多くのユーザーを失ってしまいました。再実装された Elvis は良いコードで書かれているかもしれませんが、ユーザーはそのことに気付きません。

NeoVim から生じた良いものが Vim にも還元できたらと願っています。より良いプラグインサポートや改善された GUI、Vim の他のアプリケーションへの埋め込みを望まない人はいませんよね? 大きな問題は、それをどのようにきちんと実装するかです。

5: オープンソースプロジェクトを作ったりあるいは参加したりする人たちにアドバイスはありますか?

特には。どちらにしても良い目標を定めて、便利なコードを書いて、適切に宣伝するのは言うまでもありません。見た目の良いウェブサイトはとても役に立つでしょう。これは NeoVim がうまくやっていますね。

6: オープンソースソフトウェアを開発してきて、もうこりごりだという失敗はありますか。

例えば誰かからのコードを取り込んだとして、その人はそれが機能すると信じているし、問題が報告されればそれを修正してくれるでしょう。それはたいてい正しいし、信頼できるコントリビューターがたくさんいます。しかしときどき機能を入れたいだけの人がいて、使いたい機能が動くようになるとどこかへ消えてしまいます。そして、私が問題を修正するはめになるのです。

最近は、新しい機能を入れることにとても慎重になりました。それが複雑で既存コードの広範囲に及ぶ場合は特にです。何かを取り込む前にはテストとドキュメントを書くことをとても頻繁に要求しています。

7: オープンソースプロジェクトを持続可能にするにはどうするのが良い?

良いコードを書く。スペースを適切に使い、メソッドに良い名前を付け、明確でないことはなんでもコメントで説明する、などです。もしあなたがひどいコードを書いたら、他の誰かがバグを直したり機能を追加したりするのは楽ではないし、次にはほっとかれるでしょう。Vim がその好例ではないことを願います。

8: 将来に渡って Vim プロジェクトが継続することを Vim コミュニティーはどうやって保証するの?

私を生かせ続けよ。 :-)

9: チャリティーに力を入れている理由は? なぜチャリティーとして ICCF Holland を選んだのか、そしてあなたにとってなぜそれが重要なのか?

私たちは私たちが恵まれていることをよく忘れます。今日のワインはまずいとかウエイターの態度が悪いとか文句を言います。しかしそれはワインを買ったりディナーに出かけたりする余裕があるということです。それってすごくないですか? Vim を開発していたある期間に私は職に就いておらず、寄付を募っていました。再び職に就いたとき、その寄付金はそれを本当に必要としている人たちに送るのがいいのではと思いました。そして、Vim ユーザーも同じように考えていることがわかりました。

チャリティーはたくさんありますが、あなたが誰を助けるのかが明確にはなっていない場合があります。寄付金のうちいくらが提供者の国に留まりますか? 運営や送金やその他の実際には助けようとしている人たちに渡らないお金はどれくらいですか? 私が働いていたある組織では、最終的に子供たちに渡るお金は集められたうちのたった 30% でした。頭の良い帳簿係がそれを 90% に見せかけていました。しかしほとんどはランドクルーザーでそこらをドライビングしているスタッフに渡りました。子供たちのいる小さな学校にではなくです。

私が Kibaale で出会ったプロジェクトはまったく違いました。そこで働いている外国人はボランティアであり、そこで暮らし働くことを可能にするために彼ら自身のスポンサーを持っています。子供たちへの寄付はすべてプロジェクトに送られ、そこで使われます。スタッフや乗り物にも使われますが、彼らは現地のスタッフであり、彼らの金はその国で使われるので、間接的に他の人を助けています。そして最終的に、子供たちが成長し、勉強を終え、就職するのを見るのはすばらしいことです。

10: Vim の将来の予定は?

目を引くようなものはなにも。主に小さな改善をしていきます。いくつかの領域では大きな改善の見込みもあります。例えばプラグインを書いたり使ったりするのを簡単にするようなものです。しかしそれをどう実現するかは明確ではありません。それにプラグインマネージャーがその隙間をうまく埋めているようです。

しかし何が来るかはわかりません。例えば、undo ファイルの機能は "なくてもいいような" 機能に見えました。ある学生がしばらくの間その実装作業をすると、それを取り込むのはそんなに大変ではなくなりました。そして今では私は完全にその機能に頼っています。何か変更をして、ビルドして、テストをして、うまくいかなければそれを undo するのです。何か良いアイデアが浮かんでそれが実装されるという可能性は常にあります。

私は生きつづける。 :-)

私を生かせ続けよ。

ynkdir++

thanks!

許可もらえました。
ので、とりあえず日付変わるくらいにポストしちゃおうかと思います。
それまでに気付いたことがあればお願いします。
ポストした後で直していただいても構いませんのでよろしくお願いします。

翻訳ありがとうございます。原文はひと通り読んだので、私もチェックします。

それは少しの推測です。しかしそれをビジョンと呼ぶことができるかもしれません。

私の推測ですが、それをビジョンと呼ぶことができるかも知れません。

一文字にすることもできましたが後で他のオブジェクトも追加されるだろうことを私は知っていました。

一文字にすることもできましたが、後で他のオブジェクトも追加されるだろうことを私は知っていました。

もし Vim が何かのチャンピオンだとすると、何のチャンピオンなの?

もし Vim がその中でチャンピオンだとすると、何のチャンピオンなのでしょうか?

古いコードが嫌いでそれを "正しく" しようとしているように感じます。

彼らはVimの古いコードが嫌いでそれを "正しく" しようとしているように感じます。

しかし新しい実装を書くには膨大な手間がかかるでしょう。

しかし新しく実装するには膨大な手間がかかるでしょう。

再実装によって改善する予定が、時間がかかり過ぎてしまいました。

Elvis は Vim の機能を再実装することによって改善しようとしましたが、それに時間がかかり過ぎてしまいました。

より良いプラグインサポートやより良い GUI や埋め込みを望まない人はいませんよね?

より良いプラグインサポートや改善された GUI 、Vim の他のアプリケーションへの埋め込みを望まない人はいませんよね?

問題は、それをどうやってやるか、誰がそれをきちんと実装するかです。

大きな問題は、それをどのようにきちんと実装するかです。

thanks!

再実装によって改善する予定が、時間がかかり過ぎてしまいました。

Elvis は Vim の機能を再実装することによって改善しようとしましたが、それに時間がかかり過ぎてしまいました。

これはなんか違う感じがするんですがどうですかね。はつみみというか。

それは元の訳がちょっとわかりにくかったので補ってみたんですが、どうでしょうか。

意訳というか誤植じゃないですか? Elvis より Vim の方が後発だった気がしますが。

... so long, during which Vim added more features, ...

which が long に掛かってて

Vim がたくさんの機能を追加するほどの長い間

Elvis は (再実装のため) 停滞していたのでユーザーが減った、という感じかと思いました。

Elvis の再実装は改善するために行われましたが、とても時間がかかりました。
その間に Vim は多くの機能を追加しました。

ではどうでしょうか。

文から勝ち負けっぽいニュアンスが見えないので

but it took so long, during which Vim added more features,

Elvis は再実装により改善を行いました。それは vim が多くの機能拡張を行っている間も行われ続け、とても長い時間が費やされました。最終的には Elvis は非常に多くのユーザーを失ってしまいました。

くらいかなと思います。

あ、これたぶん so ... that ... なので↑の私の解釈もなんか違う感じがしますが、大筋はあってるんじゃないかと。

ヤンキーディレクトリーさんにおまかせします。

文から勝ち負けっぽいニュアンスが見えないので

あーそんな感じですね。mattn さんの訳でいこうかと思います。
すみません、ありがとうございます。

ヤンキーディレクトリーさん is 誰

ynkdirさん

Elvis は再実装により改善を行いました。それは vim が多くの機能拡張を行っている間も行われ続け、とても長い時間が費やされました。最終的には Elvis は非常に多くのユーザーを失ってしまいました。

意訳っぽいですが、問題はなさそうです。

投稿しました。
なにかあったら勝手に変更していただいて構わないのでよろしくお願いします。
ありがとうございました。

👍