# VimConf2019に参加&発表してきた

こんにちわ。ゴリラです。

2019/11/03(日)にVimConf2019 (opens new window)が開催され、そちらに発表&参加してきた記事です。

# はじめに

最高でした! そしてありがとうございました! という気持ちです。

セッションを振り返りながら、何を得たのかをまとめて行きたいと思います。

# キーノート

# Vim Renaissance by [Prabir Shrestha]

# 概要

vim-lsp (opens new window)の作者のによるキーノート。 Vimはこれまでの、そしてこれからの数年間は進化・革命が起きている。これからも革命が続いていく話。 具体的に、float windowやpopup windowの実装、非同期ジョブ機能、ターミナル機能などがここ数年で行われてきた。

Prabir氏がvim-lspを作り始めた頃はvimのLSP clientプラグインがなかったそう。 驚いたことに、Vim scriptを書き始めたのはここ2,3年とのこと。

vim-lspでの実装で苦労したのは仕様に沿って実装したLSP Serverがなくて、いろんなServerに対応したこと。

現在MSのプロジェクトマネージャーで、コードを書くことがあまりなく、また休日などは飛行機を飛ばしたりと趣味に時間を費やしていることが多い。

OSSに関しては、なにかアイディアを思いついたとき、深夜までやることもあるが、 やらなきゃと思ってやっているわけではないので、毎日OSS活動に時間を費やしているわけではないとのこと。

# 所感

  • 多くのエンジニアが生産性を上げられるようにプラグインを作りたい
  • OS(Mac,Linux,Windows)エディタ(Neovim,Vim)を定期的に変えながら使っている。

この2点はとても個人的に刺さった。 マルチプラットフォーム対応、そしていろんなエンジニア、いろんな環境を想定した上でOSSを作っている理念と姿勢は本当にすごいなと思った。

ぼくもOSS活動をしているけど、OSとエディタを切り替えながら使っているわけではないし、Windows対応もほとんどしていない。 だからこそ、彼の理念と姿勢はすごいし、憧れるものがあった。 少しずつだけど Windowsでもちゃんと動くものを作っていこうと改めて思った。

# We can have nice things by [Justin M. Keyes]

# 概要

Neovimの話だけではなく、テキストエディタ、開発の思想などを話していた。 5年前のテキストエディタのシーンとかなり違ってきたとのこと。 NeoVimのゴールは「Vimに置き換わること」ではなく「Vimの最大化」とのこと。

エディタの将来を考える = 過去を考えるのと同意義とのこと。 レガシーシステムはネガティブな意味しかない、というわけではなく過去に成功したプロジェクトもある。 過去の財産を活用すべきとのこと。

# 所感

非常に落ち着いた雰囲気な方だった。 そしてスライドが100ページを超えて時間切れでLuaの話を聞けなかったのはとても残念だけど、 物静かな語りの下にはすごい情熱と思いがあるんだなと思った。(じゃなければ100枚のスライドを作ってくることはないでしょう)

セッション自体はエディタにスポットを当てた話だけではなく

  • 過去の遺産(レガシ)は悪いものではなく、成功した事例もあるし、そこから学べることもある
  • 利用できるものは利用しないという手はない

という考えにすごく刺さった。まさにその通りだなと思った。 ただ、個人的に意識しておきたいところは、再利用をするだけで終わらせないこと。少しでもいいから、仕組みを理解すること。

人類の文明も、そうやって再利用の積み重ねなんだよなぁと。車輪の再利用をしなければ進化はもっと遅かったんだろうなぁと。

そしてキーノートを聞いたあと、Neovimも使おうと改めて思った。というのももう少しモダンな機能を触ってみたいし、それぞれの良さを知っておきたいから。

現時点では、Vimはこれまで保守的で安定性を求めているのに対して、Neovimはモダンな機能を取り入れる姿勢が強いという違いくらいしか知らなくて、 もっと自分で身を持って知っていきたいという思いが強くなってきたから。

このセッションではものづくりをしていく上で大事な考え方、姿勢について改めて学べたのでとても良かった。

# セッション

# Your Vim is Only for You by [mopp]

# 概要

自分のエディタの育て方についての話。

  • 自分のvimrcを改善するには、自分のポリシーをまず見つけることが大事。
  • 半年に一度vimrcを整理することをおすすめする。
  • コピペするだけは良くない、理解もしていくことが大事。
  • dotfilesを管理するツールはdotbot (opens new window)というOSSを使っている。
  • vimrcをどんなフローで改善していけばいけばいいのか。

といった内容だった。

# 所感

moppさんのvimrcの改善フローは思考整理されていてとてもよくまとめられているなぁと思った。 そして

  • 自分のvimrcを改善するには、自分のポリシーをまず見つけることが大事

という言葉がすごく印象強く残った。 普段から意識しているわけではないけど、ポリシー大事だよなぁと思った。 ポリシーがなければ方向性がぶれてしまう上、何をしたいのかわからなくなるので、まずは「どんなエディタにしたいのか」を考えると良いんだなと思った。

個人的にvimrcの掃除に関しては、 月に一度やりたいと思っているけど、最近放置気味なのでそろそろメンテしようと思った。

このセッションは、Vimを始めたばっかりの頃に聞きたかったなぁと思ったので、 これからだっていう方にとってとてもためになるセッションと思った。

ちなみに、moppさんは一度ゴリラ.vimに参加してくれたことがあって、 また参加して今度は発表してほしいなと思った。(本人にはまだ言っていない)

# Grown up from Vim User to Vim plugin developer side by [IK]

# 概要

ユーザから開発側に成長していくお話。

  • 普段は学生をしているとのこと
  • 最近Vim scriptしか書いていないとのこと(一時期の自分と同じw)
  • 学校ではVSCodeを使っていたが、学部の先輩にVimをおすすめされて使うようになったとのこと。
  • Shougoさんのプラグインをたくさん使っていてDark side Vimmerとのこと。
  • いままでプラグインを入れてバグがあった場合、我慢して使うか、切り捨てるかしかなかったけど、 OSSコントリビュートしてから考えが変わった。
  • 自分でバグを直したりという選択肢が増えた
  • いろんなプラグインにPRよく投げている
  • OSS貢献は怖くない、issueとPRは開発者が望んでいる
  • 一歩踏み出す勇気があればOSSコントリビューターになれる

# 所感

結構いろんなプラグインにコントリビュートしていて、行動力もあってすごいなと思った。

そして、自分自身が一歩を踏み出すことによって、新しい世界に飛び込んで、 自分自身も成長できたという話は若いながらそこに気づけて、やれたのはすごいなと思った。

個人的にこれからが楽しみだし、負けられないなと思った。

ちなみに、IKさんも一度ゴリラ.vimに来てくれて登壇もしてくれた。また来てほしい。

# Usage and manipulation of the tag stack by [daisuzu]

# 概要

vim-lspのタグジャンプのバグを直したのと、タグスタックの仕組みの話。

  • 諸事情により、VimConfのCfPを出す必要があるので、vim-lspのバグを直してCfPを出して通った(まさに登壇駆動開発、しかもカンファレンス)
  • 基本的にタグジャンプの使い方を紹介
  • タグスタックの構造体の説明
  • タグジャンプするときの構造体がどうなっているのかが細かく、わかりやすく図で説明されていた

# 所感

スライドによる説明だけだったが、ケースごとのタグスタックの動きがめっちゃくちゃわかりやすかった。

VimConf2018年の発表もそうだったが、すごくきれいでわかりやすい発表だったので、流石だなぁと思った。 自分もこういった発表ができたらなぁと思えるとてもわかりやすい、素晴らしい発表だった。

ちなみに、 daisuzuさんは普段一緒にゴリラ.vimの運営をやっていて、いつも助けられているので頭が上がらない…

# make test by [m-nishi]

# 概要

Vim本体のテストの話だけど、次が発表だったためほぼ聞いていなかった… 動画が公開されたらちゃんと改めて見る!一応覚えている範囲内で書き出すと…

  • これまで何回かVim本体にコントリビュートして名前が載った
  • Vimのテストの実行方法

について話されていた。(はず)

# 所感

僕の中で、m-nishiさんといえばテスト・翻訳という印象があった。 というのも、最初にお会いしたときにテストコードをいじったり、見たりしているという話を聞いてすごいなと思った。

自分はVim本体に一度だけコントリビュートしたけど、 正直テストとか1ケースしか書いていないし、実行の仕方もm-nishiさんに教わったし、そういった出来事もあってその印象が残った。

そして、スライドの背景はVimになっていて、ちゃんとページ数が増えていくたびに行数が増えていく仕様になっていて、おしゃれでいいなと思った。

ちなみに、m-nishiさんも何度かゴリラ.vimに参加してくださって、過去に発表もして頂いたことがあった。 実はそのときに使っていたスライドを今回も使っていて実は見たことがあるんだぜってこころの中で自慢していたのは内緒(笑)

# My Vim life by [gorilla0513]

# 概要

ゴリラがVimについてどんな活動をしてきたのか、どのように学んだのか、Vimを使ってどうやって生産性を上げてきたのかといった話。

  • なぜVimを使い始めたのか
  • どのようにVimを学んできたのか(ヘルプを読み漁ったり、毎日Vimを使ったり、プラグイン作ったり、記事の連載だったり、本の執筆だったり)
  • どのようにVimを使って生産性を上げてきたのか(プラグイン、vimrc、プラグイン選定のポイント、おすすめのプラグインなど)

# 所感

今回の発表のターゲット層は初級者〜中級者あたりまでというイメージで話した。 Vim歴は1年だけど、1年だからこそ背中を見せられて道を示せられると思ったので、やってきたこと・考えてきたことを話した。

少しでもみんなの心に刺さって、刺激、モチベになれたらいいなと。

ちなみに、ぼくはゴリラ.vim (opens new window)というコミュニティを運用していて、月イチでイベントを開催しているので、 興味ある方はぜひ遊びに来てください。 今月はゴリラ.vim #10 非公式VimConf後夜祭 girls.vimと合同開催 (opens new window)です!

また、Vimが好きになる本 (opens new window)も執筆して販売していて、 さくらのナレッジでVimはいいぞ!ゴリラと学ぶVim講座 (opens new window)という連載を持っています。 興味ある方はぜひ覗いてみてください。

# Using Vim at Work! by [Danish Prakash]

ごめんなさい、発表後バテてたのと翻訳レシーバー持たないまま休んでいたので全然わからなかった… ただ、どうやら「エディタを変えないと君とは働けない」とメンターの方に言われたらしく、そんな事あるんだっていうのが印象残った…

内容気になる方はVimConf2019の公式でスライドが公開されているので読んでみてください…

# Let's Play with Vanilla Vim by [Hezby Muhammad]

# 概要

バニラVim (デフォルトのVimのこと)が良いという話

  • 写真を取るのが好き、日本に来たのは2回目とのこと
  • 可能な限りhjklを使うようにしている
  • ノーマルモードはワイの親友(いろんな事ができるから)
  • コマンドラインモードを駆使してテキストを編集する(range指定で削除、コピーしたりする)
  • モーション(fとtなど)
  • 画面分割を使う

# 所感

セッションの内容は僕も普段良く使っているコマンドの機能だったので、「お、一緒だ」と思ったのが印象に残った。 そしてバニラVimでも十分業務できるんだよなぁと改めて思った。

プラグインを普段から使っている方は、一度バニラVimまでは行かなくても標準機能を使って業務をやってみると良いかもれません。 Vimってこんなことができたんだってなるし、新しい発見があると思うので。

# 13 Vim plugins I use every day by [Tatsuhiro Ujihisa]

# 概要&所感

ujihisaさんが普段業務で使っているVimのプラグインたちの紹介とライブコーディングで実際どのように使っているのかを紹介した内容。

なんのプラグインを使っているのかあまり覚えていないけど、 ujihisaさんの相変わらず圧倒的なコーディングスピードはやはり見入ってしまう。

このスピードは自分の理想で、ujihisaさんに追いつくのが目標だったりする。

ちなみに、ujihisaさんは普段バンクーバーに住んでいてるけど、約半年前までは日本で住んでいて、 ゴリラ.vimの会場を貸してくれたこともあったし、ライブコーディングしてくれたこともあった。

日本にいないのがとても残念だけど、また来年のVimConfでお会いしてコーディングを見たいなぁと思っている。

# My dark plugins development history ~ over 10 years ~ by [Shougo]

# 概要

ShogoさんのVim開発の十年間の話。バテたのかあんまりはっきり覚えていないので、雑なメモで…

  • Vimのプラグイン開発の動機は、EmacsのようにすべてをVimで行いたいというのが理由

第1世代 カスタマイズ可能、たくさんの機能があり、linuxのプラグインをエミュレートしている

第2世代 if_lua を使っている(Vim scriptが遅すぎるから)

第3世代は if_ptyhon(channel/jobを使って非同期化した、Vim scriptが遅すぎるから)

第4世代は

  • typeを定義して、バグを検出しやすくした
  • デフォルトマッピングは必要ない
  • 他のプラグインとコンフリクト(他にいろいろあった)
  • 設定変数を取り除いた
  • denite.nvim v3 で破壊的な変更を行った

開発スタイルはメモプラグインも使っているが、普段は紙ノートに色々書いているとのこと。

なぜ紙を使うかというとPCいらないからどこでも使えるし自由にかけるからとのこと。

# 所感

実は今回初めて暗黒美無王こと、Shougoさんに会った。 ゴリラとドラゴンの会合だったんだけど、優しい方だった。

Shougoさんのプラグイン開発に込める熱量と思いは、日本どころか世界一とぼくは思っていて、 どこからそんなに情熱と思いが溢れてくるんだろう?と疑問に思っていたが、少しだけ分かった。

帰りにShougoさんと少し話したが、「プラグイン開発は命を燃やして開発しているようなもの」と言っていた。 自分もなんかわかるって思ったし、たしかに自分も情熱とかを燃やしているなと思った。 情熱がなくなったらある意味、命がなくなったのと同じだなと思った。

Shougoさんなりの信念、そして生き様がそこにあって、それを目の前に話を聞けて話せてとても良かったし嬉しかった。 ぼくはそこまでプラグインづくりに情熱を持っているわけではないが、生き様はともて尊敬できるし、憧れでもある。陰ながら応援しています。

# Lightning Talk

# Customer support with Vim by [Hiroaki KADOMATSU]

# 概要

カスタマーセンターで働いている方によるカスタマーによるVimの使い方の話。

  • お客様からの質問をエディタを使って書いて、完成した文章を返信する
  • 大体の流れは↓
  1. タイムスタンプ
  2. 質問をコピーして貼り付ける
  3. vim-easymotionを使って、縦移動している、
  4. 画面分割を使っている(回答が長いと質問が見えなくなるから
  5. スニペットで定型文をよく使っている
  • Vimはカスタマーサポート向けのエディタ、ものを考えながら書く人にとっては便利なエディタであるとのこと。

# 所感

確かに高速で文章を編集するための作業に向いているエディタだよなと改めて思った。 普段Vimはメモ、開発、記事を書くときに使うけど、ビジネスメールでは使ったことがなかった。

中々面白い話だったのと、今後自分のメールをVimで書こうかなと思った。

# Connect with many developers from small plugin by [lighttiger2505]

# 概要

deoplete.nvimのlsp補完プラグインを作った話。

  • とても小さい、putyon 175 step, vim script 32 step
  • 少量のコードで高いUXになる理由 => 難しい実装はほぼdeoplete.nvimとvim-lsp.vimでできていたから、あとは2つのプラグインをつなげるだけだから。
  • Neovim -> deoplete.nvim -> deoplete-vim-lsp -> vim-lsp -> language server
  • たくさんのVimmerと交流できた

# 所感

前から気になっていてlsp補完のプラグインの話を聞けてよかった。意外とコンパクトなプラグインだなぁという印象だった。 そして、deoplete.nvimとvim-lspが本当によくできているんだなぁと思った。(少ないステップ数で実装できるのがすごい)

ぼくは普段自動補完使わないけど、deoplete.nvimでlspを使ってみたい方は使ってみてはどうでしょうか?

ちなみに、lighttigerさんはなんどかゴリラ.vimに参加してくれて、10月ではライブコーディングをしてくれた。 普段他人のVimの使い方をなかなか見れないのでとても勉強になった。

# Can we do Slack with Vim? by [higashi]

# 概要

Vimでslackできるプラグインを作った話

  • 普段は沖縄で学生やっている
  • VimでSlackをするためのプラグインを作った
  • Slack API、Slack Legacy Token、if_pythonを使って実装していた
  • webapi-vimのことを知りVim scriptで実装し直した -> sarahck.vim
  • ポップアップウィンドウを使ったりしている
  • 問題:パフォーマンスに問題あり(ちょっと遅い、少し待たないといけない)
  • 対応:キャッシュサーバーを建てることで高速化 -> sleachk.vim
  • Slackの表示はできるが、画像の表示とアクションをつけることができていなけど、今後は作っていきたいと思っている

# 所感

最近の学生はすごいなと思いながらLTを聞いていた。 LTのためにわざわざ沖縄から来て、すごいなと。

ちなみに、以前higashiさんがゴリラ.vimに参加したことがあって、そのときにslackのプラグインを発表されていたけど、その時よりも進化していた。 キャッシュサーバーのアイディアについてはなるほどって思って、そういう手もあるねと勉強になった。

vimでslackしたいのは実はぼくも前から思っていて、作ろうと思ってそこで終わっていた… これからどんどん進化させていってほしいなと思った。

ちなみに、higashiさんはOkinawa.vim (opens new window)というコミュニティを運営していて、たまにリモートでLTやったりしているので、 興味ある方はぜひ参加してみてください。

# Time script 〜静的型付きVim script〜 by [aiya000]

# 概要

Vim scriptに強い型つき言語としてTime scriptを作っているという話。

  • 作っている理由は静的型付き言語が使いやすいから
  • Type scriptとの比較をしつつ、Time scriptの紹介をしていた
  • 基本的なsyntaxはType scriptに寄せている様子(個人的な印象)

# 所感

個人的にTime scriptは楽しみにしている というのも型があると可読性がぐーんと上がるからもっとVim scriptが書きやすくなると見込んでいるから。

実際Time script -> Vim scriptにコンバートするっぽいけど、 ここらへんどうなっているんだっけっていう感じで曖昧で記憶がないので、今度本人に聞いてみようと思う。

陰ながら応援しています!

# Lose Weight with Vim and Go by [micchiebear]

# 概要

VimとGoで痩せる話

  • 2017からVimを使い始めて、今年で初めてLT
  • プラグインはNeovimで動作確認ずみ
  • Goのソースは同じリポジトリ内であった
  • VimでGoのコマンドを呼び出して、メインの処理をGoにまかせている
  • 将来的にはグラフを描画したい
  • float windowが変なところに出てて、業務に支障が出ている
  • Vimのpopup windowとNeovimのfloat windowの違いを知らなくてドキュメント探しでハマっていたとのこと

# 所感

micchieさんのVimプラグインの話ずっと気になっていたので、内容がわかってスッキリした。 yasetaiという世界的日本語があるのは知らなかったので、へぇってなった。

ちなみに、micchieさんとはぼくが始めたアキバ.vimというクローズドなコミュニティで一緒にVimを勉強していた方で、 VimConfで一緒にVimの発表をする日が来るとは、とちょっとジーンとしたというのは内緒(笑)

# Vim as a text processor by [うさみけんた]

# 概要

Vimのバッチモードを使って、Vim scriptでリファクタリングした話。

  • リファクタリングするときに、sedではなくVim scriptを使った
  • Vim scriptを作るために、実践Vimを読む
  • バニラVimのセッションで話したようなテクニックを駆使してリファクタリングのスクリプトを作っていた。
  • Vim scriptを使うことでテキスト編集のスクリプトを作れるし便利

# 所感

Vimのバッチモードまともに使ったことがないので、使い方によってはこういう事もできるんだなぁと実例を聞けてよかった。 今度バッチモードでなにかやって記事を書こうかなぁと思った。

# VimのリポジトリがGitに移ったときに知られざるはなしのLT by [KoRoN]

# 概要

  • VimがGoogle Codeの閉鎖により、GitHubに移行した
  • GitHubとBitBucketのVim争奪戦があったとのこと
  • 最終的にGitHub
  • プライベートなメールチェーンに巻き込まれた(KoRoNさん)
  • vimというユーザがいて、譲ってもらうための交渉があった
  • vim-jpがmercurial -> git へミラーリングを行った
  • vim-jpがci用のリポジトリを作った
  • GitHubに移行したことでパッチを書く敷居がめっちゃ低くなった
  • ぜひパッチをチャンレンジしてみてください
  • 不安ならvim-jp/issuesへ

# 所感

KoRoNさんのVimの歴史系の話は結構好きで、今回もへぇ、そんなことがあったんだって思って、とてもおもしろかった。 欲を言えばもっと話を聞きたかった(笑)

# アフターパーティー

VimConfが終わり、アフターパーティールームでみんなで談笑しながら、LTをやったりした。 とてもカジュアルな感じで、たくさんの方と話できてとても良かった。

ちなみに、ぼくはずっとお会いしたかったmattnさんにお会いできて、 握手もできて、懇親会で話もできて、目の前でライブコーディングも見れて、とても満足した。

生mattnさんはslackのときと同様とても優しい方だった。これまでたくさん質問をmattnさんが教えてくれて、 その御礼をずっと言いたくて、それを言えてとても良かった。

mattnさんはぼくにとって、憧れのエンジニアで目指したい背中、それを目の前で見れてとても嬉しかった。 嬉しかった、の一言に尽きる。

# HUB会

アフターパーティーが終わったあと、HUBで参加者と複数人で飲んでいた。その中にujihisaさんもいた。 色々話をしていた中で、個人的に

  • 遊びは本気でやる
  • 仕事は妥協しない
  • 自分で選択すれば基本なんでもできる

といったujihisaさんの生き方、そして生き様、考え方にとても感銘を受けた。

# 全体を通して

去年のVimConfはぼくがまだVimを始めたてのころで、存在を知らなくて気づくのが遅かったので行けなかった。 けど今年はVimConfにちゃんと行けてしかも発表できて、そこでたくさんのものを得られて最高だった。

このカンファレンスで得られたものを簡潔にまとめると以下になります。

  • 情熱(もっともっとものづくりをたくさんしたい)
  • モチベ(もっともっとたくさん学びたい)
  • 知見(車輪の再利用の話、妥協しないOSSづくりなど)
  • 輪(たくさんのエンジニアと話せて知り合えた)
  • エンジニアとしての考え方、生き方、矜持(ujihisaさんとか、mattnさんとか、Prabir氏、Justin氏などの話)

Vimの国際カンファレンスだけど、Vimだけではなく本当にエンジニアとして、人として大事なことをたくさん学ばせて頂きました。 長い間、カンファレンスのために準備してくださった運営の方々、そしてスポンサーをして頂いた企業様、本当にありがとうございました。

そして参加して頂いたみなさんもありがとうございました。イベントは主催ではなく、参加者がいて初めて成り立つものです。 ぼくもコミュニティを運営している身として、本当にすごいなと思ったし、とってもありがたかったです。 この恩は、ぼくなりのやり方でVim、ひいてはIT業界全体にかえしていこうと思っています。

ぼくは来年も登壇を目指しますので、またみなさんにとって利益になるような内容を発表できるように頑張ります!

改めて、運営も参加者の方もスポンサーの企業様も、みなさんありがとうございました。