VSCode使いしかいないチームに新卒1年目のVimmerはどう馴染んだのか?

March 10, 2024Updated on May 12, 2024

はじめに

私は普段の開発にはNeovimというエディタを使っています。現在のウェブ開発においてエディタの主流はVSCodeであり、VSCodeを使っていれば大きな労力なしに必要な環境は揃えられると思います。現に新卒1年目の私が配属されたチームは、VSCodeを使っている人しかいませんでした。私がなぜVScodeを使わないのかについてはこちらで書いたのですが、チーム開発において支障が出ないわけではありません。そのような状況の中で私がNeovimを使うことに固執した結果どうなったかどのように馴染んでいったかを書いていきます。(思い出したら追記します。)

環境構築

チーム開発でVim(Neovim)を使用することにおいて、最初にして最大の壁は環境構築ではないでしょうか。特にSwiftやKotlinなどの言語を使用する場合、どうしてもXcodeやIntelliJ IDEAのようなIDEが必要になり、vim(Neovim)での開発をするためには相当な労力が必要になるケースもあるでしょう。幸いにして私が配属されたチームではTypescriptがメイン言語であり、Neovimでも不自由なく開発ができる環境でした。またDevContainerも使用しておらずローカルでの開発が主流であったため、環境構築にはそれほど時間を要しませんでした。Vim(Neovim)でTypescriptを用いた開発をするためのセットアップ方法については、すでに多くの先人が多くの記事を書かれているためそちらにお任せしようと思います。

VSCodeを使わずあえてNeovimを使うことを貫き通すことを選んだので、エディタの違いで業務に支障が出ることは何としても避けたいものです。ここからは入社してから1年間、チームのメンバーに指摘をさせてしまったケースを紹介したいと思います。

スペルチェッカーを入れていなかった

やらかし1つ目です。ある時レビューにて以下のような指摘を受けました。

可能であればエディタにスペルチェッカーを入れてもらえると!

………すみませんでした。

VSCodeではCode Spell Checkerという拡張機能があり、これを使うことでスペルチェックを行うことができます。こちらは特に設定を行う必要もなくインストールするだけで使えるため、特に意識せずに入れている方もいるのではないでしょうか。私はNeovimでの開発においてスペルチェックを行うためのプラグインを入れていませんでした。スペルチェックを行うためのプラグインはいくつかありますが、cspellを導入することにしました。cspellはVSCodeで使用されているスペルチェックエンジンであり、Neovimでも使用することができます。

導入は至ってシンプルで、cspellをインストールし、nvim-lintで連携するだけです。私はmason.nvimを使用しているので、Masonコマンドでインストールします。保存時にスペルチェックが行われるように設定しています。

vim.api.nvim_create_autocmd({ "BufRead", "BufWritePost" }, { callback = function() if vim.tbl_contains({ "man", "vim", "help" }, vim.bo.filetype) then return end require("lint").try_lint("cspell") end, })

また、以下の記事を参考に単語を辞書に登録するコマンドを定義しました。特に補足することはありませんが、あると便利です。

また、自分はnull-lsの後継であるnone-lsを使わずnvim-lintを使っています。このプラグインはnone-lsのように外部コマンドの機能をLanguage serverとして提供するためのラッパーとしての機能はなく、外部コマンドの結果を直接diagnosticsに追加するアプローチを取っています。そのためCodeActionを(簡単には)作成できません。none-lsは比較的アクティブに開発およびメンテナンスが行われているように見えています。Code Actionに追加されていれば、検出された単語を登録しておきたい場合に簡単に登録できるため、none-lsに乗り換えることも前向きに検討しています。

画面共有時に見づらい

やらかし2つ目です。画面共有でコードを映しながら、わからない部分の質問をしていたときです。

今どのファイル見てます?

………すみませんでした。

基本的に画面共有でコードを見せることを想定していなかったため、ファイル名の表示やカーソルの位置などは編集時の自分がわかればいいや程度にしか考えていませんでした。そのため、画面共有時には相手にとってわかりやすいような見た目になっていなかったと思います。

これを改善するために、フォーカスの当たっていない(カーソルがない)ペインを暗くするようにしました。また、カーソルの色とカーソルが置かれている行のハイライトを改善しました。とはいえペアプロやモブプロを行うタイミングなどで、他人に見てもらうこと、そして理解してもらうという観点で見れば、まだまだ改善できる点はあると思います。

さいごに

VSCodeを使えば労力をかけずに使うことができる機能も、Neovimでは1から設定しないと使えないということもあります。また、.vscodeディレクトリを共有することで簡単に設定や推奨プラグインを共有できます。個人的にはそれらを上回るメリットがあると思ってNeovimを使い続けていますが、Neovimを使うならそれらを自力で再現する必要があります。あえて違うツールを使うことを選んでいるので、これからもその点は最低限守れるようにしていきたいです。

おまけ

あまりこの言葉を借りたくはないのですが、設定させてもらえることに感謝しながらこれからも改善を重ねていきます。

❯❯❯ wc -l $(find .config/nvim -name '*.lua') | tail -n1 4014 total