Vim - だけどやっぱりVimが好き

副題:私がVimを使う理由

この記事は Vim Advent Calendar 2012 211日目の記事です。
前日は@manga_osyoさんのVim のウィンドウを Gyazo るでした。

はじめに

この記事にはTipsや便利プラグインなどの情報は一切出てきません。
最初から最後まで自分語りで構成されています。ご注意ください。

概要

私がVimを使い始めてから5年近く経ちました。
前からVimが好きでしたが最近特にVim好きが高まっており、 せっかくなので「どうしてVimが好きなのか」を整理しようと思います。

Vimを覚えたきっかけ

私は社会人歴が今年で6年目になります。
未経験OKの会社に入社しましたので、同時にプログラミング歴も6年目です。

それまでは一切プログラミングをしたことはありませんでした。
パソコンに関してもOSインストールすらさっぱりな状態です。
そもそもOSをインストールするということ自体、何のことを言っているのか理解出来ませんでした。

そんな私は入社当時から色々と焦っていました。
勉強にしても業務にしても、少しでも生産性を上げたいと考えていました。

そんな日々の中で何かのきっかけにてVimEmacsの存在を知ります。
どうやら熱狂的な信者がいるし生産性が上がると書いている人もいる。
人気には理由があるはずで、これを覚えれば自分の生産性も上がるかもしれない。

それからVimEmacsをいじってみたものの、最初はどちらも使いにくく感じました。
(編集や終了の仕方が分からず発狂するというお約束も経験しました)
それでもVimの操作性の方がまだ親しみやすかったのでVimを覚えることに決めました。

このような興味から、私はVimに手を出し始めました。

ですのでVimをおすすめする理由でよくある「サーバーいじる時に必要だから」などといった動機は皆無です。

業務で使うことにより操作を覚えていった

私の経歴は半分以上がJavaのお仕事です。
さすがに初心者のうちからJavaVimで書こうという気にはなれず、普段の開発ではEclipseを使っていました。

Vimを使うのはその他のテキスト編集としてです。
しかもサクラエディタも入れておいて、急いでいるときやVimでのやり方が分からないときはサクラエディタで済ませていました。

それでもスキを見てはVimを業務で利用して来ました。

議事録を取る

ある案件では、上司の付き添いとして顧客との会議に常に参加していました。
そこでは議事録用のメモにVimを使っていました。
このころにはある程度の基本操作が身についていたとはいえ、
会議のメモを取るには細かいことに気を配っていられずとにかく編集する必要がありました。

効率的な操作を覚えたとかの記憶はありませんが、よくいじっていたのでVim慣れしたと思います。

PowerShellを書く

ある案件でそれなりの量のPowerShellを書くタスクが割り振られました。
今は知りませんが、当時はPowerShellを書くにはPowerGUIぐらいしかまともなのが見つかりませんでした。
ですので「それならVimで書こうかな」と思い立ちました。
上記と同じく、一応基本操作ぐらいは身についていました。(Vim scriptについてはさっぱり)

細かいことは覚えていませんが、たまにPowerGUIを使ったりしながらも基本はVimで書いていました。

PHPを書く

Vim力が大きく上がったのはこの時期のおかげだと思います。
初めてPHPの案件に携わることになりました。
動的言語です。Vimしかありませんでした。

このようにして、業務なので基本は最適なツールを使いつつも、
イケそうなところではVimを使うようにして習得するようにしてきました。

いつの間にか気づけばVimのことが...

好きになっていました。
人やキャラを好きになることの理由がうまく言語化できないのと同じように、
たぶんツールを好きな理由も明確に言語化なんてできないのでしょうけど、考えてみます。

操作性が魅力?

確かに操作性(モードの概念やhjkl移動など)は好きです。

でも操作性や便利性だけを切り出すと、EmacsでもSublimeでもIDEでもいいじゃんとなります。
恋人の好きな理由に「巨乳が好き」とか「明るい子が好き」とかを挙げたら「他の人でもいいじゃん」と言われるのと同じです。

そうそう、巨乳といえばVAC200日目のVim Girl Ver 7.4(イラスト)を描いたにあるVimGirlちゃん、なかなかの大きさです。
そして最後に書かれている左の女の子はEmacs Girlだと思うのですが。(脇ら辺にロゴがあるので)

貧乳ですよね

いえ、だから特に何というわけでもないんですけど。

サーバー管理で必須だから?

サーバー管理が業務の中心ではないので、私にとってはどうでもいいです。

他にも「起動が軽い」など一般的に言われている理由は、私としては決め手に欠けました。

じゃあ何が魅力なのか?

考えた末に辿り着いた答えとしては、愛着でした。
曖昧でがっかりされそうな気もしますが、自分の中ではこれがしっくりきました。

最初は無理してVimをいじっていたけれど、長いこと触れ合っているうちに次第に愛着が湧いた。

「エディタなんて所詮ただの道具でしょ」という意見、その通りだと思います。
道具ですから、使い捨てじゃなくて1つのものを使い込むほどに愛着が湧くんです。

もう少し、掘り下げて考えてみます。

愛着 - カスタマイズ性

VimEmacsの特徴として挙げられることの多いカスタマイズ性。

.vimrcに設定を書いて自分好みにしたり、欲しい機能はプラグインを入れたり自作したりもできます。
そうしてあーだこーだと洗練されていく自分だけのVim。他人のVimは別のもの。

幼少期に秘密基地を作って楽しんだり、枝木を自分だけの武器にしたのと同じような楽しさがあります。

愛着を感じる上で大事なのは「楽しい」ということです。
「便利」かどうかじゃない。「楽しい」んです。
もちろん楽しさの要因として、ある程度の利便性は必要かもしれません。

特にVim scriptを覚え始めたあたりから、一層Vimを楽しく感じるようになりました。
既存プラグインを読めるようになったり、自分で機能拡張できたりするようになるとすごい楽しいです。

愛着 - 操作性

前述のとおり決定的な点ではありませんが。
カーソルキーを使わないのはホント便利ですよ。

快適さは病み付きになる要因のひとつです。

愛着 - プラグインが豊富

豊富ということは、「私のVimにこんな機能を付けたい」という願望がすぐに実現されるということです。
思い描いた形に自分のエディタが洗練されていくのはとても気持ちいい。

愛着 - コミュニティが好き

実は、私はこれが一番の理由かもと最近思っています。

私の言うコミュニティとは大きく分けて5つに分かれます。

Twitter

多くのVimmerVimのことばかり呟いています。
そして、Vimに関する不明点やバグ報告などをすると大概誰かが食いつきます。

みんなのVim好きパワーにはよく刺激されます。

Lingr(Vim部屋)

Vimmerの集いです。
質問を投げると誰かが答えてくれたり、Vimについてあれこれ話されていたりします。
vimrc読書会というのが開かれていたりもします。

少し前に比べると、最近は普段でもログが結構流れている気がします。

vim-jp

Vimのバグを報告するとパッチ職人と呼ばれる凄腕な人たちがサクサク対応します。
パッチがVim本体に取り込まれていく様を見ていると、これがデキるプログラマかと驚くばかりです。

それでいて、真面目な議論ばかりではなくてアホな盛り上がりも見せます。

Vim-users.jp

Vim Hacksにはお世話になっています。
最近はサーバー上(?)の何かの関係で新規追加できないとかだったかな。
更新がなくて少しさびしいです。

発足の動機が素敵だと思います。

その他のVimmer

ブログやTwitterなどでVim情報を発信する人たちのことです。
他のエディタ界隈をよく知りませんが、結構Vimの情報は多いと思います。

そして、ブログでVimのことを書くと大抵誰かがブクマしてくれたりツイートしてくれたりします。
情報を発信する立場側からすると、誰かに反応をもらえるというのはとても嬉しいことです。

どれにしても

みんな仕事していないのかというくらいの速度で反応されます。

どのコミュニティを見ていても、VimmerVimへの思いの強さが伝わってきます。
例えばこのVim Advent Calendar2012自体、半年以上続いているので非Vimmerからは気持ち悪がられています。
Vimmerの中でさえ引いている人がいることでしょう。

これらコミュニティ全体によって生まれるVim/Vimmerの世界観がなんか好きです。
Vimmerのこのアホさ、Vimへのアンテナの強さ、他Vimmerへの親切さ、仕事をほったらかしてVimをいじる行動力、いろいろなところが好きです。

愛着 - まとめ

上記の要素が合わさり、触っている期間に比例して愛着へと繋がります。
どれか1つだけが重要というわけではなさそうです。

また、操作性やコミュニティの雰囲気などは好みも大きく影響するでしょう。
たまたま私にとっては相性が良かっただけですので、
これをそのまま「だから君もVimやろうよ」と押し付けることはもちろん出来ません。しません。
(ネタで言うぐらいのことはするけど)

ただ私の場合という前置きの上で言うならば、「Vimは楽しい」です。
だからやっぱりVimが好き。

Vim好きが生んだもの。Vim駆動開発

Vimを好きになってから、いろいろと行動が増えました。
大概の初体験はVimで済ませています。

  • 初めてきちんとオープンソースを読んだのはvital.vim
  • 初めて作ったオープンソースVimプラグイン
  • 初めて作ったAndroidアプリはLingr(Vim部屋)を見るためのLingrクライアント
  • 初めて問い合わせメールを出した(とあるサービスへ)
    • スクレイピングを利用したVimプラグインを作ろうとして、問題あるかと思い問い合わせてみた
    • 曖昧な返答で濁されたため、ローカルでひな形を作ったものの結局公開はせず
  • 初めての勉強会LT発表はujihisa.vim#2
  • 初めてのAdvent Calendar参加はVim Advent Calendar 2011
  • 初めて他のGithubリポジトリでコメントしたのはvim-jp。
  • ブログ
    • Vim系の記事を書いています
    • 前述したように、誰かしらが何かしらの反応をくれるのが嬉しくて
  • アイデア出し
    • Vimにひもづけて色々なアイデアが浮かんでくるようになりました

そしてこの記事もまた、Vimへの思いから参加した結果です。

これから

  • プラグインをもっと作っていきたい
  • Vim script以外でVimにひもづけたアプリ/サービスを作りたい
    • 前述のLingrクライアントとかもその一つ
  • 他の人のVim scriptにpull request送りたい
    • 仲間内でやっていることを除けば、まだpull requestを送った経験がない
  • コミュニティにもっと貢献できるVimmerになりたい

で、当初の目的は達成されたのか

どうやら熱狂的な信者がいるし生産性が上がると書いている人もいる。
人気には理由があるはずで、これを覚えれば自分の生産性も上がるかもしれない。

気づけば自分が熱狂的な信者になっていました。

昔に比べればだいぶVimに慣れました。
今の私が、昔の私に「生産性が上がるのか」と聞かれたらこう答えるでしょう。

「分かりません」

今は各分野、便利なツールがたくさんあります。
JavaならEclipsePHPならPhpStrom、ScalaならIntelliJがあります。
初心者からしたらVimよりもSublimeの方が親しみやすそうに見えます。

そして、それらのツールを使いこなしても生産性は上がるでしょう。
反対に基本操作しか使えないなら大して生産性は上がらないでしょう。

Eclipseで言えば便利なショートカットを覚えたり設定をいじることで、
基本操作しか知らない人の何倍もの生産性を生み出すはずです。

Vimも同じ事が言えます。
使いこなしている人の生産性が高いだけで、かつその人にとっての使いやすいツールがVimなだけなのだと思います。

そういう意味で生産性を高めるツールとしては、私のVimスキルはまだ自信を持てるレベルに達していません。

先日、Javaを書くために久々にEclipseを使いました。
とても便利でした。
Javaに限らず、やはりその分野に特化したツールを使った方が生産性上がるかもな、とちょっと思いました。

だけどやっぱりVimが好きなんです。
これからもVimを使い続けると思います。愛着が湧いてしまったので。

いつか生産性も高くなるといいな。

明日は@supermomongaさんです。

好き好き大好き超愛してる。 (講談社ノベルス)

好き好き大好き超愛してる。 (講談社ノベルス)