こんにちは、リンクアンドモチベーションでアプリケーション開発をしております。岡田です。
普段は新規のプロダクト開発で主にフロントエンドの開発をしております。
以前に記事も書いてますのでよろしければこちらも御覧ください。
link-and-motivation.hatenablog.com
先日、広木さんのこの様な記事が公表されました。 僕もテックブログの運営をしていますが、肩肘張らず普段の思考をテックブログに落としていこうと思います。
さて、現在僕は新規のプロダクト開発に携わっています。しかしまだまだ、プロダクトもチームもプロセスも黎明期です。 ライブラリのアップデートをしようと色々触っていたら、チームでnodeのversionも管理していなかったので、まずはここからだなと思いnodeのversion管理をすることになりました。
そこで諸々選定したのでそれを記載したいなと思います。
きっかけ
dependabotくん 「ライブラリのバージョン上げてね〜〜。色々溜まってるよ〜〜」 岡田 「dependabotくんがいっぱいPR作っちゃうし、ライブラリのバージョン上げていくか〜」 岡田 「まずnodeのバージョンいくつだっけ??」 岡田 「??どこにもまとまってなかったっけ??前のPJTはnodebrew使ってたのにな。。。」 岡田 「.node-versionはありそう。けど、自分が使ってるversionと違うものが書かれてるな。。。」 岡田「これはまとまってなさそうだな...」
開発者の環境を合わせて開発していくために、まずはnodeのバージョン管理ツールを入れることを決めました。
方針
- 開発者は基本的にMac OSなので、Macで動作するもの
- 使用しているversionを.node-versionやpackage.jsonなどのコードに残すことが出来るか
- メンテナンスされているかどうか
- 動作がサクサクしてストレスフリーかどうか
ぐらいの観点で見ていこうかと思っていました。
version管理ツール比較
名前 | version管理方法 | 最終commit年 | 言語 | メモ |
---|---|---|---|---|
nvm | ◯.nvmrc |
◯ 2022年 | shell | githubのスター多い。結構人気。 |
n | ◯.node-version |
◯ 2022年 | shell | インタラクティブに変更できそう。ワクワク。 |
volta | ◯package.json |
◯ 2022年 | Rust | Rustで書かれてて動作が早いらしい。名前もかっこいい。 |
asdf | ◯.node-vesion |
◯ 2022年 | shell | .tool-versions に書いたらいろいろなversion管理できそう。変な名前。 |
nodenv | ◯.node-version |
△ 2020年 | shell | 聞いたことあるけど、メンテされてなさそう? |
fnm | ◯.node-version |
◯ 2022年 | Rust | READMEの動き早!!良い感じ!?fast node manegerって名前なんだ。 |
nvs | ◯.node-version |
◯ 2022年 | JavaScript | インタラクティブに操作できるのか!面白そう! |
nodebrew | ✕ ローカル | ◯ 2022年 | Perl | 前のPJTでも使ってたけど、version管理はコマンド操作をREADMEに書いてたな。 |
.node-version
やpackage.json
を使って、version管理できるツールが多いことを知りました。。。
現段階では
でまだまだ絞りきれていません。
実行速度
では次に、それぞれの言語を見ていきましょう。
殆どが、shellで書かれていますが、voltaとfnmはRustでかかれてそうです。
実際の操作感もこちらの2つのほうが早そうなので、こちらの2つに絞りました。
今のチームにない新たな、ツールを導入するという際に重いものよりは比較的軽いものを導入するほうが受け入れやすいかなと思ったからです。
どこでversion管理するのか
チームの現状としてツールによって管理してこなかったというのもありました。
しかし、.node-version
ファイルはあるのにversion管理されてこなかった。という現実もありました。
そこで、思い切って今回はpackage.json
で管理しているvoltaに乗り換えることを決めました!!
実際に導入してからも非常に動作も早く、気に入っております。
詳しい導入手法はこちらに書いてありますので、ぜひご参照ください!
おわりに
この様なツールを選定するのはあまり経験としてなかったですが、チームのみんなに相談しつつ、選定基準と必要な背景を明確にすることが大事かなと思いました!!
この記事がどなたかの役にたてば嬉しいです。