11/24 01:00 2024
11/24 19:37 2024

昨日(2024/11/23)VimConf 2024に参加しました!
セッションは非常に充実した内容が多く、(Neo)Vimへのモチベーションが大きく上がる良い機会でした。
簡単ですが各セッションの感想を書きます!
Christian Brabandtさんによる、Bram以降のVimのメンテナンスについての話。Bramに不幸があってから、Vimに関わる多くのメンテナ作業を引き継ぐ必要がありました。Vim本体だけでなく、例えばホームページのリプレースやメーリングリストの運用方法など多岐に渡り、多くの知識はBramのなかにあり仕事量も凄まじく、切実に感じられました。
例えば以下のような業務があります(セッションではより多くの業務について話がありました):
Vim本体については以下のような話がありました:
Vimのメンテナンスはハードで、フルタイムの仕事のようなもの、毎日取り組まないといけないことがあるという表現もありました。またコーディング作業だけでなく健全なコミュニティの維持やコミュニティの期待に答える必要があります。
月並みですが、Vimほどの規模のOSSとBramの意思も受け継いで膨大なメンテナ作業があり、維持されていることが分かる良い機会となりました。
TJ DeVriesさんによる、Vimを通して良い開発者になれたという話。業務(電子カルテのシステム開発)では、自分との結びつきが遠い業界で、顧客理解の難易度が高く、システム開発が難しかったとのこと。医療に関わる基幹システムのため、開発フローは慎重だったそうです。
以上の業務と比較しNeovimのプラグイン開発は、顧客が自分であり、自分にとって大事でもあるため、モチベーションが維持しやすい環境でした。後方互換性もそこまで気にしなくて良く、全く新しいことが試せました。
業務でAPI設計がうまいと言われたのは、Neovimを通した試行錯誤の結果だったそうです。デザインパターンの勉強でそこまで到達はできず、複数のプラグイン開発を通して、失敗の連続の成果とのことでした。
良い開発者になるには、コーディングの遊び場を見つけることが大切です。自分にとってはそれがNeovimだったとのこと。何度も何度もアイディアを練習する場(playground)を見つけ、自分で開発し、自分が顧客となり、試行錯誤することが良い開発者になる道筋だと説明されました。
TJさんはtelescope.nvimの作者であり、私自身使わない日はないくらい依存しているので、本セッションを非常に楽しみにしていました。
telescope.nvimの作者のキャリアの話には親近感を感じました。B2B向けのサービスではどうしても顧客目線になるのは難しいものです。自分の遊び場を持つという話は、自分も小さいツールを作ったり、ブログの自作を通じて多くのことを学んだので共感がありました。
Quickfixを使いこなせていなかったので非常に参考になりました。QuickFixとLocation listの機能の違いも理解していませんでした。スライドを読みながら手元で動作を確認して身に染み込ませたいと感じました!
Vim Script自体に手を入れたり、ソースコードを追う話でした。
Cのマクロが多用されていて、LSPが使えないのでctagsを使うなど、Vimのソースコードに立ち向かうためのTipsが非常に参考になりました。かなりディープな内容でしたが、説明が分かりやすかったです!Vim本体に手を入れる際には読み返したいと感じました!
session機能についての話でした。リポジトリ毎にセッションを管理して、高速にプロジェクトを切り替える手法が紹介されていました。git worktreeを使ったTipsもあり、大変参考になりました。
自分はtmuxで複数セッション管理していて、セッション数が爆発しやすいので早速導入したいと感じました。
Local LLMを使ったソースコード補完のプラグインを作るという内容でした。Local LLMは重そうというイメージがありましたが、M1で動作可能とのこと。LLM Ollamaを使い、FIM(Fill in the Middle)に対応したモデルを使うことでソースコード補完を実現します。またVimプラグインでcopilot.vimのようなグレーで補完が先行で表示される体験をどう作るかについても参考になりました。
これからAI系のプラグインが増えてくると思うので、時代に合ったセッションでした!生成AIを少しかじっていたのでFIMという手法があることが知れてよかったです!
devcontainer.vimのVimとDev Container連携拡張の話でした。VSCode拡張の技術的な説明が図付きで分かりやすかったです。コンテナ側にVS Code Serverを入れるようで、VSCodeのSSHと似ている印象を受けました。VSCode拡張を参考にdevcontainers cliを使ったり、連携時にdocker cpでVimを転送したり、一部ファイル(ソースコード、vimrc、gitconfig、ssh)はバインドマウントを使い機能を実現しているとのことです。チーム開発でVSCodeの設定との共存(devcontainer.vim.jsonと分ける)も考慮が必要なので、うまくケアされていて良いと感じました!
チームでdevcontainerの話になると自分はVimユーザーなので会話に入らないスタンスでしたが、今後は会話に参加できそうです!
フロントエンド開発におけるプラグインの紹介でした。自分の知らないプラグインが多くあり、全て試してみたいと感じました!主な紹介プラグインは以下の通りです:
longcatの演出で爆笑しました。テンポも良く、非常に面白かったです。
Neovimプラグイン開発のTipsについての発表でした。
Neovim Luaでプラグイン開発がしたくなるセッションでした。プラグイン開発支援プラグインも多くあり、開発したくなったとき見返したい内容でした。
メモしたプラグインは以下の通りで、試したいみたい(N回目)
Fuzzy Finderの歴史や新しいFuzzy Finder fall.vimの紹介でした。
Fuzzy finderプラグインの歴史の紹介があり、その変遷が感慨深かったです:
挙動を忘れないようにするためのmapping helpやaction selector機能、サブマッチ機能など試したいと感じました。Latency over throughput(スループットよりレイテンシ)で体験を落とさないような思想もプロの仕事と感じました、、
Denoエコシステムを使い、カスタマイズがTS moduleでNPMやJSRで配信できるのは新しい試みで、TSばかり書いている私には大変ありがたく感じました!
Vim/Neovimエコシステムを支えているShougoさんのプラグインの設計思想についての発表でした。長年培った知識から作られた思想で、シャープでありながら洗練されていて、時にユニークで、会場が盛り上がったセッションでした。
設定させて頂きありがとうございます、、(ネタ抜きで)
こちらは簡単に、、申し訳ありません 🙇
お昼はすきやき弁当でとても美味しかったです!

懇談会は初参加でしたが、プロの(Vim/Neovim)merとVimだけでなくシェル、Go、Nix、LSP、ターミナルツールの話ができ幸せでした!話しくださった方ありがとうございました!
参加者の方、コンテキストが多い中での同時通訳の方、そして運営の方このような機会を設けて頂きありがとうございました✨
来年もまた参加したいなー✨
This site uses Google Analytics.