#VimConf2016参加レポート

VimConf2016に参加したので参加レポートを記す。

概要

VimCon2016開催概要
項目 内容
イベント名 VimConf2016
URL http://vimconf.vim-jp.org/2016/
開催地 株式会社ミクシィ(東京都渋谷区東1-2-20 住友不動産渋谷ファーストタワー7F)
開催日 2016-11-06
参加費 2000 JPY
Togetter VimConf 2016 のまとめ – Togetterまとめ
イベント申し込み VimConf 2016 – connpass

自分が発表していない勉強会は基本的に参加レポート的なものは面倒なので書かないことにしている。今回の会議もそのつもりだったのだけど,気が変わったので書くことにした。理由はこれ。

今まで参加したカンファレンスでも,参加レポートは書いたほうがいいとか・書いてほしいみたいな声をきいていたのだけど,理由がわからなかったので無視していた。今回は理由がわかった。知ってしまったし,お願いされたので書かないのは具合が悪い。

そもそも,テキストエディターのカンファレンスがあるということ自体がすごいことだ。Vimと同じように昔から存在するEmacs,その他日本では有名なSakura Editorや秀丸,最近登場してきたSublime Text,Atom。これらにも相当数の利用者がいると思うが,少なくとも今の日本ではカンファレンスは開かれていない

カンファレンスがあり,それが継続して開催されているのはVimだけ。これはとても素晴らしく,1ユーザーとして誇らしいことであり,参加できて光栄だった。

実は2年前のVimConf2014を一瞬だけチラ見していた。TeX ユーザーの集い2014に参加・発表していてこちらには参加できなかったからだ。

全体の感想

Vimは開発者御用達のテキストエディターであるので,発表内容も開発に関するものが多く,専門性が高かった。特に,たまたまかもしれないが,Go言語に関する発表が3個もあったのが印象的だった。やはり開発者なので先端技術への興味関心が高いということだろうか。

スポンサーが付いているとのことだが,会場を提供しているmixiの紹介くらいで,ほとんど企業色や宣伝などがなくて,大丈夫なのだろうかとちょっと心配になった。

会場はプロジェクターの他に,電源やWiFi,さらにはドリンクや音響設備もあり,とてもよい会場だった。

前日に,カンファレンス当日は地下鉄が改装工事で電車が通っていないということについて管理者さんから注意のメッセージがあった。親切でよかった。

発表

Introduction to Vim 8.0@Ken Takata

Vim 8.0の変更点やVim 8.0リリースまでの経過についての発表だった。発表者のKen Takataさんは日本で最も活発にVim本体に貢献している人の一人だとのこと。Vim 8.0の変更点は,:help version8で確認でき一通り目は通していた。個人的には新しく入った,非同期I/Oとパッケージ管理機能がとても気になっていた。

更新内容がVimのAPIに関するものが大半で,地味な変更が多かったので,もともとは7.5としてリリース予定だったらしい。しかし, パッケージ管理機能が入るのは変更点としてわかりやすいので8.0にしたようだ。

Vim 8.0で導入されたパッケージ機能はパッケージ管理プラグインであるPathogenと似た形式になっているらしい。

ヘルプでは8.0がリリースされる背景や,パッケージ管理機能の元となっている実装のことまで,知ることはできないので,長年Vimに携わってきた人ならではのよい発表だと思った。

現在NeoBundleでVimプラグインの管理を行っている。Vim 8.0で標準機能でパッケージ管理機能が備わったことから,NeoBundleをやめて標準機能に移行しようかなと考えている。GitHubなどからのダウンロードだけ自分でVim scriptを用意して外部プラグインに頼るのはやめようかなとぼんやり考えている。

Vim as the MAIN text editor@bird_nitryn

Vimを使って1年程度の発表者が,Vimをメインのテキストエディターとして使っていくうえでのコツやなぜVS CodeからVimに乗り換えたかなどを紹介していた。

Vimに乗り換えた理由の一つとして,ログイン先のマシンで直接CUIで実行できることをあげていた。VS CodeをWindowsなどからネットワーク経由で使うと重く,作業にならない。CUIで使える高機能テキストエディターはほぼVimとEmacの2択。速度を求めるのならば,このどちらかにたどり着くのは自然な動機だ。

冒頭の自己紹介ででフォントが好きという話があったが,発表ではフォントについては一切触れられなかった。今思えば,懇親会でフォントについて話かけてもよかったなと少し後悔している。

Denite.nvim ~The next generation of unite~@Shougo

暗黒美夢王ことShougoさんによるUnite.vimの後継のDenite.nvimについての発表だった。

Unite.vimは動作が遅いことが欠点で,Google検索のサジェストにも表示されるほど。作者のShougoさんもそれは 気にしていたらしく,その問題を解消すべくDenite.vimの開発始めたようだ。Denite.nvimの特徴としては,Python3 でほぼ実装されていること。非同期のインターフェースもPython3の機能を使っており,Vim 8.0やvimproc.vimの非同期I/Oは使っていないらしい。

Unite.vimやDenite.nvimの比較 対象としてCtrlP.vimがよくあげられる。CtrlP.vimはVim scriptで実装されており依存関係が少なくシンプルで速く,わかりやすいのが利点だと理解している。ShougoさんはCtrlP.vimに対して対 抗心を燃やしており,Denite.nvimとCtrlP.vimの比較やなぜCtrlP.vimが速いのかなど解説していた。

Denite.nvimはNeoVimとVim 8.0以降で動作する。質問してわかったのだけど,Vim 8.0以降で動作するというのはVim 8.0の非同期I/Oを使っているからではなく,Pythonのサポートが安定しているからとのことだ。てっきりVim 8.0の非同期I/Oを使っているのだと思っていたので予想外で驚いた。

Denite.nvimとCtrlP.vimの比 較が印象に残った。UniteとかDeniteは高機能なのかもしれないけれどなんだか複雑でややこしそうだからCtrlP.vimを使うのがいいのかなという印象を持った。Uniteは何回か使おうとしたことがあったのだけど,キーバインドを覚えられなくて結局インストールし たっきり使っていない。自分の身の丈にあっていなかったのかもしれない。

Go、C、Pythonのためのdeoplete.nvimのソースの紹介と、Neovim専用にpure Goでvim-goをスクラッチした話@zchee

Shougoさんが開発したNeoVim用の補完プラグインdeoplete.nvimのカスタマイズ方法の紹介と自作プラグイン?の紹介 だった。NeoVimもGoもよくしらないのでよくわからなかったので「なんか凄そう」という小学生並みの感想しか持てなかった。

NeoVimもGoもリリースされてせいぜい数年程度の比較的新しいものでまだ安定していないと思う。後ろ盾がなくなればすぐに廃 れてしまうだろうし,エッジを追いかけて消耗するのは疲れる。関わるかかどうかは慎重に判断したほうがいいと思っている。それよりかは手元に あるVimやShell scriptなどの理解を深める方が確実なんじゃないかと考えている。

もともとNeoVim自体はVimのリファクタリングのために派生したと理解している。当初は非同期I/OなどVim本体の不足していた実装に不満があったことが理由の一つでもあったが,Vim 8.0でそれは解消された。Vim本体の開発は活発だしまだまだ廃れる様子もない。そもそもVim自体機能が膨大で,密度にもよるが使いこなせるようになるだけでも数年はかかると思う。まだNeoVimに手を出すタイミングではないと思う。

エディタの壁を越えるGoの開発ツールの文化と作成法@tenten

VimというよりはGo言語の紹介というような内容だった。Go言語はGoogleという一企業が開発したプログラミング言語であり,Oracleが管理しているJavaと立ち位置は似ている。

Go言語は周辺ツールが充実しており,いろいろ便利なんだそうだ。個人的には引数解析の方法や,Go言語の文書作成ツールである godocについて興味を持った。コードの文書化としてはDoxygenがあり,個人的にはDoxygenを多くのプログラミング言語で対応 しているので,これを使うと記法を統一できていいと思っている。Doxygenよりも優れているのならその仕組みは参考にしたいなと思った。

vim-mode-plus for Atom editor@t9md

Atomエディターのアドイン?パッケージのvim-mode-plusについての発表だった。会議参加者の中では年上で熟練した印象の人だった。

他のエディターにVimに似た機能を搭載するという話なのかなと思って,あまり興味なかったのだけど,面白かった。Vimの機能を実装するにあたり,Vimの実装をみて勉強する必要があり,その過程でVimのことを深く考えるようになったのこと。

Vimの中ではテキストオブジェクトのようにあるまとまった塊を一度に操作できるという機能が本質に近いと思う。Vimを使いこなす上ではこういった思想について理解を深めていくことが有効なのだろうと思った。

Vimの日本語ドキュメント@MURAOKA Taro

Vimにおける日本語ドキュメントの歴史・経緯について紹介し,今後の展望などについて発表されていた。冒頭で発表の趣旨が話され,日本語 ドキュメントの翻訳作業への参加を呼びかけることが目的とのことだった。

Vimを使い始めて驚いたこととして,日本語ドキュメントの充実さがあった。Vimを使い始めたのは大学院生で,そのときはEmacsもどんなものかと試したりしていた。Emacsは日本語ドキュメントが少なく,いわゆる普通のOSSという感じだった。日本語ドキュメントの量は日本人初学者のとっつきやすさや,利用者拡大において大きな影響があると思っている。

Vim本体に同梱される日本語文書はVimの作者であるBramさんとMURAOKAさんの1対1でのメールのやりとりで受け渡しされているとのことで,最後は人のつながりでできているんだなと少し感動した。

翻訳については賛否もあるが,個人的には必要なことだと思っている。英語だけしか使えないというのは,自分の母語を禁止され,英語を使うことを強制されている奴隷のようなもので,不自由な状態だ。他国の文化を否応なしに押し付けられ,それに従っているのと同じだ。自国の言葉を使う自由もあるべきだろう。

詳しいことはよくわからないが,MURAOKAさんはissueや管理など多大な労力をかけられており,使う側としてはとてもありがたく思っている。

gerritというのはソースコードレビューシステムらしく,ここでのコメントは的はずれだった。言及するならLibreOffice採用されているPootleだった。

Vim script parser written in Go@haya14busa

Go言語でVim scriptのパーサーを作ったという発表だった。

Go言語は周辺ツールが充実しており,クロスプラットフォームのコンパイルやシングルバイナリなど,コマンドラインツールとしてはVimと 相性がよいらしい。Vimの中からsystem()関数で呼び出して使えるようなものを作られたようだった。

GoはVimと相性がよいというのには違和感があった。というのも,それは単にVimから外部コマンドを実行する程度の話 で,Vimから直接使えるわけではないからだ。本当に相性がよいというのは,Vimがインターフェースを用意している,PythonやLuaなどだろう。VimはGoへのインターフェースは提供していないし,できることの限界があるように感じた。単にGo言語が使いたいから作った というような感じももった。

僕の友達を紹介するよ@aiya000

やけに声の高い人で女性かと思ってしまった。普段使われているプラグインを紹介し,また自作のプラグインについても紹介されていた。

以前であれば,こうしたプラグインには興味があったのだけど,Vimのプラグインは数が多く,更新もけっこうされており,つい ていくのが疲れてしまった。プラグインを使えるようになるにも学習期間が必要であり,このコストがだんだんしんどく感じるようになってしまい,あまりプラグインを使わないほうがいいんじゃないかと思えてきた。

Vimの標準機能をよく理解し,本当に必要なものに絞ってプラグインを試していくのが効率がいいのかなと思った。

Best practices for building Vim plugins@thinca

Vimプラグインを開発していくうえでの注意点や好ましい作法について解説されていた。

このようなノウハウは長年の経験が必要になり,他の人が知ることは難しい。今回の発表のようにある程度まとまった単位で,なぜこうすればよいの か,こういうときはどうするのか,といったことを解説した情報を公開していただけるのはありがたい。

懇親会

懇親会ではお寿司とピザを食べた。お寿司はけっこう高そうな感じで美味しかった。

懇親会では発表で気になっていたことと,Vimで自分が抱えている問題に質問した。偶然だが,懇親会の開始時にKen Takataさんと同卓になり,話しかけても大丈夫そうな感じだったので質問してみた。

Q1.今までVimで非同期I/Oを実現するにはvimproc.vimを使うしかなかった。Vim 8.0の非同期I/O APIによりvimproc.vimがいらなくなった?

A1.Yes。

Q2.Vim 8.0の非同期I/Oの導入で例えばvimgrepなどがバックグラウンドで実行できるようになるのかなと思ったけど,あくまでAPIの提供だけで実装は自分でやる必要がある?

A2.Yes。

Q3. Windowsの共有フォルダのファイルをGVimで操作すると遅いのだが,解決方法をしらないか?

A3. 自分が使う限りではそんなに遅いというのを感じたことはなかった。普段はターミナルから使うので実感していないだけかもしれないが。再現性を確立できれば解決できるかもしれない。

その他近くで一人でいる人に話しかけて,今回の発表の感想だったりVimについて世間話などをした。仕事でも仕事以外でも周りにVimを愛用している人は皆無なので,自分にとってはプラグインの話をできるだけで非日常的な時間だった。

こういうカンファレンスなどで,他の人たちの会話の中に割って入っていくのは恥ずかしくて苦手なので,一人でいてくれた方が僕は話しかけやすい。どうしても質問したいことがあれば,割って入ることもあるけれど,できればやりたくない。

そして,最後にMURAOKA Taro(kaoriya)さんにKaoriYa 版Vimにdiff.exeを同梱する件についてお願いをした。具体的には,2016-08-11に出したPull Requestが放置されていたので,それのリマインドだ。kaoriyaさんは忙しい人で,8月はVim 8.0のリリースや夏コミなどで忙しくてたぶん忘れていたのだろう。加えて,あまりモチベーションのあがらない作業でもあるし…

Fix error for directory diff. by lamsh · Pull Request #2 · koron/diffutils

2016-11-17追記:2016-11-13 に対応していただき,Vim 8.0.0082 +kaoriya (2016/11/13)から同梱されるようになりました!

第一印象

僕はVimを2012年から使い始めた。今日までにVimの周辺で活躍されている方で何人か気になっており,どんな感じの人なのかみてみたいというのが一つの参加動機だった。そこで,実際にお目にかかった第一印象を発表順に書いてみる。第一印象は最初しかないのである意味貴重だ。単純に自分が周りの人にどう思われているのかというのは,短くてもけっこう面白いのではないかと思う。

Ken Takataさん

研究者や学者のような印象を持った。落ち着いていて淡々としていて,知性を感じさせる雰囲気を感じた。発表でもあったとおり,この人は日本でVim 本体に最も活発に貢献している内の一人であり,Rubyの正規表現エンジンである鬼雲の開発者だ。とてもすごいお方なのだと思った。

今回のカンファレンスでVim本体に関して質問するなら,この人かkaoriyaさんのどちらかがベストだと思っていたので,懇親会で質問させていただいた。もっとちやほやされて,質問できないくらい人が押しかけていてもおかしくないと思っていたのだが,他の人はあまり気づいていなかったのかもしれない。

Shougoさん

NeoBundleやneocomplete,neosnippetにはお世話になっている。

偶然なのだが,カンファレンスで僕はこの人の隣の座席(VimConf 2016の座席表 – セキココ)に座っていた。単に一番前の奥から詰めて座っただけなのだが…。Shougoさんの発表でそれが分かった。

席に着いたときから,「この人何かやりこんでいるな」という印象を持った。そして,何か他の人と違う雰囲気をまとっているように感じ,少し近づき難かった。隣で作業の様子をチラ見するくらいしかできなかった。さすが暗黒美夢王といったところか。

言動などをみていると何かしっかりとした思想を持っているようで,みていて面白い人だと思った。

MURAOKA Taroさん

autodate.vimを愛用させていただいている。

今年はこの人との絡みが今までで一番あった。今年の6月ごろにKaoriYa版Vimに「配 布物にdiff.exeを同梱してほしい · Issue #10 · koron/vim-kaoriya」というお願いをし て,そこで8月まで何回かメッセージのやりとりがあった。また,同じく8月に「KaoriYa 版Vimの独自設定を無効化する方法」というブログ記事を書き,指摘をいただいた。さらに,同じく8月にVimの日本語help 文書で未翻訳の1文をみつけたので,Pull Requestを「Translate the untranslated paragraph in `:h cterm-colors` by lamsh · Pull Request #21 · vim-jp/vimdoc-ja-working」送った。

もっと古くは2014-09-15に今のところ唯一の自作Vim pluginであるautofname.vim「My first Vim plugin: autofname.vim」の作成にあたって,そのベースとした autodate.vimのライセンスの確認でメッセージのやりとりをした。

偶然だが,参加受付ではkaoriyaさんが担当してくれた。名前を告げると僕のアイコン・名前に見覚えがある思わせぶりな発言があったので,冒頭にも載せた以下のツイートをした。これに対して返信があり本人だったことがわかった。覚えていてくれて光栄だった。

人情味のある気さくな方だと思った。コミュニケーション能力があって,人徳があって,面白い人で,この人のおかげで日本のVimコミュニティは維持されているのだなと思った。会うまでは,なんとなくメガネをかけた少しクールなお兄さんという勝手な印象をもっていたのだけど,想像していたよりかは年齢が上だと思った。

Twitterのタイムラインなどを見ている限り,ゲームや猫が好きなところ,ユーモアがあって物腰やわらかい感じなど,個人的に好印象をもっている。

thincaさん

vim-quickrunとvim-templateを使わせていただいている。

今回のカンファレンスで言葉を交わすことはなかったので本当に見た感じだが,丁寧な印象を持った。発表とも通じるものがあるが,手堅く,礼儀正しく,きっちり丁寧。そういう安定感・安心感を感じさせる雰囲気を感じた。

Vim scriptの構文などで度々ブログや書籍を参照させていただいており,ありがたく思っている。

まとめ

今後もVimを使い続けるつもりでいる。Vimを使い続ける限り,またVimConfには参加することがあると思う。次回参加するときは短くてもよいので何かしら発表してみたい。ゆるく気長に付き合っていきたい。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です