はじめてのVimConf
はじめに
11月18日にVimConfが開催されました。今回はコロナ禍後初となるVimConfで縮小版でした。自分自身ははじめての技術系オフラインイベントで不安でしたがかなり面白い知見が多く楽しかったので記事に残そうと思います。
本文
発表について
mattnさん "Bram Moolenaar the Creator of Vim"
Bram Moolenaar氏の逝去から数ヶ月、追悼を込めてmattnさんがBram氏とVimとmattnさん自身について発表しました。おなじみVimの他にもZimbu, A-A-P, Agideなど、中々ネットサーフィンでも目にしないソフトウェアについて話されていました。今回の発表はソフトウェアデザインに掲載された記事のスピンオフになっているそうです[1]。自分が個人的にソフトウェアの歴史について興味が深いこともあるのでまたソフトウェアデザインを購入して元記事を読もうかなと思います。
当初はこのようなオフラインイベントは、技術系イベントとしてVimプラグインやスキルアップが中心と思っていましたが、この発表をはじめとしてVimConfではVimに関わる話題ならなんでも話されていてイメージが変化した良い経験でもありました。Vimに関わる話なら文字どおり何でも面白く感じられたので自分にも驚かされました。
また、初めて目にする「GitHub界のアイドル」mattnさんに緊張し、声をかけられなかったのは心残りです。発表に交えたジョークが面白かったです。ありがとうございます。
Λlisueさん "Revolutionizing Vim/Neovim Plugin Development ~ An In-Depth Look into Denops"
Denopsについて開発者であるΛlisueさん自らでDenopsについてのPros/Cons, システムについて包括的に話される発表でした。Denopsを使ったプラグイン作成の経験がなんやかんやなかったのですが、シンプルなインタフェースで通信する様子を見てプラグイン作成欲がかき立てられました。
Λlisueさんによれば、Denopsは部分的な使用を想定して作られていますが、NeovimとVim共通関数が列挙されている環境が用意されていると全て書いてしまった方が管理が楽なのでは?と思ってしまいました。といってもまだDenopsプラグインを作成したことのないエアプなので、今度何かしらプラグインを作成してみようかなと思います。プラグイン作成欲が湧くのはアイデアを得た際ですが、DenopsはNPMパッケージというアイデアの広い裾野をもたらすのでそれほどその点は困らないかなと考えています。
ゴリラさん "Looking back at vim meetup"
ゴリラさんは「ゴリラ.vim」の開催について紹介しました。発表ではゴリラ.vimの自体の紹介の他、オフライン開催する際の苦労についても話されていてゴリラ.Vimについての解像度が上がりました。
私個人はオフラインイベントに興味がある一方で敷居の高さも感じ、憧れながらも距離感を感じていたので、ゴリラさんからの「もっと気軽にオフ会をしていい」というようなキャンペーンは視野が広まった気がしました。一方でモチベーション維持周辺の苦労の話は強く共感する部分も多く、長く付き合っていかなければいけない問題なんだろうなと思いました。この発表で頻出していたキーワード "LT" で求められる発表レベルがまだ想像がつかなかったのですが、後の懇親会で行われたLTラッシュでとても楽しく親近感を感じるものと分かったので登壇自体への憧れを強めることができました。
大倉雅史さん "Developing a Vim plugin with Ruby, or when in Ruby do as the Rubyists do"
大倉雅史さんから、RubyでVimプラグインを開発することについて発表されました。Vimの組み込みで処理できる言語にRubyがありますが、Rubyを用いてプラグインを開発するといった内容でした。
結論から言うと以下の点が律速ポイントになるようです。
- 構文解析系のライブラリが言語から用意されている場合。
- LSPでするにはリッチすぎる場合。
自分個人としてはプラグイン開発にVimスクリプトの他の言語を用いるべきケースがLuaくらいしかなかったので中々新鮮な話でした。個人的にそれを用いるケースはしばらくなさそうですが、同時にユーズケースであると見極めるポイントが特に興味の湧く点でした。
kuuさん "Modern techniques for implements insert mode plugins / Why use IME within text editor?"
kuuさんから、skkeleton-vimの開発とその時に用いられたTipsについて講演されました。主にInsertモードの開発をする際に便利な関数、ブレイクスルー方法、またテキストエディタにIMEを組み込むメリットについてがテーマになっていました。
個人的に心に残っているのは読み出したキーバインドを復元することができる mapset
関数の紹介です。skkeletonのようなIMEを実装しようと考えるとアグレッシブなキーマップ操作が必要になると容易に想像がつくと思います。lang-mapの存在は以前から聞いたことがあり、eskkでそれが用いられていることは気付いていましたが、いつの間にマップの上書き方法が変化していたことにこの発表を聞いて始めて気付きました。キーマップを復元できるmapset
関数の存在は幅広く応用できそうで夢が広がりました。IME周辺の開発者の空気感も感じることができて非常に面白い発表でした。
aiyaさん "Boost your vimrc with some template techniques!"
aiyaさんから、VimScriptに関するモダンな構文についての発表でした。string-interpolationやラムダ式を始めとする最近の構文について紹介されました。string-interpolationについてはこの発表で始めて知り、既存の設定を書き換えたいなと思わされました。
これは後日譚ですが、string-interpolationを用いてプラグインを記載したところ(当然ですが)古いVimを用いている方からエラーが出たと指摘されました。新しい構文は便利ですがプラグインに積極的に用いることができないのがもどかしいですね。これらの構文が熟れることが待ち遠しいです。
懇親会
懇親会ではシャイが発動してしまったとはいえ色んな人と交流できたのが心に残る良い経験でした。学部の関係上こういった話題が共有できる友人が地域ローカルにほとんどおらず、とても楽しいひとときでした。しかしながら、重鎮の方々には流石にシャイすぎて声かけできなかったので次回以降リベンジしていきたいです。
懇親会ではLTが多数行われました。時間があれば発表させていただきたかったですが飛行機のフライト時刻の関係で早退せざるを得ませんでした。残念です……。
あとご飯がものすっごく美味しかったです。勿論VimConfが発表フェーズのみでも参加しようと思っているのですが、仮にご飯と交流会フェーズだけでもVimConfに参加したいって思えるほど美味しかったです。次回以降もお願いします。
Discussion