VimConf 2023 Tinyに行ってきた

2023年11月18日、秋葉原で開催されたVimConf 2023 Tinyに参加してきました。

https://vimconf.org/2023/

VimConfが4年ぶりに帰ってくる! VimConf は、世界初かつ世界で唯一のコミュニティによって定期運営されているVimの国際カンファレンスです。

新型コロナの影響で開催を延期していたVimConfが、2023年ついに開催決定!

今回は、準備期間が限られているため、VimConf 2023 tinyとして縮小版での開催となりますが、 Vimに関する様々なセッションが予定されています。 Vimユーザーなら誰でも楽しめるVimConf 2023 tiny。 Vimをもっと使いこなしたい方、Vimについてもっと知りたい方は、ぜひご参加をご検討ください!

初めてのVimConfの参加でちょっと緊張していたのだけれど、とても楽しかった。 ありすえさんがtogetterにまとめてくれているのでそれ見ながら思い出しつつ書いていきます。 https://zenn.dev/lambdalisue/articles/67f532581548b6

Bram Moolenaar the Creator of Vim (mattn)

Bram Moolenaar the Creator of Vim (mattn) - Togetter

Vimの歴史やVimの作者Bramさんとmattnさんの二人のエピソードをSoftware Designのスピンアウトという形でお話されてました。

自分も、Bramさんがこの世を去ったと知ったときとても悲しい気持ちになったのを覚えている。 このキーノートでmattnさんも感情をなんとか抑えながら話していて、聞いている自分も気持ちを抑えながら聞いていました。

印象的だったのはBramさんはあのmattnさんから見ても手が早かったこと、英語がコンプレックスだったmattnさんのターニングポイントがBramさんとのメールのやりとり、それがOSSへの貢献につながっていること。 そして、今後mattnさんはずっとVimを使いつづけ、メンテナンスしていくんだという意志表明があり、良い基調講演でした。

Revolutionizing Vim/Neovim Plugin Development ~ An In-Depth Look into Denops (Λlisue)

Revolutionizing Vim/Neovim Plugin Development ~ An In-Depth Look into Denops (Λlisue) - Togetter

開発者のありすえさん自身が、Denopsについて解説するトーク。 特にDenopsのアーキテクチャそれらの通信がどうなっているのか、プラグイン間の通信あたりが個人的に面白かった。
Vim / NeoVim <–> denops のやりとりはそれぞれJSON/MessagePackでやりとりし、denops <–> plugin は messagepack-rpc でやりとりしている。
ワーカーのアサイン、ワーカー内のdenopsプラグインは別プラグインとmessagepack-rpcでやりとりできるようにしているみたい。

Looking back at vim meetup (ゴリラ)

VimConf 2023 Tiny - Looking back at vim meetup (ゴリラ) - Togetter

ゴリラさん主催のミートアップ、ゴリラVimの話。 定期的にオフラインで開催していたゴリラVim, コロナ渦ではオンラインで開催していたとのことです。Vimについて話すと幸せになれるという、いい意味でVimに毒された感が最高だった。 ただ、運営をつづけるモチベーションを維持するのは簡単ではなく、テーマやLT募集など手間もあり大変だったようです。

オフラインでしか得られない栄養があるのは事実。それもコロナ渦を経験してきたからこそより実感できていると思う。今後のオフラインのイベントが楽しみです。

Developing a Vim plugin with Ruby, or when in Ruby do as the Rubyists do (大倉雅史)

Developing a Vim plugin with Ruby, or when in Ruby do as the Rubyists do (大倉雅史) - Togetter

大倉さんのRSpecを読みやすくするプラグインを作った話。 RSpecのSubjectが遠い問題。subjectは テストする主体をまとめてわかりやすくする機能なのだが、実際のテストケースを書く場合、肥大化したテストケースを読むとき遠くて迷子になる。 (確かにいつも#でファイル上部のsubjectを探して読んでるなぁと思いながら聞いてた)

アイデアとしては、現在の行のSubject/Describe/ContextをAST使って取って、それをStatusLineに持ってくることでSubject迷子にならないという。RubyVM::AbstractSyntaxTreeの良い使い方だと思った。LSP実装するのも考えたが要件に対してオーバーキル案件だったらしい。
自分はRubyでVimプラグイン書いたこと無いのだけれど、普段RSpecを書く程度にはRubyは使えるので、この用途でVimをRubyで拡張するというのはかなり良い選択のように思える。何より、欲しい機能をミニマムで実現できていてその点が良いと思った。

Modern techniques for implements insert mode plugins / Why use IME within text editor? (kuu)

Modern techniques for implements insert mode plugins / Why use IME within text editor? (kuu) - Togetter

SKKの話。SKKは日本語入力のためのIMEだが、 skkeleton(https://github.com/vim-skk/skkeleton) はVimプラグインとして動作する。
ちなみにSKKはSimple Kana to Kanji conversion program の略らしい。
skkeletonはDenopsに依存していて、TypeScriptで書くことができる。Vim/Neovimどちらでも動作し、Win/Mac/Linuxに対応、SSHを通じても同様に動作する。Vimに依存することでIMEとしてよりポータブルなソリューションが実現できているのは面白いと思った。

実際にkuuさん本人の手元で操作しているのを見せてもらったのだけれど、Swayのフローティングウインドウ上のIME用のVimがシュッと立ち上がって日本語が入力されていき閉じ際にアプリへ文字が入力されている様は不思議な感じだった。
自分はIMEは普段fcitx-mozcを使っているが、界隈で使っている人が多いので気になっていた。これを機にfcitxから移行できるか試してみたい。

Boost your vimrc with some template techniques! (aiya000)

Boost your vimrc with some template techniques! (aiya000) - Togetter

前半はvimrcをメンテするときに参考になりそうな話、後半から少しずつ関数型の話が入ってきて…、というトークだった。
vimrc分割手法(autoloadに関数, pluginにコマンド, vimrcに設定を書く)はプラグインの中ではそういうふうに書くものだと思っていたけど、vimrcにも同じように書いていくとスッキリしそうだというのは参考になった。
Vimでテンプレート構文による文字列展開とかも知らなくて、これは便利そう。

Vimプラグインによく導入されているvital.vimを活用する話も出ていた。Denops登場以前ではよく見ていた気がする。 知らない便利な機能やプラグイン、その使い方でどうよくなるかが話されていて、キャッチアップできていてタメになるトークでした。

懇親会

懇親会のビュッフェめっちゃ美味しかった。LT見ながらうまいもの食べ、楽しくお話できました。
運営・スポンサーの方々のおかげです。ありがとうございました。 2次会は数人で居酒屋行って、3次会Vimカラオケに合流しました。

ほとんど知らない人、初めて会う人、でも首から下げたネームプレートにはどこかで見たアイコンの人がいて、それで話の輪に入りやすかったり。
Vim、プラグイン、ブログやVim.jpのSlackで日々お世話になってる人たちと会えるのが嬉しく、これも推し活っぽい感じなんだろうなとも思ったり。

それとRubyKaigiもそうだけど、“廊下"や懇親会が楽しい。 テキストエディタのコミュニティということは、ほぼ全員がVimかVim以外、何かしらの環境改善オタク。使っているVimプラグイン、作っているプラグインの話、使っているLinuxディストリビューション、そして突如Keyballがテーブルの上に広げられていたり、ネタが尽きない。

VimConf 2023 Tinyは本当に素晴らしい体験でした。次回のVimConfが楽しみです。