Λlisue's blog

つれづれなるままに更新されないブログ

Vimconf 2017 で "You’ve been Super Viman. After this talk, you could say you are Super Viman 2 ~ Life with gina.vim" を喋ってきた

どうも、サブタイトル通りご無沙汰しております、有末です。

本日は 2017 年にアキバホールにて行われた vimconf 2017 で "You’ve been Super Viman. After this talk, you could say you are Super Viman 2 ~ Life with gina.vim" というタイトルで発表させていただいたので、その報告をさせていただきます。

なお gina.vim の元となった vim-gita も同様に報告しているので参考として貼らせていただきます。

lambdalisue.hatenablog.com

自分の発表の情報

今回発表に利用したスライド+α は

https://lambdalisue.github.io/vimconf2017

今回発表したプラグイン自体は

github.com

で確認できます。

自分の発表の感想とか

けっこう緊張しましたが、楽しく発表できました。

ギリギリになって日本語から英語に発表を切り替えましたが、英語発表が少なめだったので結果的に良かったのかなと思います。 この関係でスタッフの方には多大なご迷惑をおかけしました。この場を借りてお詫びを申し上げます(特に翻訳の ujm さん、ごめんなさい)。

英語発表にあたって、数多くのネタ的要素を含んだ発表だったので「英語が伝わらなくて笑ってくれなかったらどうしよう」という心配もありましたが、割りと笑いを誘えた感じになったので良かったです。

内容に関しては、結構 gina.vim 便利そうという声が多かったのでちゃんと伝えられた感がありますね。嬉しい。 あと既存ユーザーの方もちらほら居たようで、これも嬉しい限りです。

あと最後の会社紹介の部分でも大いに笑いを誘えた感じになったので満足しています(笑。

ちなみに、弊社は通年で技術者を募集しているので皆様のご応募お待ちしております〜。

www.fixpoint.co.jp

あと、発表よかったな~と思っていただけたら、ぜひ gina.vim を開いてスターをクリックしてください(笑。

github.com

弊社ブログにても参加記事が公開されたので、こちらもよろしくお願いいたします。

blog.fixpoint.co.jp

あと Trending に入ってた。嬉しい。

各発表の感想

Vim, Me and Community @haya14busa

vim-easymotion の管理者として有名な @haya14busa さんの発表でした。

利用していた EasyMotion の開発か滞っていたので Fork して使っていたらメンテナにならないか?と提案されメンテナを引き継いだようです。 その後 @haya14busa さんが受け継いでからのスター成長曲線が示されましたが、とても綺麗な成長曲線を描いておりました。

このように多くの方に愛される結果となった理由の一つとして「後方互換性を気にかけ、小さなところからコツコツ作り直していったのが良かったと思います」と仰っており、とても印象に残っております。

そこから、様々な方からの助けにより Vim にコントリビュートしてこれたという旨でいろいろな話題に飛びました。 Re-vital の部分では自分も言及されました。 完全にあのバグの存在を忘れていましたが、今思い出しても意味不明でしたね(ステータスラインの描画コードにて例外が発生すると、例外を補足していても例外として処理されステータスラインが無効化になってしまうバグ)。

あと相変わらずイラスト屋センスが光っており、締めの方で会場を盛り上げてくれました。

その後、多様性を持つ Vim コミュニティ最高という締めで、涙なしでは語れない内容となっておりました。

The Past and Future of Vim-go @faith

vim-go 作者の @faith さんの発表でした。

非常に聞き取りやすく、わかりやすい英語だったため安心して聞いていられました。 ただ日本語への同時通訳が一つのコンテンツレベルだったようで、そこは少し残念です。 後日翻訳も YouTube 等に上がってくれればいいなと思っています。

発表の内容としては「雑多なプラグインが溢れていて嫌だったから作った」という点に非常に共感しました。 UNIX 思想的には組み合わせて行うのがベストでしょうが「これさえ入れておけば大丈夫」という感じの物があると考えるコストが削減できるためいいですね。

あと golang.vim -> go.vim -> vim-go という名前の推移とともに「名前つけるの難しいよね」と仰っており、これも「わかる・・・」という感じでしたね。

他にもドネーションの代わりに本を買ってもらってたら読めない量になっちゃって困った話とか面白かったです。 あんまりドネーションちゃんと整備したことないので自分のプラグインでも整備したいなという気持ちになりました。

発表を通して vim-go の思想的なところからすごい機能の紹介までが網羅されており、使ってみたい!と思わせる発表だったと思います。良かった。

Creating Your Lovely Color Scheme @cocopon

カラースキームにこだわりを持つ iceberg で有名な @cocopon さんの発表でした。 @cocopon さんのカラースキーム系のブログ記事には個人的にお世話になっており、年末の Vim 大掃除のときにはだいたい参照しております。 ちなみに、僕は 複数のカラースキームを F3 で切り替える ようにしてるのですが、その中に iceberg も入っています。

発表についてですが……とても良かった。個人的には vimconf 2017 の金賞です

論理建てて順序よく説明しており、多くの方が「自分でもできるかも!?」と思ったようです。 カラースキームを作る際のエッセンスが詰まった発表となっており、何度も見返したくなるような構成でした。

あと個人的には自分の init.vim に入れてるマクロの高機能版っぽい pgmnt.vim が収穫でした。あとで試そうと思います(ヘルプがないのが若干残念)。

github.com

自分の発表スタイルとはちょっと違う感じなので参考にするのが難しいですが、とても良い発表だったので出来る部分から発表方法とかスライドの組み方とか盗んでいきたいと思います。

vmp: the most ambitious vim emulator @t9md

vim-choosewinvim-quickhlvim-smalls で有名な @t9md さんの発表でした。 今はグラフィカルな移動系プラグインを使っていませんが vim-smalls は一時期常用しており、思い出深いプラグインです。

内容は Atomプラグインである atom-vim-mode-plus の紹介でした。 Atom に関する発表ですが、内容は Vim の挙動を細かに解析・解釈し、より使いやすいインターフェースを定義した話なので Vimmer である僕にもとてもわかり易かったです。

中でも Occurrence modifiermove-to-edge-up/move-to-edge-down に関しては Vim にも欲しい機能でした。

マッピングということで学習難易度はかなり上がってしまいますが、慣れるとかなり高速に編集できそうです。 デモ中は Twitter が「まるで魔法のようだ」という感想でいっぱいになっておりました。

そういえば Vim にベッタリで数々の素晴らしいプラグインを開発してきた @t9md さんが何故 Atom に移行したのか、懇親会でお聞きすればよかったと若干後悔しています。

Vim and Compatibility @senopen

タイトルから「プラグイン書くときの注意点とかかな?」と思っていたら。

ということで POSIX 原理主義者の発表でした。怖い。

ただ、蓋を開けてみると Vim の歴史から始まり、現在使われているディストリビューションがサポートしている Vim の最低バージョンの話など、かなり実用的な話が多かったです。 個人的には Neovim/Vim 8 の Job 機能にベッタリなので init.vimVim 7 等で動かすことは考えませんが、プラグインを書く際に参照する資料としてかなり秀逸だと感じました。

また statusline での文字コードの話など「わかる・・・つらいよね・・・」という共感も多く、菩薩顔になる場面も多かったです(笑。 ただ、少し勢いがありすぎてフォローするのが難しい部分もありました。時間が短かったので難しかったのだと思うのですが、もう少しスローペースだと良かったかなと思います(自分も勢い系なのでブーメランかも)。

Neosnippet.vim + Deoppet.nvim in Vim conf 2017 @ShougoMatsu

Shougo ware という言葉が確立するほど個性的なプラグインを多量に公開している Dark vim mister の @ShougoMatsu さんの発表でした。

発表は次期スニペットプラグインである deoppet.nvim の紹介でした。 その紹介にあたり neosnippet.vim の開発時の思想やほかプラグインとの差の話があり、なかでも「マーカータイプ」か否かの話を詳細に行っておりました。

また「スニペットの便利さがよくわからなかったので、自分で作ってみました」はプログラマの鏡のような発想で、波紋を呼んでいました。

最後に neocomplete.vim の開発終了のお知らせがありました。 Shougo ware の代表作のようなプラグインの終了には感慨深いものがありますね。

How ordinary Vim user contributed to Vim @dice_zu

Vim 関係の勉強会の喫煙室でよくお会いしている @dice_zu さんの発表でした。 代表作のようなプラグインはありませんが、代わりに Vim 本体にかなりパッチを適用している凄い方です。

発表はパッチを投げる際の心構えから始まり、どのようにバグを見つけるのか?の話になりました。 要約すると「熱意で頑張る」という感じになりますが「大事なのはパッション」や「運用でカバー」、「毎朝 Vim をビルドする」などパワーワードに溢れた発表になっていました。

タイトルに「Ordinary」と書かれていますが、かなり懐疑的です(笑。

あと自分の名前が入ったパッチとか最高にかっこいいと思います。

github.com

これ↑とか完全に僕が放置してしまってる感じなので Vim 熱が冷めないうちにやっていきたい。

The new syntax highlighter for Vim @p_ck_

ステータスラインに寿司が走る sushibar.vimSSH 先でもコピペを有効化出来る lemonade で有名な @p_ck_ さんの発表でした。

内容は Vim 標準のハイライト機構に頼らない新しいハイライトの仕組みを使った iro.vim の紹介でした。 各言語で AST 解析を行い matchaddpos() 関数にて明示的にハイライトを追加することで 完璧な ハイライトを実現しています。

問題点としてファイルサイズが大きい場合にフリーズする点が上げられていましたが、パース処理よりも多量の matchaddpos() が重いようなので、今後 Vim 側で描画範囲内のみ matchaddpos() が適用される等がパッチされれば実用的になるとのことです。 まぁ、ここに関してはプラグイン側で頑張っても行けそうなので是非とも対処して欲しいなーと思いました。

現段階では RubyMarkdown にしかちゃんと対応できていないようなので、今後の発展に期待です(特に Vim script や HTML のハイライト処理は色々アレな部分も多いので、そこがサポートされると嬉しい)。

プレゼン中に出てきた「人類に正規表現は早すぎる」というパワーワードには共感を覚えた方が多かったようです。

ちょうど gina.vim:Gina blame でのハイライト問題に対して matchaddpos() を使っていこうと思っていたので親近感を感じておりました(今は正規表現固定なのでユーザーがカスタマイズすると表示が崩れる)。

レジェンドの対談に関して

これはもう参加者限定のレクリエーションに近いので詳細は控えますが、最高でした。 古い Vim の話など、普段はなかなか聞けない話が多く楽しかったです。

来年度も似たような対談時間があると良いなと思いました。 レジェンドに限らず Vim コミュニティには「クセのある」方々が多いため、そういう方々の対談も聞きたいです。 あと、対談に自分も参加したい気持ちもちょっとある(笑。

最後に

会場が最高クオリティでした。 WiFi と各席電源完備な点や大きくて見やすいスクリーン、無料で提供されるコーヒー等、非の付け所のない感じでした。

また、かなり少人数であったにも関わらず多大な努力により運営を回していたスタッフの方々には頭が上がらない思いです。 その中でも「同時通訳」という通常の英語スキルとは異なるベクトルを持つ難易度最高の業務に携わった @ujm さんと @sandkatt さん、本当にありがとうございました。

とても有意義で楽しかったので、来年度も発表者やスタッフなど提供者側として参加できればいいなーと思いました。