🚗

VimConf 2025 SmallでLTしてきました

に公開

はじめに

VimConf 2025 SmallでTest Your init.lua & Lua Plugins!というタイトルでLightning Talkしてきました。

Neovimで使うLuaのテストに使えるツール郡と、GitHub Actionsでカバレッジを可視化するツールの紹介です。
良かったら観てください。

https://www.youtube.com/watch?v=wEsQF3hWYDE&list=PLx8bw5NQypsn3E6x80IMpNg_2tm4b-zaY&index=13&t=774s

プログラムを書く人の中でも、テストフレームワークの選定やCIを組む人は相対的に少ないですよね。
私はLuaの知見が無いところからテストやCIを初めたので、手探りで色々試して時間がかかりました。
少しでも同じような境遇の方のお役に立てれば幸いです。

登壇駆動で行動起こすのも良いものだなと感じたので、やった事や考えていた事、感じた事を記録に残しておきます。

プロポーザルを出すまで

VimConf 2024では20分枠で登壇したので、自分の発表が終わるまでは落ち着いて他の方の発表を聴けなかった面がありました。
今年はゆっくり発表を聴くぞ、という意気込みでチケットを購入し、VimConf当日を待ち望んでいました。
しかしLTのプロポーザル募集を見ているうちに、大好きなVimConfを盛り上げたいという気持ちが強くなり、気付いたらプロポーザルを出していました。

去年の発表からあまりVim活できておらず、やったことと言えばCIの整備とmini.testの調査くらいでした。
よってテーマは自然とテストの話に決まりました。
ただVimでは使えずNeovim限定になること、Neovimユーザーの中でもプラグインやライブラリ作者向けの話になるため、聴衆を選ぶのは悩みどころでした。
octcov自体は他の分野にも応用が効くと言い聞かせて、あとは運営に選ばれたら発表すれば良いと割り切ってプロポーザルを出しました。

発表準備

プロポーザルが通ったら発表準備です。
ネタとしては選んで頂いた時点で刺さる人には刺さるだろうと割り切りです。

去年の反省として、スライド書き始めたらテーマ(見た目)を変えるのが面倒になったので、今回は最初に決めました。
Googleスライドを開くと右側にgeminiがいたので、LT向きのテーマを選んで貰おう思いました。

ありすえさんの発表ネタを推すgemini

違う、そうじゃない。それはlambdalisueさんの過去の発表テーマ(内容)だ。プロンプト難しい。
面倒なのでこのスライドと(たぶん)同じテーマ(見た目)にしました。

テーマが決まったら発表スタイルです。
VimConf2024ではIKさんがテストのLTをしていて、とても面白かったので強く印象に残っていました。
LTとして面白いので是非観てください。めっちゃ推しです。内容自体はガチなところも好き。

https://youtu.be/-wJN0r7SsMw?si=GVSsPAeEQQ7veohe&t=978

今回もテストのLTだし、スタイルを踏襲するか悩みました。
話したい事はたくさんありました。環境構築に苦戦した話、カバレッジ取得までの試行錯誤、何もしていないのにCIが壊れた話。
悩んでいる時間が勿体無いので、とりあえず銅鑼の絵だけgeminiに作らせました。

この時点でスライドは表紙と銅鑼の絵だけ。そもそも準備期間中に訪ずれる週末は2回。
今からスライド80枚作って発表準備して…となると自分には厳しいし、仮に出来たとして当日ゆっくり他の人の発表を聴いていられなくなると判断し断念。
IKさん凄いよ。

という訳で言いたいことは全部言って銅鑼スライドを表示する方向性で調整。
銅鑼鳴ってないのに銅鑼スライド出ても良いし、銅鑼鳴って銅鑼スライドだけ出しても良いよねってことで。

VimConf 2025 Small 当日

はじまるまで

今年は発表をよく聴くことを目標としてました。
去年はスクリーンが良く見えるように座席を選びましたが、今年はスクリーンよりも発表者がよく見える位置に陣取りました。
結果的にお互いの表情を見ながらQ&Aできたので、満足度が高かったです。

発表を聴いている間

みなさんの発表内容については今回は触れませんが、どの発表からも刺激を受けました。
楽しかったです。

黙って聴いているつもりでしたが、hrsh7thさんの発表後にQAタイムがあって、時間が余ってそうだったので挙手しました。
nvim-cmpほどのリポジトリであればテストやCIを健全に保つのも大変なはずで、ツール選定の理由を質問しました。
まぁ多少LTと被ってたり別の結論だったりしても、アドリブでどうにかなるだろうと思っていました。
mini.testを話をされた時はさすがにヒヤヒヤして、それ以上はいけない、それ以上はいけないと祈ってました。
しかし苦労するポイントや欲しい機能などは一致しているな、と感じて少し自信つきました。
楽しかったです。

LT

発表自体は狙い通りできました。
楽しかった。

発表後、カメラスタッフをしていたkuniwakさんに声をかけて頂きました。
ただ、この時kuniwakさんだと認識できておらず、戸惑っているうちに話す時間が無くなってしまいました。
塩対応だと思われたかなと反省。
(あとで話せたので挽回できたと信じています)

発表を控えているryoppippiに良かったよって言ってもらえたのも嬉しかったです。
この後のryoppippiの発表が凄かった訳ですが。可能性の塊でした。

懇親会

色んな人と話せて楽しかったです。
あとでvim-jp Slack見てると話せてない人もたくさんいたと気付いたので、次は話したこと無い人と如何に話すか考えたいです。

「発表良かったよー」とか「テスト書けそう」とか「銅鑼www」とか言ってもらえて嬉しかったです。
発表すると懇親会で話しやすくなるのは明確なメリットですね。

mattnさんとのジャンケン大会に勝つとサイン付きのGo言語プログラミングエッセンス改訂新版が貰えたのですが、残り9人まで残って敗退。悔しい。
いいですよ、改訂前の持ってるんでそっち読みます。

後日

LTしたらPRすることになった話

Blogを書くまでがVimConf。ということで参加しました記事書こうと思って色々振り返っていました。
hrsh7thさんとテストの話できて楽しかった。
そもそも発表内容は整理してZennで公開しようとも思っていました。
何もしてないのにCI壊れた話とか。

ここで私は気付きました。
え、もしかしてnvim-cmpもCI壊れてる可能性があるのでは。
あれ、もしかして私はそれを知りながら放置してると思われてるのでは。
という訳でバツが悪いので急いで確認してPR作りました。
差分の確認や運用負荷の増大を招かないよう、修正は最小限とする方針で作成。

https://github.com/hrsh7th/nvim-cmp/pull/2198

なんてことでしょう、私が修正してない方も壊れていました。
もちろん私のforkリポジトリでもコケてはいたのですが、名前がreleaseだったためforkリポジトリだからだろうと決めつけて中身まで見ていませんでした。
失敗。
とりあえず軽くエラーメッセージ見てaction辿ると、luarocks-tag-releaseをバージョンアップすれば良さそうなのでforkリポジトリで実験。
ただそれで正しいか自信が持てませんでした。

そんな時はvim-jp Slackの集合知を借りましょう。
ってことでポストしたらhrsh7thさんが一番に反応してくれて、見てくれるとのこと。
いやぁ、そういう手間を最小限にしたかったんですけどね。私の力不足。
futsuuuさんもすぐさま反応してくれて、依存するアクションのリリース履歴等まで辿ってくれて、対処が正しそうと教えてくれました。
futsuuuさん、あらためてありがとうございました。

なんやかんやでCIは通るようになったので良かったです。
このあとのメンテが楽になるといいな。

刺さる人には刺さった

https://zenn.dev/hrsh7th/articles/62574bf9aba252#lt%3A-test-your-init.lua-%26-lua-plugins!

うおおお、こういうのめちゃくちゃ嬉しいです。
ネタ的に対象者少ないし、対象者からしたら常識だったりして、最悪誰にも刺さらない可能性があるという不安は最後までありました。
バリバリ書いてる人にこう言って頂けるのは最高のご褒美ですね。

まとめ

プロポーザルはとりあえず出しましょう。
落ちても失うものは何も無いですし。
通ったら色々やることが増えるので怠惰な人にもお勧めです。

発表して良かったな。

GitHubで編集を提案

Discussion