チューリング不完全

What are you afraid of? All you have to do is try.

VimConf 2014への参加とコミュニティの関係性について思ったこと

VimConf 2014に参加してきました。

今回の会場はmixiさん。

最後の方はピザを取りにいくお手伝いをしていたために全ての発表を聞くことはできませんでしたが、ほとんどについては拝聴して楽しませて頂きました。以下、特に気になった発表について書きます。

気になった発表と感想

Identity of the Vim / @kaoriya

VimVimたらしめているものは一体なんなのか、アイデンティティについてのお話でした。今回の資料ははVimというものの立ち位置を説明する際に立ち返ることになるものになりそうです。
人から「なんでVimなの?」「なんで○○使わないの?」と言われた時に、自分の中で確固とした理由・意見を持つことは、今後Vimに本当にcommitしていく価値が本当にあるのかどうかを見つめるという意味で非常に重要なことです。

PM2 / @ujm

ProcessManager及びPM2ライブラリの紹介でした。
でもCiv5の話が強烈すぎてPM2の方をあまり覚えてない。終始笑いまくっていた気がする。

auto closing parenthesis / @c0hama

カッコを自動で閉じようという話。
私はこの発表をきいて、「ああ、俺自動補完あまり好きじゃないんだなあ」と思いました。
(|)のときに)を入力すると()|になるのにいつもイライラしてしまうんですよね。カッコならまだしも、シングルクォートとダブルクォートが混在するようなコードを書くときは本当につらいので…
そういうことを見つめ直せたのでよかったです。

かなりすごい発表(かなり) / @supermomonga

この唯一無二の芸風である。

/-improved / @haya14busa

gifによる操作説明が超わかりやすい。(ああいうのどうやって作るのかな)
incsearch.vimは、今回の発表で一番気になったプラグインでした。入れよう。


Vimコミュニティに見たスモールワールド性

私は今回はじめてVimConf(およびVimConfに連なるこれまでの勉強会)に参加しましたが、TwitterLingrを見ると参加者の全体的な満足度がとても高いように感じました。
「過去最高だった」「感極まってきた」「便利」との感想が飛び交っています。(Lingrに生息している一部の人は日常的に発している言葉ですが。)
懇親会も、私が見た限りではどのテーブルもかなり活発に会話が行われているように見受けられました。50人超の勉強会でこういう状態は、結構すごいことなのではないでしょうか。

というのも、過去に自分が参加した同規模の勉強会を振り返ると、発表を聞いてそのまま誰とも話さず解散となったり、懇親会で周りも自分と同じくらいの初心者ばかりで、時たま気まずい時間が流れてしまう、などを経験したことがあったからです。

Vimコミュニティに長年関わっているujihisa(@ujm)さんは、今回の感想記事で以下のようなことを書いています。

日本のVimコミュニティは今年をもって別の段階に進化したといえるでしょう。集中と継続。大きく分断されることなく、かつ、独裁ではない。持続可能な有機的コミュニティができています。この事実は、目に見えるものではないものの、ものすごく偉大なことではないでしょうか。

https://gist.github.com/ujihisa/1e8925470d01794a002c

私はこれを読んで、大学時代に少し勉強したスモールワールドのことを思い出しました。

スモールワールド

スモールワールドは「友達の友達の友達の…」と辿っていくと6〜7ステップで全世界の人に辿り着ける、という「7つの隔たり」の話に象徴されるような、現実の人間関係をモデル化した複雑ネットワークという分野の言葉です。

詳しくは各自ググっていただきたいと思いますが、ざっくり言うと複雑ネットワークではグラフ理論のノードを人間、エッジを知りあい関係で表します。

以下に、かなり極端な例を出してみます。


例えば上のようなグラフの場合、中心の3人にエッジが集中しています。これは勉強会でいうなら、講演会に近いようなタイプが連想されます。真ん中の3人は発表者であったり、主催者であったりといった存在です。
このような構造の場合、エッジが集中している人間にかなり依存した状態になります。ここで、例えば一番エッジをたくさん持っているノードを消してみましょう。


すると、左側の多くのノードが非連結な状態となってしまいました。特定の人間に関係が集中したグループの場合、中心人物が関係できなくなると、グループとして存続することが危うい状態となります。
例えば勉強会を立ち上げたけれど、発表者の募集、会場準備、次回の計画をたてる…などなど、会を催す上での諸々に中心人物がコミットすることができなくなり、結果数回で消滅の憂き目を見る…このような勉強会は数多くあります。


では次に、同じノード数、エッジ数のもう1つのグラフを見てみましょう。

エッジを多く持つノードはありますが、最初のグラフほど極端な形ではありません。
このグラフについても、ノードを1つ消してみましょう。


やはり独立するノードが発生してしまいましたが、最初のグラフに比べればだいぶましな状態です。
このような関係性であれば、参加者に様々なタスクを任せたり、1人が急遽参加できなくなった場合でもコミュニティ自体は存続し続けられる可能性が高いです。


コミュニティが成長する際、最初のグラフからだんだんと2つ目のグラフに移行していくことが多いと思います。*1
上記の2種類のグラフは、構造の説明の為に同じノード数、エッジ数のものを例として出しましたが、実際はエッジ数は基本的に増えていきますから、例よりももっと網の目のような構造に至るでしょう。



先ほど書いたような、「ノードを1つ消したときにグラフ全体の関係性がどのように変化するか」は、グラフの平均距離を計算することで数値化することができます。
詳しくはこの辺を読んでみてください。


さて、ここでようやくVimConfの話に戻ります。

コミュニティと貢献

ujihisaさんの言う「持続可能な有機的コミュニティ」という言葉を、私は前述した複雑ネットワークの話として捉えました。
このような構造を作り上げるためには、黎明期の中心人物が継続して貢献することが必要になるでしょう。またイベントのみでなく、TwitterLingrを通した日常的な関わり合いであったり、Vim advent calendarなどに代表される精力的な記事の公開が大きく寄与しているのではないでしょうか。結果、明確な中心的人物というものがなく、その人がいない状態でもコミュニティとしては正常にイベントを作ることができる。また、このような構造は新たなノードを取り込むという意味でも有利なように思います。


私は、今回のVimConfの参加者の中でもVimの使い方が極めてライトです。Vimは日常的に使ってはいるけれども、vimrcを編集する頻度も少ないし、プラグインを導入することもそんなにありません。Vim scriptも全然書けません。それでもLingrに毎日いたら仲良くしてくれる方がたくさんいて、それだけで既にいろんな恩恵を受けていると感じます。
もっと即物的には、数ヶ月前に出版されたVim script本をthincaさんから頂いたので、そのレビュー記事とか、プラグインを作るとか…とにかくいろいろと、contributionしていきたいなあということは考えています。

まとめ


*1:別の移行パターンとして、中心人物同士のみで強固なクラスタが構成され、他のノードがそれぞれ孤立した状態になる、という状態もあるかと思います。すなわち新参の拒絶です。この場合はコミュニティのノード数がなかなか増えないという問題に陥ることが考えられます。