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 も同様に報告しているので参考として貼らせていただきます。
自分の発表の情報
今回発表に利用したスライド+α は
https://lambdalisue.github.io/vimconf2017
今回発表したプラグイン自体は
で確認できます。
自分の発表の感想とか
けっこう緊張しましたが、楽しく発表できました。
ギリギリになって日本語から英語に発表を切り替えましたが、英語発表が少なめだったので結果的に良かったのかなと思います。 この関係でスタッフの方には多大なご迷惑をおかけしました。この場を借りてお詫びを申し上げます(特に翻訳の ujm さん、ごめんなさい)。
lambdalisueさんも英語話せるのかよー!!
— 宇宙No.1 Haskellerにこにー (@public_ai000ya) 2017年11月4日
すげーよー!!#vimconf2017
ラムダスエさんめっちゃ流暢に英語はなすな #vimconf2017
— けいとら (@LightTiger2505) 2017年11月4日
みぶり、てぶり、しゃべり方の発表スタイルもカッコいい #vimconf2017
— guyon (@gu4) 2017年11月4日
ありすえさんの英語めっちゃ聞き取りやすい #vimconf2017
— タロー@綺羅星十字団 (@dohq) 2017年11月4日
英語発表にあたって、数多くのネタ的要素を含んだ発表だったので「英語が伝わらなくて笑ってくれなかったらどうしよう」という心配もありましたが、割りと笑いを誘えた感じになったので良かったです。
ミーティングした議題や子供の誕生日は覚えておきましょう #vimconf2017
— mattnっぽい人 (@mattn_jp) 2017年11月4日
それは覚えといたれよww #vimconf2017
— 1007番目のジョーカー (@joker1007) 2017年11月4日
. @lambdalisue は会社の中でもトップクラスに忘れ力が強いです #vimconf2017
— りんご (@aomoriringo) 2017年11月4日
内容に関しては、結構 gina.vim 便利そうという声が多かったのでちゃんと伝えられた感がありますね。嬉しい。 あと既存ユーザーの方もちらほら居たようで、これも嬉しい限りです。
便利そう....Gina入れるか!#vimconf2017
— ちゃっく@IQ1エバンジェリスト (@chakku_000) 2017年11月4日
diffから変更箇所開けるのは便利そう #vimconf2017
— dicekest (@dicekest) 2017年11月4日
gina.vimいいな。入れよう #vimconf2017
— のあ (@noah_orberg) 2017年11月4日
git blameのコミット単位毎にインジケーター付けて色分けするの賢い。 #vimconf2017
— 1007番目のジョーカー (@joker1007) 2017年11月4日
これは凄いな・・
— Connie (@Slash_01) 2017年11月4日
ずっとtig使ってたけど、gina.vim 使おうかな。。#vimconf2017
Gina速度やべぇぇぇ #vimconf2017
— けいとら (@LightTiger2505) 2017年11月4日
Gina.vim 好き #vimconf2017
— きたろー (@ktr_0731) 2017年11月4日
:Gina patchはホントベンリ. #vimconf2017
— koturn@きらら女子大学 (@koturn) 2017年11月4日
同時翻訳「これは便利で、いっつも使ってます」<- これujmさんの話だよねw #vimconf2017
— りんご (@aomoriringo) 2017年11月4日
あと最後の会社紹介の部分でも大いに笑いを誘えた感じになったので満足しています(笑。
仕事でVim scriptは書きません #vimconf2017
— tad3 (@tadsan) 2017年11月4日
fixpoint社,63%がVimmerでそのうち60%がvital.vimのコントリビューター! #vimconf2017
— koturn@きらら女子大学 (@koturn) 2017年11月4日
全部ビールww #vimconf2017
— Сюусуи (@syusui_s) 2017年11月4日
フリードリンクビールしかねえww #vimconf2017
— ポケモントレーナー (@h1manoa) 2017年11月4日
ちなみに、弊社は通年で技術者を募集しているので皆様のご応募お待ちしております〜。
あと、発表よかったな~と思っていただけたら、ぜひ gina.vim を開いてスターをクリックしてください(笑。
弊社ブログにても参加記事が公開されたので、こちらもよろしくお願いいたします。
あと Trending に入ってた。嬉しい。
皆様のお陰で https://t.co/DjXsxO7bXb が GitHub の今週の Trending に入ってました!ありがとうございます #vimconf2017 pic.twitter.com/L18mviIdvA
— Λlisue@満員電車絶対避けるマン (@lambdalisue) 2017年11月8日
各発表の感想
Vim, Me and Community @haya14busa
vim-easymotion の管理者として有名な @haya14busa さんの発表でした。
利用していた EasyMotion の開発か滞っていたので Fork して使っていたらメンテナにならないか?と提案されメンテナを引き継いだようです。 その後 @haya14busa さんが受け継いでからのスター成長曲線が示されましたが、とても綺麗な成長曲線を描いておりました。
スター成長曲線がやばいw #vimconf2017
— Λlisue@満員電車絶対避けるマン (@lambdalisue) 2017年11月4日
#vimconf2017 きれいな成長曲線だl
— KazuakiM (@NanohaAsOnKai) 2017年11月4日
このように多くの方に愛される結果となった理由の一つとして「後方互換性を気にかけ、小さなところからコツコツ作り直していったのが良かったと思います」と仰っており、とても印象に残っております。
うっ……割りと作り直してしまうタイプだから心に刺さる #vimconf2017
— Λlisue@満員電車絶対避けるマン (@lambdalisue) 2017年11月4日
そこから、様々な方からの助けにより Vim にコントリビュートしてこれたという旨でいろいろな話題に飛びました。 Re-vital の部分では自分も言及されました。 完全にあのバグの存在を忘れていましたが、今思い出しても意味不明でしたね(ステータスラインの描画コードにて例外が発生すると、例外を補足していても例外として処理されステータスラインが無効化になってしまうバグ)。
あのバグはむちゃくちゃ大変でしたね・・・意味わからなすぎたw #vimconf2017
— Λlisue@満員電車絶対避けるマン (@lambdalisue) 2017年11月4日
あと相変わらずイラスト屋センスが光っており、締めの方で会場を盛り上げてくれました。
ダークビムマスターと聞いて
— 暗黒美無王 dark Vim (@ShougoMatsu) 2017年11月4日
ガタッとなる#vimconf2017
いちいち絵の選択センスがうまいw#vimconf2017
— 宇宙No.1 Haskellerにこにー (@public_ai000ya) 2017年11月4日
RPG作れそう #vimconf2017
— りんご (@aomoriringo) 2017年11月4日
絵がw ほしいw #vimconf2017
— ばしゅら (@basyura) 2017年11月4日
その後、多様性を持つ Vim コミュニティ最高という締めで、涙なしでは語れない内容となっておりました。
The Past and Future of Vim-go @faith
非常に聞き取りやすく、わかりやすい英語だったため安心して聞いていられました。 ただ日本語への同時通訳が一つのコンテンツレベルだったようで、そこは少し残念です。 後日翻訳も YouTube 等に上がってくれればいいなと思っています。
#vimconf2017 めっちゃ聞き取りやすい英語だ、感謝🙏
— KazuakiM (@NanohaAsOnKai) 2017年11月4日
fatihさんの英語めっちゃ聞きやすくて良い #vimconf2017
— のむら() (@katsuO3rd) 2017年11月4日
私見が入る同時通訳面白いw
— type613 (@type613) 2017年11月4日
#vimconf2017
通訳者の個人的見解も聞けるの、新しい。アリだと思います。 #vimconf2017
— Takeo Hashimoto (@sempreff) 2017年11月4日
翻訳面白すぎて同時翻訳っていうかもはや1つのコンテンツになってる #vimconf2017
— りんご (@aomoriringo) 2017年11月4日
発表の内容としては「雑多なプラグインが溢れていて嫌だったから作った」という点に非常に共感しました。 UNIX 思想的には組み合わせて行うのがベストでしょうが「これさえ入れておけば大丈夫」という感じの物があると考えるコストが削減できるためいいですね。
"Too many small plugin." Yes, it's sometime annoying for starting #vimconf2017
— Λlisue@満員電車絶対避けるマン (@lambdalisue) 2017年11月4日
あと golang.vim -> go.vim -> vim-go という名前の推移とともに「名前つけるの難しいよね」と仰っており、これも「わかる・・・」という感じでしたね。
Naming is hard!!!! わかりしかない #vimconf2017
— tad3 (@tadsan) 2017年11月4日
他にもドネーションの代わりに本を買ってもらってたら読めない量になっちゃって困った話とか面白かったです。 あんまりドネーションちゃんと整備したことないので自分のプラグインでも整備したいなという気持ちになりました。
発表を通して vim-go の思想的なところからすごい機能の紹介までが網羅されており、使ってみたい!と思わせる発表だったと思います。良かった。
Creating Your Lovely Color Scheme @cocopon
カラースキームにこだわりを持つ iceberg で有名な @cocopon さんの発表でした。
@cocopon さんのカラースキーム系のブログ記事には個人的にお世話になっており、年末の Vim 大掃除のときにはだいたい参照しております。
ちなみに、僕は 複数のカラースキームを F3
で切り替える ようにしてるのですが、その中に iceberg も入っています。
Iceberg 常用スキームの一つになってます #vimconf2017
— Λlisue@満員電車絶対避けるマン (@lambdalisue) 2017年11月4日
発表についてですが……とても良かった。個人的には vimconf 2017 の金賞です。
論理建てて順序よく説明しており、多くの方が「自分でもできるかも!?」と思ったようです。 カラースキームを作る際のエッセンスが詰まった発表となっており、何度も見返したくなるような構成でした。
あと個人的には自分の init.vim
に入れてるマクロの高機能版っぽい pgmnt.vim
が収穫でした。あとで試そうと思います(ヘルプがないのが若干残念)。
pgment.vim 自分の init.vim で定義してるやつの高機能版っぽいから良さそう #vimconf2017
— Λlisue@満員電車絶対避けるマン (@lambdalisue) 2017年11月4日
自分の発表スタイルとはちょっと違う感じなので参考にするのが難しいですが、とても良い発表だったので出来る部分から発表方法とかスライドの組み方とか盗んでいきたいと思います。
vmp: the most ambitious vim emulator @t9md
vim-choosewin や vim-quickhl、vim-smalls で有名な @t9md さんの発表でした。 今はグラフィカルな移動系プラグインを使っていませんが vim-smalls は一時期常用しており、思い出深いプラグインです。
内容は Atom のプラグインである atom-vim-mode-plus の紹介でした。 Atom に関する発表ですが、内容は Vim の挙動を細かに解析・解釈し、より使いやすいインターフェースを定義した話なので Vimmer である僕にもとてもわかり易かったです。
中でも Occurrence modifier と move-to-edge-up/move-to-edge-down
に関しては Vim にも欲しい機能でした。
マッピングということで学習難易度はかなり上がってしまいますが、慣れるとかなり高速に編集できそうです。 デモ中は Twitter が「まるで魔法のようだ」という感想でいっぱいになっておりました。
edge motion直感的に「ここまで消そう!」をサクッと実現可能なの良さそう。使いたい #vimconf2017
— tkan (@tkancf) 2017年11月4日
「ぽっ」とすると「あっ」てなって「しゅっ」と がツボってしまった #vimconf2017
— Takeo Hashimoto (@sempreff) 2017年11月4日
複数箇所同時編集、マルチカーソルっぽい動き。これも面白い。 #vimconf2017
— Takeo Hashimoto (@sempreff) 2017年11月4日
魔法すgるw #vimconf2017
— Λlisue@満員電車絶対避けるマン (@lambdalisue) 2017年11月4日
次々に課題が出てきて、魔法のようにさらっとこなして、デモが流れていく。アクションRPGみたいだ…テキスト編集はゲームなのかもしれない… #VimConf2017
— cocopon (@cocopon) 2017年11月4日
まさに魔法みたいに変わるな#vimconf2017
— YO (@UYOPPAI) 2017年11月4日
そういえば Vim にベッタリで数々の素晴らしいプラグインを開発してきた @t9md さんが何故 Atom に移行したのか、懇親会でお聞きすればよかったと若干後悔しています。
Vim and Compatibility @senopen
タイトルから「プラグイン書くときの注意点とかかな?」と思っていたら。
vimconf来たらPOSIX原理主義の話が始まった #vimconf2017
— そら (@o_sola) 2017年11月4日
ただ、蓋を開けてみると Vim の歴史から始まり、現在使われているディストリビューションがサポートしている Vim の最低バージョンの話など、かなり実用的な話が多かったです。
個人的には Neovim/Vim 8 の Job 機能にベッタリなので init.vim
を Vim 7 等で動かすことは考えませんが、プラグインを書く際に参照する資料としてかなり秀逸だと感じました。
CentOS5.0はVim7.0なのか... #VimConf2017
— かしゅー (@kashew_nuts) 2017年11月4日
Vim7.0ってなんですか先生#vimconf2017
— 宇宙No.1 Haskellerにこにー (@public_ai000ya) 2017年11月4日
#vimconf2017 お名前.com...ってそんな古いCentOS使えるのか。大丈夫か?
— KazuakiM (@NanohaAsOnKai) 2017年11月4日
ここまで考えたくないw #vimconf2017
— Λlisue@満員電車絶対避けるマン (@lambdalisue) 2017年11月4日
とりあえず自分の環境で動けば良いや(思考停止)#vimconf2017
— 川瀬拓実o(`ω´ )oFSM (@coil_msp123) 2017年11月4日
また statusline
での文字コードの話など「わかる・・・つらいよね・・・」という共感も多く、菩薩顔になる場面も多かったです(笑。
ただ、少し勢いがありすぎてフォローするのが難しい部分もありました。時間が短かったので難しかったのだと思うのですが、もう少しスローペースだと良かったかなと思います(自分も勢い系なのでブーメランかも)。
Neosnippet.vim + Deoppet.nvim in Vim conf 2017 @ShougoMatsu
Shougo ware という言葉が確立するほど個性的なプラグインを多量に公開している Dark vim mister の @ShougoMatsu さんの発表でした。
発表は次期スニペットプラグインである deoppet.nvim の紹介でした。 その紹介にあたり neosnippet.vim の開発時の思想やほかプラグインとの差の話があり、なかでも「マーカータイプ」か否かの話を詳細に行っておりました。
neosnippet (neoにsnippetをつけただけ) マーカータイプのスニペット。snipMateのシンタックスを拡張。補完プラグインとの連携が前提の設計。 #vimconf2017
— tad3 (@tadsan) 2017年11月4日
UltiSnips、アーキテクチャの都合上 NeoVimではとてもパフォーマンスが悪いことで一部で話題になった #vimconf2017
— tad3 (@tadsan) 2017年11月4日
マーカータイプのスニペットとは、バッファーにマーカーを埋め込んでジャンプする。実装しやすい。パフォーマンスが良い。次のジャンプ場所がわかりやすい。 #vimconf2017
— Ryou Ezoe (@EzoeRyou) 2017年11月4日
非マーカー型は常にバッファとカーソルを監視するので実装が大変でバグも生みやすい #vimconf2017
— tad3 (@tadsan) 2017年11月4日
また「スニペットの便利さがよくわからなかったので、自分で作ってみました」はプログラマの鏡のような発想で、波紋を呼んでいました。
「よくわからないから、作ってみよう💖」わくわくさんかよ #vimconf2017
— りんご (@aomoriringo) 2017年11月4日
なんで流行ってるのかわからない。→×試す →○作る #vimconf2017
— zoom3 (@20om3) 2017年11月4日
snippetPluginがなんでたくさん使われているのか
— 古のやきりんご (@yakiringo_old) 2017年11月4日
じゃあ作ってみよう
草#vimconf2017
「作ってみよう」ノリがわくわくさんw #vimconf2017
— Λlisue@満員電車絶対避けるマン (@lambdalisue) 2017年11月4日
最後に neocomplete.vim の開発終了のお知らせがありました。 Shougo ware の代表作のようなプラグインの終了には感慨深いものがありますね。
How ordinary Vim user contributed to Vim @dice_zu
Vim 関係の勉強会の喫煙室でよくお会いしている @dice_zu さんの発表でした。 代表作のようなプラグインはありませんが、代わりに Vim 本体にかなりパッチを適用している凄い方です。
発表はパッチを投げる際の心構えから始まり、どのようにバグを見つけるのか?の話になりました。 要約すると「熱意で頑張る」という感じになりますが「大事なのはパッション」や「運用でカバー」、「毎朝 Vim をビルドする」などパワーワードに溢れた発表になっていました。
「まぁ今日来ているのはvimにコントリビュートしたい人ばかりだと思います」 #vimconf2017
— Owl (@Owl_Works) 2017年11月4日
大事なのはパッション #vimconf2017
— けいとら (@LightTiger2505) 2017年11月4日
運用でカバー #vimconf2017 pic.twitter.com/Gz6uLtIITT
— mattnっぽい人 (@mattn_jp) 2017年11月4日
「Vim は毎日ビルドするもの」 #vimconf2017
— mattnっぽい人 (@mattn_jp) 2017年11月4日
タイトルに「Ordinary」と書かれていますが、かなり懐疑的です(笑。
この場所でのordinaryという単語全然信用できない。 #vimconf2017
— りんご (@aomoriringo) 2017年11月4日
あと自分の名前が入ったパッチとか最高にかっこいいと思います。
これ↑とか完全に僕が放置してしまってる感じなので Vim 熱が冷めないうちにやっていきたい。
The new syntax highlighter for Vim @p_ck_
ステータスラインに寿司が走る sushibar.vim や SSH 先でもコピペを有効化出来る lemonade で有名な @p_ck_ さんの発表でした。
内容は Vim 標準のハイライト機構に頼らない新しいハイライトの仕組みを使った iro.vim の紹介でした。
各言語で AST 解析を行い matchaddpos()
関数にて明示的にハイライトを追加することで 完璧な ハイライトを実現しています。
問題点としてファイルサイズが大きい場合にフリーズする点が上げられていましたが、パース処理よりも多量の matchaddpos()
が重いようなので、今後 Vim 側で描画範囲内のみ matchaddpos()
が適用される等がパッチされれば実用的になるとのことです。
まぁ、ここに関してはプラグイン側で頑張っても行けそうなので是非とも対処して欲しいなーと思いました。
現段階では Ruby と Markdown にしかちゃんと対応できていないようなので、今後の発展に期待です(特に Vim script や HTML のハイライト処理は色々アレな部分も多いので、そこがサポートされると嬉しい)。
プレゼン中に出てきた「人類に正規表現は早すぎる」というパワーワードには共感を覚えた方が多かったようです。
人類には正規表現は早すぎる #vimconf2017
— 🐈🐾/|こたつ|\🐈🐾 (@s_hiiragi) 2017年11月4日
人類に正規表現は早すぎる。 #vimconf2017
— Ryou Ezoe (@EzoeRyou) 2017年11月4日
本当に人類に正規表現は早過ぎるよね。 #vimconf2017
— 1007番目のジョーカー (@joker1007) 2017年11月4日
「人類には正規表現は早すぎる」#vimconf2017
— koturn@きらら女子大学 (@koturn) 2017年11月4日
人類に(特にvimの)正規表現は早すぎた。#vimconf2017
— MATSUNAGA Ichiro (@vikke) 2017年11月4日
ちょうど gina.vim の :Gina blame
でのハイライト問題に対して matchaddpos()
を使っていこうと思っていたので親近感を感じておりました(今は正規表現固定なのでユーザーがカスタマイズすると表示が崩れる)。
レジェンドの対談に関して
これはもう参加者限定のレクリエーションに近いので詳細は控えますが、最高でした。 古い Vim の話など、普段はなかなか聞けない話が多く楽しかったです。
来年度も似たような対談時間があると良いなと思いました。 レジェンドに限らず Vim コミュニティには「クセのある」方々が多いため、そういう方々の対談も聞きたいです。 あと、対談に自分も参加したい気持ちもちょっとある(笑。
最後に
会場が最高クオリティでした。 WiFi と各席電源完備な点や大きくて見やすいスクリーン、無料で提供されるコーヒー等、非の付け所のない感じでした。
また、かなり少人数であったにも関わらず多大な努力により運営を回していたスタッフの方々には頭が上がらない思いです。 その中でも「同時通訳」という通常の英語スキルとは異なるベクトルを持つ難易度最高の業務に携わった @ujm さんと @sandkatt さん、本当にありがとうございました。
とても有意義で楽しかったので、来年度も発表者やスタッフなど提供者側として参加できればいいなーと思いました。