2011年7月25日月曜日

Vim plugin開発の「行き詰まり」を打破する6つの方法

元ネタ「人生の「行き詰まり」を打破する6つの方法

プラグイン開発の行き詰まりは……


Vimプラグイン開発は長丁場です。いくら考えても、ニッチもサッチもいかない難題がおとずれることがあります。
すべての行き詰まりは、「こんなことVimにはできないんじゃないか?」という行き詰まり「感」です。それは、私たちが感じている一つの感情。
今日は、Vimプラグイン開発における行き詰まり「感」を解消する6つの突破口を紹介します。

1.「Vimの限界を突破する質問」を投げかける



「あなたが今、Vimの限界を感じていることは何ですか?」
「あなたがそのVimの限界を感じるたびに、自分の頭のなかでくりかえしている"問題"や"つぶやき"は何ですか?」
「あなたがそのVimの限界をこえるために役立つ答えをくれる、新しく画期的な問題は何ですか?」

この質問は、Vim scripterのShougoさんが、相談者のVim限界をこわすために考案されたものです。

人の脳はとても、単純なコンピューター。同じ問題には、同じ解法を、新しい問題には新しい解法を返します。

えてして人は同じ問題ばかりを頭のなかでくりかえしループしているのですが、こうしてそれを「見える化」することで、Vimによる新しい解決策が見つかることがあるのです。

2.「Vimコントロールの輪」を見なおす


たとえば、ある画期的なVim pluginを作りたい場合は:
内側の輪(自分で直接、変えられるもの) ... 自分の設定、自分のプラグイン、外部コマンド、外部インタフェース、外部ライブラリ
外側の輪(自分で直接、変えられないもの) ... Vimの関数、組み込みコマンド、仕様、Bramさんのポリシー

行き詰まりを感じたときに、私たちがよくやってしまうのは「自分が変えられないこと(外側の輪)にモンモンと悩んでしまうこと」。

大切なのは、自分が今・ここで直接、変えられるものだけをハッキリ切り分けること。そこだけに注力し、他はスパッとやめてしまいましょう。

「幸福への道はただ一つしかない。それは我々の意志の力では、どうにもならないVimの仕様について、悩むことをやめることにある。」
ビーム・カーネギー

3.「召喚」する


自分では、解決できない問題にであったら、それを解決したことがあるエキスパートVim scripterをvim-users.jpのなかで、「召喚」しましょう。
眼をとじて、深呼吸をし、やりたいことを簡潔にまとめたら「その人を召喚」してみてください。
何を感じていますか? 何をいっていますか? どうVim scriptを書いていますか?
きっと、あなたと違う新しい答えのヒントが見つかるはずです。

4.世界をunite化して考える


世界的に有名な「unite.vimによるカイゼン」。そのコツは、どこにあるのでしょう?
それは「世界をunite化して考えること」。
今までのインタフェースをすべてunite化する勢いで改善策を考えるという手法です。
人の頭はどうしても、今までのインタフェースに引きずられがちです。だから行き詰まってしまう。何ごとも「思い切って、unite化して改善できないか考えてみる」というスタンスが大事なのです。

5.脱力して、静かに継続する


行き詰まり感には、「他のプラグインで実装されるのではないか」という恐怖や焦りがつきまとっています。
それによってバグを仕込んだり、やる気がなくなったりするがために、うまくいかないのです。

Vim界が変化することにも、時間がかかります。
実は何も「行き詰まってはおらず」、冷静、丁寧、正確に、静かに物ごとを継続することで、少しずつうまくいっているのかもしれません。
Vim scriptは大変奥が深いです。その深淵を垣間見るためには、一年や二年のVim scriptingでは不十分です。
10年間メンテナンスするつもりで、気長に開発しましょう。
neocomplcacheやvimshellのように、三年以上継続して開発するその熱意こそがVim scriptには求められます。

ビムナムの禅僧であるビム・イズ・オールは言いました。
「微笑んで、深呼吸して、ゆっくりVim pluginを開発しよう」
脱力して、一行ずつ、静かに継続。

6.思い切って、Vimのない生活もする


「体の疲れは、Vim scripting力をも落ち込ませる」ーーこれはVim学的にも明らかで、だれもが経験していることですが
肝心なときに忘れていたりします。

人は長い間Vim scriptのみに尽力することは難しいです。
何か大きな壁にぶち当たった場合、時にはVimやPCのない環境でVim scriptのアイディアをじっくりと練ることが効果的です。
Vim plugin開発はPCやVimの存在には依存せず、脳内や手書きのノートでも十分可能であることがVim plugin開発者のShougo氏により実証されています。

「Vim pluginに対するやる気がでない。ちょっと待って……。もしかして、私、疲れてる?」
自分にこう聞いてみるだけでいいのです。もし、答えがイエスなら、思い切ってVimプラグイン開発に休みを取りましょう。
Vim休暇を使うもよし、ネットサーフィンに出かけるもよし、ちょっと早寝するのもよし、ゲームに興じるのもよし、です。
 ゆっくり休んで、Vim scripting力を充電し終わったら、意外とケロッとしているかも!?

Vimの限界は、頭のなかでつくられたもの


Vimにおいて、本当にしょうがないことは、だれもがキッパリあきらめています(例:Vimの画像表示)。

行き詰まり「感」があるということは、まだVimで実現できる可能性があると、心の深いところは感じていること。
Vimから一歩引いて、スローダウンして、Vimの周囲を大きく考えて見れば、意外とカンタンに道は開ける。