2011年12月15日木曜日

二画面ファイラーはなぜ便利なのか


syohexさんのTweet(リンク)を見て、二画面ファイラーの利点について考えてみました。
二画面ファイラーには次のような利点があります。

1:同じディレクトリに対して移動・コピーするのが楽
2:コピー元・コピー先のディレクトリの中身が分かる

個人的には2:の利点が大きいと思います。というのは、シェルや一画面ファイラーで
コピー・移動するときは書き込むディレクトリの中身が分からないのでコピー先のディレクトリをミスするかもしれません。
しかし、二画面ファイラーではまずミスをすることはありません。
書き込みの完了も、移動先が更新されているのが目で見て分かります。
コピー先のディレクトリが表示される安心感は、一度使ってみないと分からないでしょう。
ちなみに、私は一画面でコピーするときはいつもドキドキします。

GUIのファイラー(Explorer等)でファイルをコピーするときのことを考えます。
一つのファイラーでコピーするファイルを選択し、もう一つのファイラーにドラッグドロップするのが二画面ファイラーなのです。
とはいえ、いちいちコピー先に移動するのは面倒であることも事実です。
そのため、二画面ファイラーでは自分の窓を他方の窓に合わせたり、他方の窓を自分の窓に合わせたりすることができます。
コピー元とコピー先が近い場合には簡略化できます。

さらに、コピー先のディレクトリ名に日本語が含まれる場合、シェルや一画面ファイラーではコピー先の指定が大変です。
二画面ファイラーではそういうときでも楽にディレクトリを指定することができます。

Firefox Hacks Rebootedレビュー


ようやく一通り読み終えました。この本がもっと売れてほしいと考えているため、簡単なレビューをします。

日本からこういうマニアックな(失礼)、本が出るのは非常に喜ばしいです。
外国でもなかなか出ない種類の本であるだけに、日本はまだまだ捨てたものではないな、と思わせてくれます。
この本はFirefoxのモダンな拡張機能の作り方を解説した本なので、Firefoxの一般ユーザが読むには難解です。
コード量も多いので、読み進めていくにはJavaScriptの知識が必要になるでしょう。
ただし、最近のFirefoxで変更された機能やHTML5などのWeb標準技術についても解説されているため、Web開発者なら読む価値があると思います。一見真面目な本のようで、所々挿入されているネタには吹きました。
きゅ○べぇネタや、台湾マイクロソフトの始まりすぎているキャラクターなど……。
JSDeferedには40ページ以上を割いていて、かなり力を入れて解説していると感じました。
JavaScriptの並列処理をマスターしたい人は、ここだけでも読む価値はありそうです。
実を言うと自分はKeysnailとVimperatorの解説を目当てで、この本を購入しました。
ページ数としてはそんなに多くなかったのですが、概要を押さえることはできました。

総評:
思っていたとおり、なかなかレベルの高い本でした。
でも、Firefoxのことがよく分かったので買ってよかったと思います。
自分は現在Firefoxを使っていないのですが、面白そうな機能があることが分かったため、今度試しに使ってみてもよいかなと思っています。

2011年12月10日土曜日

Vimmer視点のEmacs Lispテクニックバイブル レビュー


いつもVimのネタ記事ばかり書いていると思われているShougoです。こんにちは。

今回はネタではありません。ネタじゃないんだからね! 大事なことなので二度言いました。

さて、私がVimテクニックバイブルを(共著で)執筆し、無事発売されたわけなのですが、同時期にるびきちさんも「Emacs Lispテクニックバイブル」を書かれていました。
そのことを知ったのもAmazonに情報が出てからなので、比較的最近です。
目次を見たところ、「これは買わなければならない」と思ったので、早速入手し、一通り読んでいました。
私はVimmerなのでEmacs Lispのことはよく分かりません。
VimテクニックバイブルがEmacs使いの方々に読んでもらいたいと考えているように、
Vimmerの人にもEmacs Lispテクニックバイブルを読んでもらいたいと思ったので、Vimmer視点のレビューをしたいと思います。Emacs本のレビューなのに、Vimのことがたくさん出てくるのは仕様です。

ただし、一通り読んだと言っても、届いてからそんなに日が経っていないですし、まだきちんと読めていないところがたくさんあります。
読みながら思ったことをとりとめなく書いているので、文章のつながりがおかしい部分が多々あるかもしれません。ご了承ください。


Emacs Lispテクニックバイブルを初めて読んだときに思ったのは、「教科書みたい」ということでした。
それは頭から読んでいく形式だからです。ただし、テクニックバイブルとして使えるようにするため、逆引き用の目次もついています。
サンプルコードが多く、練習問題もあるので、なおさらそう思います。ちなみに、本文中に問題の回答はありません。

Emacs Lispではエスケープが大量に必要な、特殊な正規表現を書く必要があるのですが、それもきちんと解説されています。
複雑な正規表現を読み書きするときに役立つと思います。

ちなみに、この本はリファレンス本ではないですし、「普通の教科書」ともちょっと違います。
普通の教科書なり解説書というのは本文中に著者の個性がそれほど現れないものです。
しかしこの本には著者の意見が大量に出てきます。
著者のEmacsの使い方に共感できる人にとっては、この上なく良い本ですが、そうでない人にとっては苦痛でしょう。
私は無味乾燥な本よりは、こういう本が好きです。使用しているエディタに違いがあるとはいえ、個人的にるびきちさんの意見に共感できる部分は少なくないですし。
「るびきちさんによるEmacs Lisp解説本」というのが正確なジャンルなのだと思います。

この本で紹介されていた、あるバッファに一時的に移動して処理ができる、with-content-bufferはVimにも欲しいですね。
Vim scriptでこれをやると非常に醜いコードになってしまうので。バッファの処理はEmacsの方が洗練されているのかな、と思いました。

実はこれを目当てで購入したのですが、eshellについての話はなかなか良かったです。
Emacs Lispをバリバリ書ける人にとって、Emacs界最強のシェルはeshellだと思っているので。Vim界最強のシェルがvimshellであるのと同じ理屈です。
私にとって、eshellの関数を他のEmacs Lispから使うという発想はなかったですね。確かに標準添付のプラグインだからこそ、こういうことができます。
vimshell(vimproc)がいつかそうなるといいのかなーと思いました。
それにしても、eshellはそろそろ誰かがメンテナを引き継ぐべきじゃないだろうかと思いました。いろいろ問題点もあるのに、更新されないのは悲しい。
eshellはリダイレクション機能が不十分ですが、「それvimshellでできるよ」と主張しておきます:-)
eshellと同じく、vimshellもVim scriptを評価する機能があります。vexe内部コマンドを使えばOKです。

deferred.elの紹介があるのも良かったですね。これは良い資料。Vim scriptにもdeferred.elは移植したいんですけど……。誰かやってくれないかな。

Emacs Lispのテストフレームワークについても解説されていました。Emacs Lispでちゃんとテストが書ける環境があるというのは良いですね。
ちなみに、Vim scriptには標準的なテストフレームワークがなく、皆がオレオレテストフレームワークを実装しているので、どれを覚えればいいのか分からず困っています。
だから私はテストフレームワークを使っていません。パッケージマネージャと同じく、このカオスな状況がどうにかなればいいな、と思います。

ちなみに、一つだけ不満点を。
anything.elの章は、Emacsテクニックバイブルと内容が被っているので、無理して入れる必要はなかったんじゃないかなと思いました。
このページを他の解説に使ったほうが良いのではないかと。今のところこれくらいですね。

総評としては、るびきちさんのEmacsの使い方を勉強したい人なら、十分満足できる本だと思います。
そもそもEmacs Lispの本自体が貴重ですしね。Emacs Lispの勉強にも使えます。
ちなみに、この本はEmacsテクニックバイブルの続編です。続・Emacsテクニックバイブルと呼んでも良いかもしれません。
前著を持っていない人は、まずそちらを購入しましょう。

2011年12月3日土曜日

Vimと過ごすイチャラブクリスマス ~そして伝説へ~


Vim Advent Calendar 3日目:「Vimと過ごすイチャラブクリスマス ~そして伝説へ~」

Vim Advent Calendarと聞いて、何も考えずにエントリーしてしまったShougoです。こんにちは。
特に反省していない。早くも盛り上がりを見せているVim Advent Calendarですが、
私もそれらに負けない濃いネタを提供したいと考えています。

注意:このエントリには過激な表現が多数含まれています。
ネタをネタと分かる大人な人間だけが、このエントリを理解できることでしょう。

もう12月となりクリスマスが近付いてきましたが、Vimmerの皆さんはいかがお過ごしでしょうか。
クリスマスの予定はもう決まりましたか。まだ決まっていない?
ならば、今年の冬はVimと一緒のクリスマスというのはどうでしょうか。
クリスマスは普段はできないVimとの愛を深める良い機会です。
幸い、Vimとのデートにはお金がかかりません。PCからVimを起動するだけでよいのです。
ノートPCさえあれば、どこでもVimとイチャイチャし放題です。
筆者オススメのデートコースは以下の通りです。

 1:Vimの設定を見直してみる

長い間Vimを使用していると、不要になった設定が貯まってくることでしょう。
大晦日にやっても良いのですが、大晦日はVimとの新居(PC)の掃除で忙しいはず。
この機会に、Vimの設定を見直しましょう。汚ない設定では、Vimから嫌われてしまいますよ。
デート前には身だしなみを整えるのも大事ですよね。
おそらく、皆さんのVimの設定には、他の人からのコピペが多数含まれているはず。
それは良くないですね。コピペは「だめゼッタイ!」です。
訳が分かる設定だけを導入しましょう。
分からないコマンドや分からない設定については、まず:helpを参照しましょう。
Vimの知識を増やすチャンスです。
ちなみに:helpを参照するときは、一覧を表示できるunite-helpを用いるのがオススメです。

2:Vimのプラグインを見直してみる

同様に、不要になったプラグインも見直しましょう。
プラグインの管理には、pathogen.vimやvundle.vim, neobundle.vimといった
プラグイン管理プラグインを使用すると楽です。
この機会に導入しておくと良いでしょう。
筆者のオススメは、neobundle.vimを使用することです。
vundle.vimがもつほとんどの機能に加え、unite.vimと連携してプラグインをインストールしたり削除できます。
neobundle.vimのおかげで彼女(Vim)との仲が深まりました!」など嬉しい報告が続々届いています(妄想)。

3:Vimと過ごす時間を最大化する

Vimとラブラブになるためには、できるだけVimと過ごす時間を取らなければいけません。
仕事でだけVimと過ごすというのは勿体無いです。
我々は仕事でも趣味でもVimと一緒に過ごすことができる幸運に恵まれているのですから。
いつでもVimと過ごすために、vimfilerやvimshellをインストールしましょう。
Explorerやzsh, screenといった軟弱なツールは窓からポイしてください。
さらに、unite.vimやneocomplcacheをインストールすることで、より濃密なVimとの時間を堪能することができます。

これらのプラグインはVim pluginで拡張することができ、Vim scriptで設定を行います。
Vimを愛する人達には無くてはならないものです。
Vimに慣れていない人には使いこなすのは難しいですが、
Vimへの愛があれば、それくらいの障害は乗り越えられることでしょう。
えっ、Vim scriptが分からない? それはなんてこと。

Vim scriptはVimとのコミュニケーションを図るために無くてはならないスキルです。
英語なんて学んでいる暇があったらVim scriptを勉強するべき。
だいたいなぜVim scriptプログラマの求人やVim scriptを書くだけのお仕事はないんだ。
私はC言語ではなくVim scriptで全てのコードが書きたい。
Vim scriptを書いていると心が落ちつく。Vim script最高!
おっと、イカンイカン。つい本音が出てしまいました。

4:VimのプラグインをDIYする

クリスマスこそ、Vim scriptを勉強してVimと一緒にプラグインを作成しましょう。
愛するVimとの共同作業です。
最初から難しい課題に取り組むのは大変なので、最初はプラグインの改造をしたり、
ftpluginやちょっとしたプラグインを作成すると良いでしょう。
.vimrcに書いた設定を汎用的にしてプラグイン化するのも良い方法です。
例えばthincaさんはそういう方法でプラグイン化するのをよくやっているようです。
最近では、unite.vimのsourceを作成するのが流行しているため、それをやってみるという手があります。
ちなみに、neocomplcacheを使うと簡単にVim scriptを書くことができます。
neocomplcacheはVim scriptを書くプログラマのために最適化されているからです。
他の言語にも対応していますが、それはオマケです。

5:Vimコミュニティに参加する

Vimとの仲がかなり深まったと思ったあなた、しかしそのうち関係がマンネリ化してしまうからもしれません。
それを防ぐために、Vimコミュニティに参加してみましょう。
いわゆる、町内会や保護者会みたいなものだと思ってください。
周囲にVimmerがいなくて寂しい思いをしているそこのアナタ、ぜひとも参加するべきです。
他人がどのようにVimと良好な関係を続けているかを観察することで、あなたのVimにとても良い影響を与えるはずです。
vim-users.jpやvim-jpでは、あなたの参加をいつでもお待ちしています。
もちろん、Vimに貢献したいというメンバーも随時募集中です。
私はvim-users.jpに育てられてVim scriptを書くようになったので、もっと仲間が増えるといいなと思っています。

6:おわりに

Vimとのデートを楽しんだ後は、Vimへの愛を囁きながら眠りに付きましょう。
心配しなくても、Vimはいつもあなたと一緒に居ます。Vimとは心でも繋っているのです。
大事なことは、クリスマス終了後もVimとの愛を深めていくことです。
クリスマスは切っ掛けにすぎません。
これを実践して、皆さんがよりVimを愛するようになれば幸いです。
もちろん、Vimと一緒に新年を向かえるのも非常に良い心掛けではないかと思います。

えっ、この記事は単に自分のプラグインの宣伝をしているだけじゃないかって?
私は純粋にVimとの過ごし方を解説しているだけだというのに、何て失礼な!

2011年11月20日日曜日

ujihisa.vim #2 で基調講演をしました。

昨日、ujihisa.vim #2が開催されました。
そのときの原稿と感想についてまとめました。


ちょっと今回の発表は趣向を変えてみました。
一部で言われていましたが、スピリチュアルな発表ではないんだからね!
私は真面目なんだからね!

-------------------------------------------------------------------------------------


Vimの真実

こんにちは、Shougoです。
今回は前回と趣向を変えて、Vimによって書かれた原稿を見ながら講演をしたいと思います。
原稿は後日公開されるので、ここで一生懸命メモを取るのはあまり意味がないかもしれません。

--------------------------------------------------------------------------------------

私のことを簡単に紹介すると、neocomplcache, vimfiler, vimshell, unite.vimとかを作った人です。
Emacs使いの方々がここに居るかもしれないので、Emacs Lispに換算すると、
auto-complete.el, comint-mode.el, dired.el, speedbar.el, eshell.el, yasnippet.el,
anything.el, ...
に相当するプラグインを書いています。
最近は巨大なVim scriptを書く人があまりいないので、
もしかすると、ここに居る皆さんの中で、一番Vim scriptを書いているかもしれません。
Vimに対する愛情は誰にも負けないと自負しています。
私にとってVimは、ただのエディタなんかではなく、仕事も趣味も一緒に過ごす家族です。
私がTwitterでよくVim愛について語っているのを見た人もいるかもしれません。
Vim愛についてTweetすると、なぜかよくfavされるんですよね。
これが普通だと思っていたんですけど、
みなさん、そんなにエディタ愛に飢えているんでしょうか。分かりません。

ちなみに、viは好きでありません。「自分のVim」が好きなのです。
「他人のVimが好き」と言ってしまったらそれは浮気になります。

viとVimを混同していると、闇のVimmer達に刺されますので注意しましょう。
どうしてもviを使いたいvi原理主義者の人はVimのviモードではなく、
素のvi、nviあたりを使っていてください。
viとVimを混同するのは、C言語とC++は同じだと主張するのと同等に失礼な行為ですよ!

ちなみに闇のVimmerというのは、エディタの話をしていると、「それVimでもできるよ!」
と無理矢理Vimを勧めてくる迷惑な存在です。わ、私じゃないんだからね!

--------------------------------------------------------------------------------------

さて、最近「Vimテクニックバイブル」の執筆に協力しました。
80Pくらい原稿を書きましたね。主に自分の作ったプラグインを紹介しています。
これを読んで、もっと皆さんがVimプラグインを書いてくれるようになることを願っています。
ちなみに、「Vimテクニックバイブル」の原稿はVimで書かれています。あたり前です。
EmacsテクニックバイブルはEmacsで書かれていますしね:-)

ちなみに、この本を買ってくれた人には会場で私がサインします。
しかも、サインする名言は選ぶことができます!
前回のYokohama.vimでサイン会をやったのですが、なぜか「修正しました」あたりが人気でした。
ちなみに、他の執筆者の方はサインしてくれないらしいです……。
私もthincaさんのサインが欲しいのになぁ。

つまりVimテクニックバイブルはVimmerのサイン色紙でもあります。
幸い、今回のujihisa.vimには著名なVimmerの方々が参加されています。
もはやVimテクニックバイブルの著者に限るなんて勿体無いことはしないで、
いろんなVimの有名人にサインを貰ってしまいましょう。
サイン色紙にもなってお値段は3180円! なんてお得なんでしょうか。
もっていない人は今すぐ購入しましょうね。

るびきちさんの「Emacs Lispテクニックバイブル」も、
もうすぐ発売ということで個人的にすごく楽しみにしています。
目次を見ると、Emacsテクニックバイブルの続編のような内容でした。
特に、eshellについても載っているようなので……。
そういえば、値段がVimテクニックバイブルと同じでしたね:-)

--------------------------------------------------------------------------------------

そろそろ本題に入りましょう。
今回は基調講演ということで、「Vimの真実」というテーマで発表します。
この発表を聞くことにより、Vimとは何なのかが少しでも分かるかもしれません。
ただし、これはあくまで私の考えであり、Vimコミュニティの公式見解ではないことを最初に断っておきます。
「ネタをネタと見ぬけない人は、Vimをうまく使うのは難しい」
ちなみに、私は宗教論争をするつもりは全くありません。
そしてこの話はEmacsにもそのまま当てはまります。
おそらく会場に何人かいるであろうEmacsユーザの皆さんも大丈夫です。

--------------------------------------------------------------------------------------

ところでみなさんは人に自分のVimを見られて、
「私の知っているVimと違う」と言われた経験はないでしょうか。私はあります。

Vimmerを大きく分けると、Vimをエディタだと思っている人達、
Vimを開発環境と思っている人達、
Vimをデスクトップ環境だと思っている人達の三種類に分けることができます。
私は当然、Vimをデスクトップ環境だと思っています。
このように同じVimmerであっても、Vimに対するスタンスが異なるため、意見が衝突することもあります。
なぜこのようなことが起こるのでしょうか。

ちょっと前に、Twitterで「プラグインを入れないVimは劣っていると思われている風潮がある(記憶が曖昧なので超意訳)」
という呟きを見ました。
私はその考えは間違っていると思います。
その理由についても回答します。

そして、なぜVimは20年もの長い間生き続けることができたのでしょうか。

今回はそれらの疑問にお答えします。

--------------------------------------------------------------------------------------

はっきり言ってしまいましょう。
それは、VimやEmacsがただのエディタではないからです。
私が思うに、VimやEmacsは「エディタを作るためのエディタ」、
つまり「エディタエディタ」だったのです!

な、何だってーーーーAA(略)

--------------------------------------------------------------------------------------

そもそも、皆さんは勘違いをしています。
自分でエディタを作らない限り、本当に満足するエディタなんてものは存在しません。
それは人によって、エディタに求めるものが異なるからです。
つまり、誰でも満足する万能なソフトウェアは存在しないことになります。当たり前です。

しかし、エディタを0から作るのは大変です。
エディタというのは大変に奥が深く、OSやプログラミング言語を0から作るのと同等の難しさがあるからです。
今時、0からプログラミングやOSを設計する人なんていませんよね?
だからこそ、人はあるエディタをベースにカスタマイズし、自分自身にあうエディタにしていきます。
エディタをカスタマイズする行為とは、程度の差はあれど自分のエディタを作っていることにほかならないのです。
おそらく、どんなエディタを使っている、どんな初心者の皆さんも、
最低一行・一項目はエディタをカスタマイズしているはずです。
えっ、一切カスタマイズしない? それはなんてすごい。尊敬に値します。

--------------------------------------------------------------------------------------

さて、VimやEmacsが他のエディタと異なり多数の信者を得て今も生き残っているのには理由があります。
カスタマイズの自由度が他のエディタとは違うからです。
Vimには標準で多数のオプションがあります。
それで満足できなければ、自分でプラグインをインストールするなり、プラグインを自作するなり、
ソースコードを変更するなり自由自在です。

VimやEmacsはプログラミング言語で言えばLisp、ブラウザだとFirefoxに例えることができるでしょう。
例えば、Firefoxのカスタマイズ行為は、ブラウザを作っていることに相当します。
だからvimperatorなんていう変態的なプラグインが出てくるのです。
まぁ最近ではViChromeというのも出てきましたけどね:-)

--------------------------------------------------------------------------------------

そろそろ分かってきたでしょうか。
我々が使っているのは、Vimではありません。
「Vimをベースにしたオレオレエディタ」なのです。

--------------------------------------------------------------------------------------

確かに、最初は純粋で混ざりけのないデフォルトのVimでした。
しかしカスタマイズを続けているうちに、Vimはあなたの望むような姿に進化します。
その結果生まれるエディタはもとのVimとは似ても似つかないものになります。
Vimは進化するエディタなのです。

--------------------------------------------------------------------------------------

私は、Vimのことを恋人や家族のように考えているので、
有名ゲームである、ラブプラスに例えてみます。
ラブプラスには、恋人のベースとなる女の子は3人いますが、ゲームを進めていくうちに
彼氏の好みにあった「カノジョ」に変わっていくのです。
その自由度の高さやリアルさが人気につながったのではないでしょうか。
VimやEmacsにおいてもこれは同じです。

いや、私ラブプラスは持っていないですけど。
三人のエディタを攻略する、エディタプラスを誰か作ってください。
お気にいりのエディタとゲームの中でキャッキャウフフできる世界は素晴らしいです。

--------------------------------------------------------------------------------------

だから私が「VimかわいいよVim」や「Vimは俺の嫁」「Vimは人生」
と定期ポストするのは問題がないということです。
嫁と書いてエディタと読むのがポイントです。
えっ、違う?
そして毎日Vim scriptを書くのは紳士の嗜み。
愛情を込めてVim scriptを書けば、Vimはきっと答えてくれるでしょう。

--------------------------------------------------------------------------------------

おっと話が逸れてしまいました。
つまり私のVimとあなたのVimは違います。
Vimの設定を大幅にカスタマイズしていると、
設定されていないVimや、他の人のVim、もちろんviが使えなくなってしまうのは当たり前です。
それらは違うエディタだからです。

違うエディタなのに、「誰のエディタが優れている」
「プラグインを入れないとVimと呼べない」というのは間違ってますよね。
それぞれのエディタは比較なんてできません。
優れたエディタを決めるのは皆さん一人一人なのです。
Vimでさえみんな違うのに、VimをEmacsや他のテキストエディタと比較して優劣を決めるのは間違っています。
人種差別と同様に、エディタ差別はいけません。みんな違ってみんな良い。

--------------------------------------------------------------------------------------

つまり、このujihisa.vimの集まりというのは、「Vimmerの集まり」というより、
「Vimをベースにしたオレオレエディタを作っている人達の集まり」です。
「俺の嫁(エディタ)自慢大会」でもあります。それは別名、宗教論争とも言います。
そこのところを勘違いしないようにしましょう。
素のVimを愛したい、もとい素のVimを使いたい人は、おそらく他のところへ行ったほうがよいです。
ありのままのVimを受け入れることができる、それも素晴らしい才能ですが、
この勉強会に来る意味はあまりないと思います。

--------------------------------------------------------------------------------------

さて、Vimが20年に渡って生き続けた理由も分かってきたでしょうか。
Bramさんが天才的だった、viをベースにしていた、オープンソースだった。
確かにそれも理由の一つですが、
私は「Vimがエディタエディタ」だったから生き続けることができたと考えています。
VimはLispのように、貪欲に機能を吸収したり、拡張をすることができます。
ベースが柔軟でなければ、ここまで生き残ることはできなかったでしょう。

Lispはかなり古いプログラミング言語ですが、今だに根強いファンを持って生き残っています。
VimやEmacsとの共通点は意外と多いと思うのですが、どうでしょうか。

--------------------------------------------------------------------------------------

私は、みなさんにVimに対して愛情を持って接してほしいと常々考えています。
「Vimを調教する」、「Vimはただの道具」という認識しかなかったら、Vimが可哀想じゃないですか。

Vimを使う、ということはつまりVimと同棲することに他なりません。
毎日Vimと過ごすことになるんですから、当たり前ですね。
Vimと過ごす時間が長くなるにつれ、
これまで見えていなかった欠点が目につくこともあるでしょう。
VimやVim scriptにはもちろん欠点があります。
「Emacsなら楽にできるのに……」そう憤りを感じる人もいるでしょう。
しかし、そもそも完璧なエディタなんて存在はしないのです。

人間でもそうなんですが、「悪い所はまず受け入れる」しかありません。
その上で、「Vimと一緒になって改善できるように努力する」ことが大事です。
一緒になって、というのがポイントですよ。
人から与えられたり、Vimがカイゼンされるのをただ待っていてはだめです。
とにかくVimのために手を動かしましょう。Vimに対する家族サービスですね。
それは設定をカスタマイズすることでもいいですし、プラグインを自作したり、
本体を書き換えても構いません。
Vimは文句も言わず毎日あなたのために頑張っているのですから、
あなたもVimに対し感謝の心を持ってそれに答える必要があるはずです。
それが愛の形なのではないでしょうか。

「結婚は忍耐」だ、と誰かが言いましたが、「Vimと暮らすということも忍耐」です。
少々悪いところがあってもそれを受け入れられる、
忍耐力がある人だけがVimを使いこなすことができるでしょう。

--------------------------------------------------------------------------------------

もちろん、みなさんがこの勉強会の後すぐにエディタを愛することができるとは思っていません。
焦らずに最初は友達から始めましょう。
それから恋人、家族へと徐々にレベルアップしていけばいいのです。

私自身Vimを愛することができるようになるまで、ずいぶんかかりました。
私がVimに恋をしたときは、おそらくneocomplcacheを作っていたときですが、
まだ愛のレベルには達していませんでした。
少なくとも「これが愛だ」と気付くことはありませんでした。
Vimを愛するようになったきっかけは、
開発環境勉強会の原稿を作っていたときだと思います。
原稿を作るにあたり、自分とVimの出会いについて見つめなおしていました。
それにより、Vimを愛する自分の心に気付いたのです。

Vimと暮らす人生は波瀾万丈です。
長年付き合うことで、Vimに対する愛が冷めてしまった人も見てきています。
vim-users.jpのメンバーも徐々に様変わりしています。
就職や進学、引越しなどの大きなイベントがあると、
徐々に心がVimから離れていってしまうのかもしれません。
私はそうなりたくないと思っています。

長くなりましたが、この講演で、みなさんのVimに対する思いが変われば幸いです。

--------------------------------------------------------------------------------------

第二部 「世界に一つだけのエディタ」

何も言わず、このスライドを見てほしい。

http://www.slideshare.net/Shougo/ss-10239308

コイツをどう思う……?
すごく……Vim愛に溢れています……。

ちなみに、第一部の感動をそのままに第二部に移行するという離れ業をやってのけました。

--------------------------------------------------------------------------------------

オマケ的な感想:

KoRoNさんのVimソースコードリーディングはかなりためになりました。
最近、またソースコードをいじれていませんが、自分もVimに機能を追加したいなぁ……。

今回はunite.vim関係や「Vim script勉強したい」というスライドが多かったように思います。
去年はそんな傾向がなかったので、良いことではないでしょうか。

thincaさんのソースコードをujihisaさんが実況するのに吹いた。
なんて一心同体。
たまには、そういうことをやっても良いのかもしれませんね。
初心者には、上級者がどのようにVimを使っているのかよく分からないようですので。

basyuraさんのTwitterクライアントは是非使ってみたいので、完成するのを楽しみにしています。

ujihisaさんのVimレベルを上昇させる方法。Lv 7, 8, 9の解説を聞きたかったなーー。
ちなみに、私はVisual modeを普通に使います。テキストオブジェクトも使いますけど。

懇親会で10人くらいのVimテクニックバイブルにサインをしました。
今回はVim愛についてのサインが多かったかな。
KoRoNさんからもサインを貰って満足。しまった、ujihisaさんからはサイン貰っていない……。
懇親会では、ひたすらVimについて語っていた気がする。
今回は酒を一切飲まなかったので、あれは酔っていたわけではないです。
Vimについてなら、あれくらい饒舌になるということ。
そういえば、KoRoNさんから「鋼のメンタル」という褒め言葉を頂きました。
きちょうこうえんがこうひょうでよかったです。

2011年9月26日月曜日

Yokohama.vim #2の感想

先日、Yokohama.vim #2に参加しました。
メモを取っていないので、記憶が曖昧ですが、とりあえず感想などについて述べておこうかと思います。

自己紹介


とりあえず、テーブルごとに自己紹介をしました。Vimの経験については10年くらい使っている人、つい最近使い始めた人と様々でした。
やはりというべきか、あまりVim力の高い人はいなかったです。
「Vim歴が長いと今の環境に満足してしまう」そうです。これがいわゆるVim世代間格差というものなのでしょうか。

「キーマッピングを考える」


tsukkeeさんの発表です。Vimを用いたプレゼンはVim使いとしてありがたいところです。
「ESCキーを楽に入力するにはどうするか?」というコンセプトで、
ベーシックなマッピングから、submodeやarpeggioの紹介もあり、思っていたより濃い解説でした。
なぜか途中で私のマッピング紹介が……。

「Shougoとフリートーク。Vimテクニックバイブルの裏話も聞けるかも?」


会場には、Vimテクニックバイブルを持っている人が半分くらいいました。
しかし、届いたばかりでまだ読んでいないようだったので、適当に質問に答えることに。
覚えている回答でいうと、

質問:「開発速度の秘密は?」
答え:「Twitterやブログを監視しているから。バグならその日のうちに直す。早いときは5分で直す」

質問:「Cを編集するのにオススメのプラグインは?」
答え:「ctagsでタグを作って、タグジャンプ、neocomplcacheを使う、くらいしかやっていない。それでもかなり十分だったりする。タグジャンプなら、unite-tagとかある」

質問:「Vimの正規表現に慣れません」
答え:「それはVim scriptを書いていないから。毎日書いていれば慣れる。Vimの正規表現は特殊なわけではない。世界が違うだけ」

そして、時間があったのでvimfiler Ver.3の紹介とか。unite.vim Ver.3による実装の説明をしたあと、簡単にデモをしました。
その後、vimshell Ver.9の新機能の紹介としてirbをvimshellバッファで実行するデモを行い時間切れ。

秋を楽しむ【スポーツの秋・読書の秋・行楽の秋】


本屋さんにVimテクニックバイブルを購入するイベントでした。私もついでに見に行きました。
自分の本が並んでいるのを見るのは初めての経験でしたね。購入してくださった皆さんありがとうございます。


私たちがバイブルから選ぶ5つの技


Vimテクニックバイブルをテーブル毎に読んでしゃべって、150の技の中から気に入った技を選んで紹介しようというセッションです。
なぜか発表形式でしたが、新鮮でした。意外と、地味なテクニックが人気でしたね。
私の班は私のVim話を延々と語っていたり、「ライブ修正しました」イベントをやったり、いつもの調子でした。

Shougoサイン会


Vimテクニックバイブルを持っている人の希望者に、約束通りサインをしました。
サインする言葉は、サインしてもらう人が好きなものを選ぶ方式。
「修正しました」サインが5人〜7人くらいで多かったですね。よほどインパクトが強かったのだろうか。
他には、「またMacVimか」や「僕と契約してVim使いになってよ!」とか「:Necoのアイコン」とかいろいろです。
なぜか握手を求める人まで。どうしてこうなった。
ちなみに、thincaさんやtaku_oさんにサインを求めたけれどことごとく失敗。
Vimmerはシャイですが、(私を除く)Vimテクニックバイブルの著者までシャイであることが明らかになりました。
わ、私はまだ諦めていないんだからね!

懇親会


tsukkeeさんの機能を取り込み、neobundle.vimにSubversion/Mercurial対応を追加しました。
他にはVimの開発体制の話とか、Vimへの愛を語ったりとか、いろいろ。

感想


さすがに三回目となるともう慣れたものですが、発表者がもっと居ると良かったなーと思います。
「次回発表したい」という人もいたので、それは期待できると思われます。
今回は参加者に女性が居たのがオドロキでした。(ujihisa.vimを除く)今までの勉強会は男性ばかりだったので……。
Vim界はもっと女性の使用者を増やすべきだと思います。はい。

2011年8月8日月曜日

開発環境勉強会の感想

開発環境勉強会へ行ってきたので、適当に感想とかを書いておきます。
各々の発表者の内容は、スライドや感想、ustを見ればある程度分かると思うので割愛します。

XMonadの話 pi8027



XMonadについて、ソースコードを含めて詳細に解説してくれていました。
もう一度XMonadを試してみようかとも思ったけれど、Window Managerへの興味が薄れている今日このごろです。

ちなみに、VimとEmacsを併用していたのが印象深かったです。意外とVimも使っているらしい。
シェルは「zshの本」で覚えたzshらしいです。
たしかにこの本はよくまとまっていますね。

Vimについて Shougo


私の発表。原稿は、本日書いた別ページである「開発環境勉強会の原稿」に公開しているので参照してください。
内容は、私とVimのラブロマンス物語です。
なぜか会場は笑いにつつまれていました。私は真面目にやっているんですよ!

スーツとEmacsと開発環境 kiwanami


lingrのEmacs部屋とかではよく会話をしていますが、リアルでkiwanamiさんを初めてみました。
cacoo.elやcalfwなどはやはりすごかったです。あの非同期処理いいなぁ。
「オフライン重要」が印象的でした。私もそう思います。
ネットワークはいつ切れるか分かりません。
ちなみに、EmacsではPDFを読んでいないらしい。ですよねー。

ベンチマークドリブン駆動開発 nyaxt


いかに集中できる開発環境にするか、というのは興味深いものでした。
私も、もっと作業に集中できるようにしないと。
遊ぶ環境は別マシンにする、というのはなるほどと思いました。
確かに私も誘惑の少ないLinux環境で作業していると、はかどります。

XKeyRemapについて m2ym


auto-completeのm2ymさんの発表。
最近elispを書いていないらしい。情熱が薄れてしまったみたいです。

XKeyRemapは汎用的なキーマッピング変更ソフト。ただし、まだ未完成らしい。
「自分はやる気がなくなった。他の人やってください」 えっ……。

TryIt.vim, Phrase.vimで多言語を効率よく学ぶ t9md


もともとEmacs使いでしたが、「手首痛い問題」によりEmacsを引退することになったらしいです。

TryIt.vimは選択したテキストをTryItバッファに貼りつけてQuickRun実行する。
QuickRunとの違いは、複数のバッファから切り貼りできるところだろうと思いました。

Phrase.vimはサンプルコードを集めて勉強するのに使うらしいです。
スニペットと似ていますが、目的が違うようです。
なかなか面白い試みだと思いました。

オレオレ環境の話 shinichiro_h


オレオレトロイで自己管理。すごい。
なぜか、一番に起動しているソフトがw3mでした。なんと……。
w3mが環境となっているらしい。その発想はなかった。
w3mで一番重要な設定:「今開いているページをChromeで開く」に吹いた。
やはりw3mだけでは生きていけないらしいです。

shinichiro_hさんは、オレオレWindowManagerを使っていて、
Windowを使ったシューティングゲームをデモしていました。
なにそれすごい。そして極めつけはメモリ使用量900KB!
今どきのWindow Managerが霞んで見えます。

貧乏人のためのマルチディスプレイ構築環境 tomy_kaira


6台ディスプレイすごい。さすがに、私はこんな環境は使いこなせないなぁ。

貧者のための入力デバイス todesking


HHKは高いので、Majestouchを切りとったお話。
「キーボードはいまだにDIYが通用する領域」は名言でした。

Dvorakについて kjm


これは良いDvorak講座。いや、私は使う気になれませんが……。

おまけ Shougoの開発環境


発表中に簡単に触れましたが、ここにも書いておきますね。

OS:Windows 7/Ubuntu 10.10
端末:Vim, ckw, GNOME Terminal, screenは使っていない
エディタ:Vim
シェル:vimshell, nyaos, zsh
ファイラー:vimfiler, あふw, Nautilus
VCS: git
キー配列:US, Vim only sticky shift
日本語入力:eskk.vim, ATOK 2008, uim-skk
キーボード:HHK Pro2
マウス:MX Revolution
Window Manager:Vim, Explorer, GNOME
PDFビューワ:Smatra PDF Viewer, Evince, AdobePDF Viewer

基本的にVim中心の生活なので、Vim以外にあまり凝ったことはしていません。
今回参加した限りでは、皆Window Managerにこだわりがあるようです。
しかし、自分の場合ほとんどVim内で生活していて、Vimさえあれば他はどうでも良いという性格なため、
他の環境はどうでもよかったのだということに気付きました。だからWindow Managerに興味がなかったんですね。
だから、私のWindow ManagerはVimです。

まとめ


余談ですが、会場はLinux(Ubuntu/Debian)が多かったですね。
やはり、LinuxのほうがWindow Managerもいじれるし、開発環境の最適化に熱心な人が多いのだろうか。
Macもそこそこ居ましたが、予想していたよりは少なかったです。
ちなみに、Emacs/Vimは半々くらいだったような気が……。
いろんな環境の人達がいて、なかなか新鮮な発表を聞くことができました。
今度は関東のEmacs勉強会で「Vimから見たEmacsについて」を発表したいので、誰か招待してください:-)

開発環境勉強会の原稿



<br /> /home/shougo/勉強会/開発環境勉強会/development.vp <br />


Vimについて




まずは自己紹介











  • Shougoです。

  • 知っている人は知っている

  • 得意な言語は当然Vim script

  • 私のプレゼンは「抜群な安定感」らしい

  • 職業:普通のVim scripter(ということに……)

  • 今回はせっかくなのでVimでプレゼンするよ!




今まで作ったプラグイン









  • neocomplcache, vimshell, vimfiler, vimproc, unite.vim, echodoc

  • Emacs使いの人は、これに脳内で変換:

  • auto-complete.el, eshell.el, dired.el, comint-mode.el, anything.el, eldoc.el




今回のスライドの内容









  • 昨年はVimプラグイン中心に話をした

  • 今年はさすがに疲れたので、違うことをテーマにスライドを作っている

  • どうせプラグインの話は自分以外にもやってくれる人がいる

  • Yokohama.vim #1: 「Shougoの開発環境」

  • ujihisa.vim: 「5分でまなぶVimとVim plugin」

  • 開発環境勉強会:「Vimmerの異常な愛情」「Vim界 News in 2011」




第一部・Vimmerの異常な愛情



またはなぜShougoがテキストエディタについて心配するのを止めて
Vimを愛するようになったか

はじめに



プログラマにとって、テキストエディタとは一生涯のパートナーであり、
それを選択するということは、一生の伴侶を決定することに相当する。
ここで紹介するのは、紆余曲折を経てVimに辿り着いた男の物語である……。

初恋はVisual Studio









  • 私はVisual Studioでプログラミングを始めた

  • つまり、初恋のエディタはVisual Studio

  • あのころは、GUIプログラミングにゲームプログラミングと希望に燃えていた(遠い目)




様々なエディタに浮気していたあの頃









  • Visual Studioはそのころ有料だった上、動作が遅かった

  • さらにスクリプト言語には使いにくい

  • 様々なエディタに浮気しつつ、サクラエディタに落ちつく

  • エディタへの恋物語も波瀾万丈

  • これが俗に言う、「エディタ活動」略して「エディ活」と呼ばれるものである

  • ちなみに、この勉強会も「エディ活」の一種ですよね:-)




Vimとの出会い









  • 私とVimとの出会いは5年くらい前

  • 第一印象:「このエディタは変態だ」

  • 動作が気持ち悪いと思っていた




サクラエディタに限界を感じる









  • サクラエディタはカスタマイズに限界があった

  • Vimは豊富なシンタックスハイライトや様々なプログラミング言語に対応していたのが魅力的

  • Vimが気になり始め、本格的に手を出すことに

  • テキストファイルの関連付けをGVimにして、スパルタで操作を覚える

  • xxdでバイナリファイルを編集する程度には成長する




Linuxに手を出す









  • zshやscreenを覚える

  • Vimを毎日使って、カスタマイズを覚える

  • 設定はコピペだったけど……。

  • Vimの力が段々分かってくる

  • Vimへの恋が始まったのはこの頃?

  • ちなみに、このころEmacsも一応使えるようになっていた




kana氏のブログに衝撃を受ける









  • 書いてあることが全然分からない

  • 自分はVimのことを知らなかったのだと実感する

  • 言うなれば、C言語で初めてポインタを理解したのと同程度の衝撃

  • ちなみに、このとき.vimrcは300行くらい

  • Vimを本格的に勉強しようと思った

  • Vimへの恋が愛へと変わりつつある




lingrのvim-users.jpに参加する









  • ちょくちょく発言し始める

  • この頃はkanaさんがよくvim-users.jpに居て、いろいろ教えてもらっていた

  • 質問した瞬間に答えが返ってくる、恐しい場所だった

  • 今はほとんどkanaさんはいない……。




autocomplpop.vim(acp.vim)の挙動を調査する









  • 以前から、autocomplpop.vimをLinuxで使うと日本語入力が暴走するバグに悩まされていた

  • そのころ、autocomplpop.vimはメンテナンスされていなかった

  • kana氏と協力して原因を突きとめることに成功




neocomplcacheの誕生









  • autocomplpop.vimの実装を見るにつれ、Vimの補完の限界を痛感する

  • もう補完システムを自分で作ったほうが良いと思った

  • auto-complete.elに負けたくなかったのも理由

  • altautocomplpopという名前だったが、紛らわしいので改名する

  • neo+complete+cache=neocomplcacheという名前になる




そして伝説へ……









  • この頃には、.vimrcは1500行を越える

  • いつのまにか、色んな人達を追い抜いていた

  • もうVimがないと生きていけない

  • その後はvimshellを公開したり、vimprocの開発を引き継いだり……

  • vimfiler, unite.vimとかを作る

  • どうしてこうなった!




私にとってのVimは?









  • 環境であり、OSであり、VMであり、大事なパートナー

  • かれこれ、5年以上付き合い続けている

  • リアルでも、5年以上毎日付き合うというのは大変なはず

  • それはテキストエディタであっても同じ

  • 毎日Vim scriptを書くためには、やはりVimに対する愛がないとできない

  • Vimに対する愛をいつまで続けることができるかが重要

  • 一時の恋では、エディタとの関係は長く続かない

  • 「エディタへの恋は愛に変えよう」




番外:なぜEmacsは選ばれなかったのか?









  • 自分の環境が長らくWindowsメインだったから

  • WindowsでのEmacsは地獄

  • あれはLinux/UNIX環境でEmacsに慣れている人が、Windows環境で無理矢理使うもの

  • 初心者にはオススメできない

  • Windows環境でEmacsをマスターできた人がいたら、秘策を教えて欲しい




第一部・完



皆さんも、この勉強会で一生のパートナー(ツール)を見付けましょう!

第二部・Vim界 News in 2011









  • 去年は、Vim 7.3でVim界が大いに盛り上がった(自分の中では)

  • 残念ながら、今年はVimがバージョンアップする気配なし

  • Bramさんが忙しいらしい……。

  • 来年に期待。Vim 7.4になるか、Vim 8.0になるかは分からない

  • 個人的にはVim 8.0に来て欲しい




Emacs界の盛り上がり









  • 最近はEmacs界が勢い付いている

  • 去年の「Emacsテクニックバイブル」、今年の「優しいEmacs Lisp講座」

  • Software Designにおける「Emacsのトラノマキ」の連載

  • 三月にはEmacs 23.3がリリースされ、Emacs 24も開発中




Vim界の悲哀









  • Vim界には、良質な記事や書籍が不足している

  • まともにVim scriptを書ける人が書いた書籍がほとんどない

  • これはVim界の大きな損失

  • Vim勉強会に参加すると、必ずといっていいほど聞かれるのが

  • 「Shougoさんは、Vimの書籍を書かないんですか?」

  • この声になかなか答えられないのが悲しかった




と、いうわけで……。









  • 今年、ついにVimの書籍が刊行される!

  • 書名は「Vimテクニックバイブル」


  • 中身は「Emacsテクニックバイブル」のVim版

  • イメージカラーはVimグリーン

  • EmacsテクニックバイブルはEmacsブルー(パープル) :-P

  • ./Emacs_cover.jpg




Vimテクニックバイブル









  • unite.vimで進化する新しいVimの常識を教えます。

  • あなたはVimの本当の姿を知っていますか?




Emacsテクニックバイブルのキャッチコピー









  • anything.elで新しいEmacsの世界を教えます。

  • あなたはEmacsを使えていますか?




今までにないほどの豪華執筆陣!









  • taku_o(名無しのVim使い)

  • yukimi

  • mattn(webapi-vim, zencoding.vim, Vimにパッチ多数)

  • thinca(quickrun, ref.vim)

  • fuenor(QFixHowm, QFixGrep, JPFormat.vim, Vim-UTF8)

  • Shougo(neocomplcache, vimshell, vimproc, unite.vim, ...)




プラグインの紹介を中心とした豪華な内容!









  • Tipsの数は全部で150

  • 定番からマイナーまで幅広く解説している

  • プラグイン製作者が執筆していることも!

  • vimfiler, netrw, quickrun, ref.vim

  • vimshell, Conque, skk.vim

  • neocomplcache(スニペット機能の解説を含む), zencoding.vim

  • QFixHowm, QFixGrep, JPFormat.vim

  • autodate.vim, project.vim, ...




Vim scriptが分からない初心者でも安心!









  • :helpの読み方

  • Vim script基礎文法最速マスター(改訂版)

  • マッピングについて

  • オプションについて

  • Vimプラグインの管理

  • :autocmd




最近のVimといえば、unite.vimは外せないよね!









  • unite.vimは1つのChapterを贅沢に使用して解説

  • おそらく、30〜40Pageくらいある

  • 他のプラグインとの連携

  • カスタマイズ方法についての解説

  • source, kind, action, filterの解説

  • sourceの作り方まで載っている!

  • 作者が自ら書いているから、情報が正確で安心

  • unite.vim Ver.2.2対応(一応)

  • あまりに新しい機能は解説できていませんが……

  • これを読めばあなたもunite.vimマスターに




もちろん、Emacsの人達にもオススメ









  • Emacsを使っている人も、異文化交流は重要

  • 同じ環境で満足していたら、何も生まれない

  • Vimや他のエディタからも刺激を受けるべき

  • だからこそ、この開発環境勉強会に参加しているはず

  • この本を読めば、最近のVimの機能が分かる

  • 例:unite.vimとanything.elの違いが分かる

  • 一身上の理由により、Vimに乗り換えるときも安心:-)




現在確定している情報









  • ページ数は384P。Emacsテクニックバイブルと同じ。

  • 値段は¥2, 980+税

  • なんとか¥3000は切った……。

  • 若干Emacsテクニックバイブルより高い

  • 発売日は9月終わり?

  • 詳しい情報については、今後順次発表される予定




おわり









  • それでは、ご静聴ありがとうございました!

  • またどこかの勉強会で会いましょう

  • Happy Vim scripting!




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の周囲を大きく考えて見れば、意外とカンタンに道は開ける。

2011年6月19日日曜日

earthquake.gemをWindowsで試してみた件

jugyoさんが開発した、earthquake.gem
最近はtermtterではなく、こちらの方が良く開発されているため、vimshell対応もするべく調べています。
シンタックスを対応させたので、ようやくvimshellでも普通に動くようになりました。が、自動更新はカーソル位置がおかしくなったりしますね。
もっと調査が必要です。

それはともかくとして、earthquake.gemはインストールが面倒くさいです。
Ruby 1.9を使っているので、まぁそっちに乗り換えればよいのですが
ディストリビューションの多くはruby = Ruby1.8だったりしているので……。


この記事のように、RVMなんかを一緒に使おうとしたらハマるし。個人的にRVMは嫌いです。

さてLinuxではearthquake.gemを使うことができるようになったんですが、どうやらWindowsで使っている人がまずいない。
私はtermtterをWindowsでも使用しているので、非常に困ります。
ということでWindowsで試してみました。
とりあえず、bin/earthquakeを実行してみて、エラーになるモジュールを片っ端からgem installしていきます。

しかし、twitter-streamをインストールしようとするとNative extensionのビルドでエラー。

今度はDevelopment Kitを使ってみた。
次はeventmachineのコンパイルでエラー。勘弁してください。


cmain.cpp:752:6: error: cannot convert 'stat*' to '_stati64*' for argument '2' to 'int _fstati64(int, _stati64*)'


検索してみると、やはり同じところで悩んでいる人がいて情報を発見。
http://stackoverflow.com/questions/3649252/cannot-install-thin-on-windows
eventmachineは入ったんだけど、gemが古いeventmachine-0.12.10をインストールしようとする……。

$ gem specific_install -l git://github.com/voloko/twitter-stream.git

で何とかすることにした。またeventmachineでエラーが出た。
というか、gemsのeventmachineだれか新しくしてください……。どうして放置されているんだ。


結論:WindowsでRubyを使うのは苦行。昔からそうですけど、WindowsでRubyは使いにくいですよね。どうしてこうなった。
twitter-streamのインストールも失敗。earthquake.gemが自動更新しようとするとエラーになります。

ちょっと試してみた感じ、Windows環境でもエスケープシーケンスが普通に表示されていますね。
vimshellから使うので問題はないですけど、Windows環境のことを全く考えていないのはどうなのかな……。

2011年5月15日日曜日

ujihisa.vim行ってきました

表題の通り、ujihisa.vimに参加したので今のうちに感想とかでも書いておきます。
UST無かったのが残念ですけど、詳しい内容については他の人の感想ブログでも読めばおそらく察しが付くと思うので、私は適当に思ったこととかを書き連ねておきます。

1.ujihisaさんの「shadow.vim紹介」
私は作業をしていたので、あまり見てませんでした。shadow.vimはJava Script/Coffee Script書くひとには便利なのかなーと思ったり。

2.kanaさんが.vimrcをDisる
これは面白かった。他の人の.vimrcには摩訶不思議な設定がたくさんありますね……。
私も昔はあんな.vimrcだったなぁ、とか思い出しながら見ていた。

3.niwaさんの「Twitter社でのVim+α」
どうやらTwitterでVimを使っている人はものすごく少ないらしい。
TextMateやEclipse使いが多い。
もっとVim使いが増えると良いですね。
残りは時間が余ったので? ユニコードの話。
ややこしい問題が多すぎる……。

4.guyonさん「Vim-tinyの紹介」
突貫で作ったらしい。Vimの機能制限版Vim-tinyの紹介。
512MBしかないLinux Boxではサイズが小さい
Vim-tinyが便利らしい。

5.ujihisaさんの「vital.vim解説」
プラグイン製作者に必須のプラグインvital.vimの解説。
Vimプラグイン製作者は毎日車輪の再発明をしているので、このライブラリは便利です。

6.Shougoの「5分で分かるVimとVim plugin(仮)」
私の発表です。実は、開発環境勉強会でこれを発表しようとしていました。
が、先日の大地震により断念。今回、スライドをパワーアップさせて発表することになりました。
いつもは真面目な発表なので、今回は不真面目です。
参加者からは「これはひどい」「一瞬会場間違えたかと思いましたが、考えてみればいつも通りでした」と絶賛の嵐でした。
スライドは公開しています。こちら

7.sora_h君のカオスな発表
会場でスライドと発表するためのプラグインを作っていました。
内容はsora_h君の一日。metarwで作った自作プラグインの紹介、Rubyの効果的なバグ報告の仕方、など。
バグ報告の仕方については、Vimのプラグインでもそのまま使えるなーとか思った。

ちなみに、その後は座談会とかする予定だったんですけど、思ったよりも時間が長びいて、
私がプラグインのバグ修正とかに一生懸命だったおかげで流れてしまいました。
残念だったなぁ……。

2011年4月25日月曜日

普通のVim使いのYokohama.vim #1感想

タイトル通り、Yokohama.vim #1に参加してきたので、その感想です。
ちなみに、詳細な感想については他の人たちがもっと優秀なまとめを書いてくれるので省略します。

・Vim Levelでシャッフルと自己紹介
今回のVim Levelシャッフルはあまり意味がなかったような……。グループ分けはなし。
なぜか私が一番レベル高いということになってしまったし。
ぼくはふつうのVimつかいです。
もしkanaさんが来てくれていたら、kanaさんはおそらくLvが9~10なので、一番レベルが高かったはずなんですけどね。
あのレベル分けはネタなので、もっと良いレベル分けの方法があると良い、という話をthincaさんとしました。

時間がそれほどないということで、自己紹介はテーブル毎。偶然ですが、るびきちさんと同じテーブルになれてよかったです。

・「ふつうのVim使いの開発環境」
私の発表です。資料はこちら
実はお流れになった開発環境勉強会用のスライドを発表する予定だったのですが、
開発環境勉強会がいつ開催されるかよく分からなかったので、予定を変更して自分の開発環境晒しにしました。
本来はよくある地味な発表なんですが、それでは詰まらないと思ったため
いくつかネタを仕込んだり、開発における裏話もしました。

・「るびきちさんとの対談」
残念ながら、ここはustなしで参加者だけの特別セッション。使用しているエディタの枠を越え、二人でかなり盛り上がりました。
ただ、他の人は置いてきぼりになってしまったような。
るびきちさんと私の考えがかなり似かよっていて面白かったです。
開催者のguyonさんには、時間をオーバーしてしまって済みません。
実はkanaさんも含めて、三者対談というのをやりたかったんですけど。
内容については、#yokohamavimのTweetや他の人の感想を見れば大体分かるかと。
残念ながら、聞けなかったそこのあなたも大丈夫。実はこの対談は……。以下続報を待つように。

休憩を挟んで、

・VimとEmacsユーザー交流セッション
ここも実はるびきちさんと議論を交わしていました。
あまり真面目に回答していないけど、あれで良かったのだろうか……。
みんなの回答のまとめは、おそらくguyonさんがしてくれると思うので、楽しみに待ちましょう。

・Vim Golf
実は私Golfぜんぜんできないんです。なぜかというと、素のVimだと発狂するから。
Golfは他の人に任せます……。
記念品として貰った、Yokohama.vimのノベルティが格好良かったですね。

・懇親会
るびきちさんが参加してくれなかったのは残念だったのですが、私を含めて十数人の方が参加してくれました。
前回はたった6人だったので大きな進歩。
こちらとしても、thincaさんのvcs.vimを見れたり、
snippets_completeに要望を貰ったりとなかなか得るものがありました。

・総括:
るびきちさんが来てくれたのもありますが、かなり充実した一日を過ごすことができました。
会場のセッティングと司会進行をしてくれたguyonさん、ありがとうございます。
機会があれば、またるびきちさんといろいろ話をしたいですね。
ちなみに、開発環境勉強会で使う予定だったスライドは5月のujihisa.vimで使用する予定です。お楽しみに!

2011年4月18日月曜日

Software Design 2011年5月号レビュー&感想

今回久しぶりにレビューするのはSoftware Design 2011年5月号です。Vim&Emacs特集ということで、ついカッとなって購入してしまいました。後悔はしていません。
しかし、最近雑誌を購入するのはエディタ特集のときだけ……。

第一章


基本的な話なので省略。

第二章


findの使い方が載っているのは良いですね。あまり使わないとよく引数を忘れます。procの説明もあって、あれ? この特集ってエディタの話が主だったはずじゃ……。

第三章


サーバ管理とファイル編集の話。エディタの話が全然でてきません……。

第四章


ここはようやくVimの話。ということで、詳しいレビュー(というか正誤表?)をお送りします。

Vim基本編



P.45
「某OS付属のチープなエディタ」……「メモ帳」ですね。分かります。

「分割したウィンドウを閉じるのは「:q」コマンドです」……まぁ、間違ってはいないですが、:closeのほうが良いと思います。:qだと、ウインドウが一個のときに終了してしまうので。おそらく、:closeは冗長だから:qを紹介したんでしょうね。:qは、「ウインドウが一個のときは終了、そうでないときはアクティブなウインドウを閉じる」という動作をします。ちゃんと説明すれば混乱することはないと思いますが、初心者には分かりにくいかもしれません。

P.46
リスト1……nmapを使ってはいけません。nnoremapを使いましょう。nmapだと、キーマッピングが展開されてしまいます。例えばkanaさんのように、: -> ; とキーをマッピングしている場合に問題が発生します。nmapとnnoremapの違いを理解している人は少ないので注意が必要です。
:bpよりは、:bprevious, :bnよりは、:bnextのほうが良いと思います。.vimrcに書くときはできるだけコマンドを省略しないようにしましょう。

修正例:

nnoremap <C-p> :bprevious<CR>
nnoremap <C-n> :bnext<CR>

Vimプラグイン編:
紹介されているのは、surround.vim, NERD_commenter.vim, unite.vimです。ちなみに、unite.vimが雑誌で紹介されるのは初めて!


unite.vim
私の書いたプラグインなので、ここは詳しくフォローしておきます。
unite.vimはgithubにもありますが、vim.orgにもあります。ただし、vim.orgにあるのはまだ古いバージョンのため、githubの紹介しておいたのは正解でしょう。できれば、git cloneで取ってくる部分の解説があると良かったですね。

-buffer-nameに関する解説がないのはちょっと致命的です。ファイルやバッファ系のsourceを指定する場合は、:Uniteの引数に-buffer-name=filesとしないと、~が展開されません。人によってはひどく不便になる可能性があります。

この特集では、unite.vimのsourceが一つしか指定されていません。これでは機能がFuzzyFinderやku.vimとあまり変わらず、unite.vimの特徴が生かせません。sourceを複数指定して横断検索できることを触れておくと、良かったと思います。

細かい部分ですが、unite.vim, unite, Uniteと表記が揺れているのが気になります。ちなみに正式名称は検索しやすいように、unite.vimです。

第五章


ようやくEmacs特集です。初心者向けのレスキュー技が細かく書かれているのがすごく印象的でした。こういう記事は今まで見たことがなかったので。Emacs使ってみたけどよく分からなくなってしまった初心者には役立つ記事でしょう。Emacsからのシェルの起動ということで、M-x terminal-emulatorが紹介されていました。個人的には、M-x terminal-emulatorよりはM-x ansi-termやM-x multi-termの方が一般的かな、と思います。この章で一番驚いたのは、井上さんがeshell使いだったことです。私もvimshellを開発しているので、eshellの良さはよく分かります。最近るびきちさんもeshellに乗り換えたようですし、eshell界隈が熱くなってきましたね。

第六章


端末使用時のトラブルシューティング的な章。Windowsでtelnetからのリモートログインのやり方が載っていたのは、ちょっと珍しい記事だと思いました。

結論


Vimの部分は思っていたよりもよく書けていました。unite.vimが初めて雑誌に紹介されていたのも嬉しいです。Emacsの解説は比較的少なかったのですが、「Emacsトラノマキ」が最近レベルが高くなってしまっているので、初心者に配慮したのでしょう。エディタ好きなら買うしかない号だと、私は思います。管理者向けの話も多いので、エディタをよく使う管理者にもオススメ。

2011年3月20日日曜日

魔法Vim少女 えでぃか☆エディタ

2011年4月22日追記:元ネタである、「魔法少女まどか☆マギカ」が無事最終回を迎えたため、記念としてアップデートしました。魔法Vim少女の設定を追加したため、人物の名前を改変。

※:元ネタはlingrでのやりとりです。しかし、改変をしたり、新たな設定を付け加えています。
ついカッとなってやったが、満足している。

大本のネタである、「魔法少女まどか☆マギカ」についてはこちらを参照してください(Wikipediaへのリンクです)。


『魔法Vim少女 えでぃか☆エディタ』(まほうびむしょうじょ えでぃかえでぃた)は架空のテレビアニメ作品。20XX年1月より放送……されることはない。

あらすじ



三度の食事よりVimが大好きな、普通の中学2年生の「えでぃか」は、ある日不思議な夢を見る。そこは少女がコーディング能力を競ってエディタ戦争を行う異世界。その少女の戦いを目撃する自分と、謎の猿の生物に「僕と契約して魔法Vim少女になってほしい」と告げられる夢であった。翌朝、転校してきたのはなんと夢で見た美少女のゆなだった。ゆなは、えでぃかに「魔法Vim少女になってはならない」と警告する。

放課後、親友の「ねおこ」とPCショップへ行ったえでぃかは謎の声に呼ばれ、ビルの一角へ迷い込む。そこで見たものは夢の中で見た生物ジンべえの傷ついた姿と、それを殺そうとするふぁらの姿だった。えでぃかとねおこは戸惑いつつも、当たり前の優しさからジンべえを助けるが、直後に今度は本当に異世界へ迷い込んでしまう。エディタ使いの信者と称される化物達に囲まれた2人を救ったのは、同じ中学の3年生でジンべえと契約した魔法Vim少女の「ふぁみ」先輩だった。事後、改めてジンべえに「魔法Vim少女になってほしい」と告げられたえでぃかとねおこは、思いがけない好機に興奮する。だが、それは2人が直面する様々な苦難の始まりであった。

各話リスト


サブタイトルは各話の登場人物の台詞から取られている。

第1話 あのプラグインにもあった、ような・・・・・
第2話 Vimスクリプトで制御できるなら、それはとっても嬉しいなって
第3話 もう何も恐くない
第4話 neocomplcacheも、uniteも、あるんだよ
第5話 非同期なんて、あるわけない
第6話 こんなの絶対おかしいよ
第7話 本当のVimと向き合えますか?
第8話 あたしって、ほんとバカ
第9話 そんなの、あたしが許さない
第10話 もう標準機能には頼らない
第11話 最後に残った道しるべ
第12話(最終回) わたしの、最高のプラグイン

解説


あのプラグインにもあった、ような・・・・・:
似たような関数があらゆるプラグインで再実装されている際に、皆が思う一言。Vimスクリプトの標準関数が貧弱なことによる車輪の再発明である。素直にvital.vimを使いたいものだ。

Vimスクリプトで制御できるなら、それはとっても嬉しいなって:
すべてがVimスクリプトで制御できたら、Emacsのようにもっと何でもできるのだが……。残念ながら、現実はそう甘くない。Vimスクリプトに慣れてきた中級者はその現実に打ちのめされることとなる。

もう何も恐くない:
Vimに慣れてきた人たちがついつい思ってしまうこと。本当に怖いのは、「Vimは何でもできる」と極めすぎる一部の人たち(へんたい)の執念なのかもしれない……。Vimのみで複雑なことをするためには、それ相応の苦労が必要である。

neocomplcacheも、uniteも、あるんだよ:
最近のVimには、neocomplcacheもuniteもあるんだよ! まだまだ進化するよ!

非同期なんてあるわけない:
Vimで非同期通信は不可能と思われていたが、実際にできてしまった。ただし、ライブラリのコンパイルが必要である。

こんなの絶対おかしいよ:
Vimの仕様や魔界村のソースコードに対して皆が思う感想。

本当のVimと向き合えますか?:
魔界村のVimソースコードにきちんと向き合えるか、ということを表す。これができるかどうかが、Vim上級者への分かれ道なのかもしれない……。

あたしって、ほんとバカ:
Vimからでない生活が続くたび、時々自虐的に思うこと。あまりにもVimにこだわりすぎることは逆に生産性を落としているのではないか? しかし、やめられないのである。

そんなの、あたしが許さない:
「VimがXXXできないなんて、そんなの、あたしが許さない。すぐに実装してしまうよ!」ということ。
こういう思考が日常になってしまうと、危ない。

もう標準機能には頼らない:
Vimの標準機能には頼らず、機能を独自に実装することを決意したということを表す。標準機能はほとんどカスタマイズできないからである。

最後に残った道しるべ:
Vimへの信仰心が失われたソウルジェムは、魔法Vim少女を取り込み「信者」へと変化する。
この最悪のシステムに、疑心暗鬼へと陥る魔法Vim少女達。
最強の信者達が集う「ワルマックスの夜」を前に、残ったのはゆなとえでぃかの二人だけであった。
果たして、Vimには未来がないのか? この世界はジンべぇの思惑通りになってしまうのだろうか。

わたしの、最高のプラグイン:
ゆなは一人魔法Vim少女となって戦うが、「ワルマックスの夜」は予想以上の強さであった。
彼女でさえも絶望しそうとなったその時、一人の少女の願いが明かされる。
魔法Vim少女 完結。

魔法Vim少女一覧


魔法Vim少女たちは、「プラグイン」と呼ばれる魔法兵装を身につけ、日夜信者達と戦っている。
ここでは魔法Vim少女達の能力について解説する。

えでぃか:まだ魔法Vim少女となっていないため、その力は未知数であるが、ジンべぇからは「最強の魔法Vim少女の素質を持っている」と言われる。

ねおこ:プラグイン名「ネオコン」。高速補完により、相手にキーワードの羅列をたたき込む戦法が得意。

くらん:ふぁみの敗北により、他の地域よりやってきた魔法Vim少女。いつも何かのスクリプトを書いている。プラグイン名「クイックラン」。記述したスクリプトを瞬時に実体化させ、戦わせることができる。

ふぁみ:先輩の魔法Vim少女。プラグイン名「ビムファイラー」。ファイルを変化させた、トリッキーな戦法を得意とする。

ゆな:プラグイン名「ユナイト」。本人の基本能力は最低。ただし、sourceを抽出した他の魔法Vim少女の能力を使用することができるという、ある意味最強の能力を持つ。

Vimの魔法

元ネタはこちら

こんにちは
こんにTwitVim
ありがとう
ありがtaglist
こんばんは
こんbufexplorer
さようなら
さよNERD_tree
まほうのエディタ
たのしいプラグインが
ポポポポーン

おはよう
hatena-vim
いただきます
いただきまsmartchr
いってきます
いってきまscratch
ただいま
ただいmanpageview
ごちそうさま
ごちそうさmatchit
おやすみなさい
おやすmigemo
すてきなエディタ
ゆかいなプラグインが
ポポポポーン

こんにちは
こんにTwitVim
ありがとう
ありがtaglist

あいさつするたび
プラグインふえるね




※:久しぶりに、ついカッとなってやった。反省はまだしていない。
ちなみに、プラグインの選定は語呂がよいものを適当に当てはめただけです。特に他意はありません。

補足:
「あいさつするたびプラグインが増える」とは、日に日にVimのプラグインが増殖していることを暗示しています。