@ryoppippi

neovimconf 2024 & vimconf 2024 狂想曲

9 Dec 2024 ・ 27 min read


本記事は​ Vim advent calendar 2024(Adventar) の​ 9 日目の​記事です。

2024年11月19日にneovimconf 2024にて、​11月23日にvimconf 2024にて登壇を​しました。

本記事では​登壇の​経緯や​登壇で​伝えたかった​こと、​登壇後の​感想などを​まとめています。

Note

これまで​このような​記事は​zennに​書いていましたが、​今回初めての​試みと​して​自身の​ブログに​書いています。 感想等を​ Twitter や​ Bluesky にて​投稿していただけると​励みに​なります (ページの​下部に​投稿用の​リンクが​あるので、​そちらから​投稿していただけると​嬉しいです)。

Warning

neovimconf は​オンラインイベントであり、​また​当日の​配信には​移動の​関係で​参加できなかった​ため、​登壇の​反応を​見る​ことがいまだに​できていません。 その​ため、​感想に​ついては​ vimconf での​体験を​中心に​書いています。

また、​他の​登壇者の​方々の​発表も​とても​面白かったので、​是非とも​動画で​ご覧に​なってください。

TL;DR

  • すっげー大変だった
    • 計画性を​持ちましょう
    • 依頼を​受けるのも​断るのも​計画性が​必要
  • オフラインイベントの​楽しさを​再認識

発表資料

以下に​発表資料と​動画の​リンクを​貼って​おきます。 是非とも​ご覧ください。

vimconf 24 (23rd, Nov)

slides video

neovimconf 24 (19th, Nov)

slides video


本記事の​読者、​vimconf/neovimconf 参加者へ​伝えたい​こと

まず、​発表を​聞いていただいた方、​イベント運営の​皆様、​スポンサーの​皆様に​感謝の​意を​表します。​priceless な​体験を​させていただき、​本当に​ありがとう​ございました。

vimconf の​前後にも、​共同で​宿泊したり、​イベントを​企画したり、​夜な​夜な​語り合ったり、​とても​楽しい​時間を​過ごすことができました。 自分は​普段東京には​おらず、​オンライン中心の​コミュニケーションが​ここ数年ほとんどを​占めて​いたのですが、​改めて​オフラインイベントの​楽しさを​再認識しました。

発表に​ついて

登壇すると​いう​こと

自分は​元々​人前で​話すことが​大好きです。

中高大の​10年間、​落語研究部に​所属していました​(自分の​大学に​落語研究部が​なかったので​立ち上げた​くらいです)。 また、​中高時代は​ Steve Jobs の​プレゼンや​ TED Talks を​毎日のように​みていました。

しかし、​2020 年以降、​伝染病の​影響や​自分が​ UK に​引っ越してしまった​ことも​あり、​オフラインでの​イベント参加が​無くなってしまいました。

その​ため、​今回の​ vimconf は​久しぶりの​オフラインイベント参加であり、​また​大勢の​前で​話すことができる​ことを​楽しみに​していました。

vimconfでの​登壇に​際して​心がけていた​こと

まず、​登壇者と​して、​登壇を​組み立てる上で​以下の​ことを​念頭に​置いていました。

  • みんなは​高額な​チケット代を​払ってきている
    • 自分は​旅費が​出ている
    • 高額な​チケット代を​払ってない
  • vimconfは​普通の​カンファと​違って講演の​取捨選択権が​ない、​つまり​全部の​講演を​強制的に​聞かされる
  • 審査で​落ちた​人も​いる​中、​初めて​出した​プロポーザルが​通ってしまった​(運要素も​少なからず​あるとは​思っている)

その​ため、​内容的にも​面白さ的にも​妥協する​ことは​自分の​中では​許されないと​考えていました。

とは​いえ、​頑張りすぎた​感も​ありますが。

また、​ユーモアを​忘れず​聞いている​人​最大限が​楽しめるような​内容に​する​ことを​心がけました。 よく​ある​ミームを​入れたり、​コント仕立てにしてみたり、​会場を​盛り上げたり…。 結果と​して、​自分に​しかできない​発表に​なったのではないかと​思います。 そうだと​いいな。

登壇後の​反応

vimconf での​発表が​想像以上に​盛り​上がった​こと、​講演中の​たくさんの​感想コメントを​投稿していただけた​こと、​懇親会で​たくさんの​方とお話し​できた​こと、​本当に​嬉しかったです。

自分と​しても、​とても​多くの​時間を​割いて​準備を​してきたので、​それが​報われた​と​感じています。

着物での​登壇も​好評で、​多くの​方から​「着物が​似合っている」と​言っていただきました。​ここ数年着物を​着る​機会に​恵まれていなかったので、​人前で​着物を​着る​ことができてとても​嬉しかったです。

(正直登壇中の​ことは​ほとんど​覚えていないのですが、​動画が​公開されるまでの​間は​ twitter や​ vim-jp slack で​皆さんが​投稿してくださった​実況を​みて​毎日​ニヤついておりました)


発表までの​時系列

以下は​発表までの​時系列を​簡単に​記した​ものです。 お時間が​ありましたら​みていっていただけると​嬉しいです。

31st, Aug

遡る​こと2024年3月、THINCA さんと​ご飯に​行った​時に、​「vimconf に​登壇すると、​交通費も​チケット代も​出ますよ。​ぜひプロポーザルを​書いて​応募してみてください」と​言っていただきました。​その​ため公募が​開始されたらと​応募していなーとは​漠然と​思っていました。​また、​ vimconf 23 tiny に​参加できなかったので、​今年こそは​参加したいとも​考えていました。

とは​いえ、​やはり​プロポーザルを​書くのは​面倒で、​しかも​直近で​なかなか​ vim 活が​できていなかったので、​後回し後回しに​なっていました。

やはり​書こうと​決心したのは​8月最終日、​締め切り6時間前でした​(GMT 10:00)。​学生時代は​夏休みの​宿題は​1学期の​終了式の​日に​全て​学校で​終わらせてしまう​タイプだったのに、​どこで​道を​踏み外したのか…。

正直、​ネタ出しから​悩みました。​自分は​ Neovim を​ガッツリ​使っているし plugin も​少し​書いている​ものの、​自分にだけ話せる​ネタは​あるのか?と。

考え抜いた​結果、​自分の​普段の​ Web Frontend 開発の​ workflow に​ついて​話すことにしました。 自分が​あえて​ Neovim を​使う​理由、​VSCode との​違い、​Neovim での​開発フローに​焦点を​当てたプロポーザルを​提出しました。

提出した​プロポーザル

Title

Neovim for Frontend Developers: Boosting Productivity and Creativity

Abstract

In the world of frontend development, VSCode currently reigns as the mainstream editor. However, Neovim, with its high customizability and lightweight nature, has the potential to provide a development experience that rivals or even surpasses that of VSCode.

This presentation will explain specific methods for utilising Neovim in frontend development and discuss its advantages compared to VSCode. We will explore how to overcome Neovim’s potential weaknesses, how to construct Neovim-specific development workflows, introduce practical coding techniques, and provide know-how on maximising the benefits of choosing Neovim, including integration with AI-powered code generation.

Participants will learn how to optimise Neovim for frontend development, from effective configuration to building next-generation code completion systems using LSP and AI, and even innovative browser integration. We will also introduce Neovim-specific development flows, such as rapid coding techniques using macros and snippets, and efficient task execution through close terminal integration.

Furthermore, we will explain methods for integrating AI tools like GitHub Copilot and Ollama, exploring new possibilities in code generation and refactoring.

The presentation will conclude with a live demonstration of a development workflow using an actual frontend project, showcasing efficient project construction methods utilising Neovim’s editing techniques and plugins.

Through this presentation, attendees will learn how to achieve a development experience superior to VSCode using Neovim, gaining concrete skills and knowledge to significantly improve productivity in frontend development. We will demonstrate practical solutions that maximise Neovim’s potential and meet the demands of modern frontend development.

Self-promotion for Reviewers

I have the following experience and contributions:

  • Experience in large-scale frontend project development using React, TypeScript, and Svelte
  • Introduction and mastery of Neovim plugins as alternatives to existing VSCode Extensions
  • Showcasing Neovim’s advantages over VSCode (macros, snippets, faster editing operations, terminal integration)
  • Construction of advanced code completion systems utilising LSP (Language Server Protocol) and AI

I plan to undertake the following initiatives in the future:

  • Development of a plugin to recreate VSCode’s workspace functionality in Neovim
  • Integration with LSP-related features
  • Enhancing development efficiency by strengthening interaction between frontend (browser-based systems) and Neovim
  • Integration of AI-powered code review support tools with Neovim

Lecture Content

This lecture will cover the following topics in detail:

  1. Basic Neovim Configuration and Customisation for Frontend Development

    • Effective configuration methods for dotfiles
    • Selection and setup of plugins specialised for frontend development
  2. Methods to Recreate VSCode’s Key Features in Neovim

    • Implementation of file tree, search, and Git integration
    • Code completion, diagnostics display, and automated problem-solving through LSP integration
    • Effective integration with code generation AI such as GitHub Copilot/Ollama
  3. Frontend Development Workflow Leveraging Neovim’s Strengths

    • Rapid coding techniques using macros and snippets
    • Efficient task execution through close integration with the terminal
  4. Next-generation Code Completion and Generation System Utilising LSP and AI

    • Building advanced code completion systems combining LSP and AI
    • Automatic code generation and refactoring utilising code generation AI
    • Incorporating AI into Git workflows
  5. Strengthening Browser and Neovim Integration

    • Bidirectional communication between Neovim and browser using browser extensions
    • Realising an interactive development environment with real-time display of debug information
  6. Practical Demonstration

    • Demonstration of development workflow using an actual frontend project
    • Demo of efficient project construction methods using Neovim’s editing techniques and plugins

Through this lecture, participants will learn how to achieve a development experience surpassing VSCode using Neovim, gaining skills and knowledge to significantly improve productivity in frontend development. We will present concrete methods to maximise Neovim’s potential and meet the demands of modern frontend development.

Pitch for Reviewers

登壇者に​ついて

  • Neovim 歴は​2022年から​数えて​3年目
  • 普段は​フロントエンドの​開発が​メイン
    • React、​TypeScript、​Svelteを​使用した​大規模フロントエンドプロジェクトの​開発経験
  • いく​つかの​OSSに​貢献したり、​自分​自身も​OSSを​リリースしたりしている
  • 簡単な​Neovimの​プラグインを​作りリリースしたこともある
  • vim駅伝や​zennなどで​頻繁に​以下のような​記事を​書いている
    • Neovimの​設定
    • Neovimを​使った​フロントエンド開発
    • VSCodeに​存在する​Extensionの​代替と​なる​Neovimプラグインの​紹介、​使いこなし方
    • ブラウザで​動いている​ツール等、​一見Neovim/Terminalと​相性が​悪いと​される​ものを​Neovimと​連携させる​方​法
  • LSP (Language Server Protocol) と​AIを​活用した​高度な​コード補完システムや​コード生成技術を​開発フローに​導入している

なぜ発表を​行いたいのか

自分は​フロントエンド開発に​入門して​1年ほどで、​VSCodeから​Neovimに​乗り換えると​いう、​世間でも​珍しい​選択を​しました。 初心者ながらに​何も​わからないまま​乗り換えたので​最初は​とても​苦労しましたが、​時間を​経る​ごとに​新しい​Neovimの​操作や​設定を​覚えていく​に​つれて、​自分の​作業効率が​上がっていくのを​実感できました。 しかし、​世間一般では​(特に​フロントエンド開発者の​間では)VSCodeが​主流であり、​Neovimを​使っている​人は​少数派です。​その​ため、​ツールの​サポートが​どうしても​遅れがちであり、​情報も​少ないと​いう​ハンディーキャップを​背負っています。 また、​AIを​活用した​ツールも​VSCode Extensionが​先行して​リリースされる​ことが​多いです。 その​ため、​利便性では​一見劣るように​見える​Neovimですが、​個人的には​VSCode以上の​開発体験を​得られています。 vimconfでの​発表である​ため、​聴衆の​方々は​Vim/Neovimを​メインで​使っている​方が​多いと​思われます。​その​ため、​Neovimでも​フロントエンドの​開発は​十分に​行える​ことを​知って​もらい、​安心して​これからも​Vim/Neovimを​使い続けて​もらいたいと​いう​思いから​発表を​行いたいと​考えています。

確度を​上げる​ためには​複数プロポーザルを​提出する​ことが​望ましい​ことは​わかった​上で、​今回は​1つだけで​応募しました。 採択されるのは​運だろうと​思う​一方、​Workflow を​ demonstrate する​形式は​過去の​発表を​みても​ほぼないため、​新規性が​あるだろうと​いう​考えも​あり、​謎の​自信だけは​ありました。

8th, Sept

プロポーザル提出から​1週間後、​acceptance notification を​受け取りました!

来日決定!​嬉しい!

と​同時に、​やばい、​やばい、​やばい、と​いう​気持ちが​襲ってきました。

プロポーザルは​本当に​ざっくりと​した​アイデアを​書いただけで、​実際に​どうやって​話すのか、​どうやって​デモを​するのか、​どうやって​時間を​使うのか、​全く​考えていなかったのです。

10th, Oct

スライドどうしようかな〜〜〜と​考えている​最中、​突然、​以下のような​メールが​届きました。

Hi Ryotaro!

How are you?

My name is Adam. I'm one of the co-organizers of neovimconf.live along with the primeagen and TJ DeVries.

I saw the talk you're going to give at Vimconf this year and think the subject matter is super compelling. Would you also be interested at presenting at Neovimconf this year as well?

Our event is going to be in November this year, so I know that may be last minute for you. Its a virtual event and we ask speakers to pre-record their talks so that we can avoid any network connection issues in case streaming live has issues.

Happy to chat if you're interested!

お、​内容か​ぶっても​いけるなら​お得じゃないか!と​思い、​快諾しました。

ただ、​安請け合いを​する​もんじゃなかった…。

Adam さんは​結構​おい​そが​しいようで、​1週間に​1回くらいの​ペースでしか​メールの​やり​取りが​できませんでした。 その​ため、​最後の​方に​全てが​ギリギリに​なり大変な​ことになります。

15th, Oct

vimconf の​スライド作成を​開始。​初めて​ slidev を​使ってみました。

アウトラインを​改めて​考え直し、​スライドの​構成を​決めました。

slidev は​アニメーションを​凝るだけ​凝れてしまうので、​どうしても​時間が​かかってしまいました。 スライド作成だけで​ 50時間くらいは​かかっているのではないでしょうか。 その分、​出来​上がった​スライドの​クオリティは​高い​ものが​できたので​苦労は​報われました。

その後、​内容を​主に​ UJIHISA さんに​レビューしていただきました。

23rd, Oct

なんとか​ vimconf に​初稿を​提出…

30th, Oct

やっと​ neovimconf の​ Discord に​参加できました。

ここで​ neovimconf への​登壇が​正式に​決定しました。

vimconf の​スライドを​一部​流用して​ neovimconf 用の​スライド作成を​開始。

7th, Nov

neovimconf の​動画収録を​終え、​first draft の​映像を​提出。 収録中に​噛んだり​止まったら​その​都度取り直しを​していた​ため、​かなり​時間が​かかりました。

14th, Nov

Adam さんから​ neovimconf の​改善点が​送られてくる。

(おい​おい、​on air は​来週だよ…​)

17th, Nov

neovimconf 用の​動画の​デモパートを​修正、​再収録。 全体を​再収録し直そうと​していたが、​音質に​差が​出たり​諸々の​問題が​あった​ため断念。

18th, Nov

Adam さんから​ neovimconf の​動画に​ゴーサインが​出る。​やっと​ neovimconf の​作業が​終わる。

19th, Nov

電車および​飛行機での​移動。​家を​出てから​東京の​居候先に​到着するまでの​時間は27時間でした。​今年の​ vimconf 参加者の​中では​最も​遠くからの​参加だったのではないでしょうか。

今年初の​積雪が​あった​ため、​家から​Heathrow までの​移動は​本来は​高速鉄道3.5時間の​ところ​1時間遅れて4.5時間と​なるなど、​移動中に​いく​つかの​トラブルが​ありました。

Heathrow からは​ LOT Polish Airlines での​移動でした。​最初の​便は​30分​遅れだった​ものの、​Warsaw での​乗り​継ぎが​とても​楽だったので​総じて​体験は​よかったです。​値段も​手頃で、​機内​食も​美味しかったのでまた​利用しようと​考えています。

移動の​最中には​ neovimconf の​配信が​行われていました。​見たかったなー。​日本時間でも​深夜だったので、​リアタイできた人は​本当に​少なかった​そうです。 とりあえず​無事に​配信された​ようで、​とても​安心。

20th, Nov

成田着、​30時間ぶりの​風呂!​日本食を​居候先で​振る​舞っていただく。​美味しかったです。

21st, Nov

時差ボケと​格闘開始。​某企業の​コーディング試験が​あったので、​それに​取り組む。

22nd, Nov

丸一日​ THINCA さん​御一行と​謎解き。​朝10時集合、​解散9時。​楽しかった!けどへと​へとです。

その後、​参加者有志で​借りていた​ AirBnB に​移動。​おしゃべりが​とても​楽しかったです。

23rd, Nov

vimconf 当日。​着物を​着て​会場へ​向かいました。 久しぶりの​着物で、​久しぶりの​オフラインイベントで、​テンションMaxでした。

発表に​ついては​先に​述べた​とおりです。

本当に​楽しかった。

24th, Nov

vimconf 翌日、​サブイベと​して​ AirBnB で​スマブラ大会を​主催。​見事優勝しました。 夜に​やった​桃鉄で​ LAMBDALISUE さんに​負けました。​俺は​ありすえを​許さない…。

25th, Nov

AirBnB を​チェックアウト。​マンスリーマンションへと​移動。 夜は​ 2KABHISHEK 送別会を​開催。​とても​楽しかった。

(時差ぼけと​興奮で​ここまで​1週間くらい​毎日​3時間しか​眠れてなかった。​お祭りすぎる​)


反省点

最後に、​登壇に​関して​反省点を​挙げて​おきます。

  • 個々の​パートに​ついては​練習が​できていたのだが、​実の​ところ​一度も​通し練習を​できなかった
  • デモは​時間との​勝負だった​ため、​割と​ぶっつけ本番だった。​もっと​練習すべきだった
  • 全体の​進行の​関係で​開始時間が​遅れていた​ことを​考慮に​入れず​(確か​3分くらい​遅れていたらしい​)、​デモの​最中に​焦って​内容を​一部​削ってしまった
    • 特に​ text object 系の​発表を​抜かしているので、neovimconf での​デモを​参照してください!
    • vimconf、​neovimconf ともに、​ UGA-ROSA さんの​ ccc.nvim への​言及を​忘れてしまいました。CCCPick よく​使っております。 CCCPick
  • 実は​焦って​削った​内容には​いく​つか​ジョークが​含まれていたので、​披露できず残念
  • 直前で​ neovimconf の​スライドを​一部​流用した​ため、​最後の​スライドに​登場する​予定だった​ UHOOI さん​ロゴが​消えてしまった。​その​分​焦ってしまいも​たついてしまった
  • 英語の​問題だが、​gap filler が​多い。​もっと​スムーズに​話せるようになりたい
  • 声が​でかい、​もう​少し​落ち着いて​話したい
  • 単純に​スケジュール無茶すぎた

終わりに

vimconf に​登壇できた​こと、​neovimconf にも​登壇できた​こと、​本当に​嬉しく​思います。 運営の​皆様、​登壇の​背中を​押してくれた​皆様、​当日盛り​上がっていただいた​皆様、​本当に​ありがとう​ございました。

Christian 先生や​ TJ の​ Keynote 、​他の​登壇者の​方々の​発表も​とても​刺激に​なりました。 この​ブログを​書きながら​公開された​動画を​見ているのですが、​学びが​とても​多いです。​現地で​参加できて本当に​よかったです。

また​ vimconf を​通して、​人前で​喋りたい欲、​登壇欲が​再燃しました。​また​意外と​英語の​発表も​楽しいと​感じました。​UK に​帰ったら​登壇の​機会を​増やしていきたいと​思いました。

来年以降も​ vimconf には​登壇したいと​思っています。​また​会いましょう!

P.S.

先日​公開された​ vim-jpラジオの​エピソードでも、LAMBDALISUEさんに​「りょっぴっぴは​無謀」と​言われてしまった。​実際無謀だった。

vimconf および​ neovimconf の​疲れが​抜け切るのに​2週間かかった。​あまりにも​無茶を​した。 ただ、​その​分だけ​楽しい​時間を​過ごすことが​できた。​一生​忘れない​思い出に​なりました。 皆様に​感謝!

あ、​12月後半の​ vim-jp ラジオに​出演します! ​お楽しみに​!

comment on bluesky / twitter
CC BY-NC-SA 4.0 2022-PRESENT © ryoppippi