🦔

それ、Volta で解決しませんか?

2023/04/17に公開

自己紹介

こんにちは、駆け出し web エンジニアのです。
現在は都内の SES 企業で働いております。
自分の担当領域は基本的にフロントエンドですが、バックエンドの開発を行うこともあります。

最初にプログラミングに興味を持ち始めたのは緊急事態宣言がきっかけでした。
遊び感覚で始めた Progate が楽しくて、いつの間にか仕事にしたいと思い始めて今に至ります。
おわかりいただけましたでしょうか?エンジニアとして仕事を始めてからまだ 1 年も経っていないレベルです笑

拙い文章ではありますが会話を交えながら書いていこうと思うので、お読みいただけると幸いです!

登場人物

柿: 筆者
上司: チームリーダー

現場での問題

〜 実装スタートしてから 3 日後 〜

上司: 「柿さん、Node16 のサポート切れるってよ!どうしよう!」

柿: 「あー、そうですね。なんか焦ることなんてあるんですか?」

上司: 「うちのプロジェクト Node のバージョン 16 みたいなんだよ。」

柿: 「えっと、、自分がこの PJ 入ったときには 18 入れてって指示受けたんですが、、。」

上司: 「うん?ってことは、みんなローカルの環境はバラバラなのか、、。」

柿: 「そういえば Node のバージョン管理についてはなんにも言ってなかったですね。どうしてるんですか?」

上司: 「してない」

柿: 「ん?」

上司: 「してないよ。そんなことできるの?」

柿: 「できるんですよこれが」

上司: 「 神か!!!!! ちょっと主導で進めてくれんか」

柿: 「えっと時間が、、、」

上司: 「ラーメン食わす」

柿: 「 やります

まとめ

ということで、この現場での問題は大きく分けて2つ。

  1. Node のバージョンをあげたい。
  2. バージョンの管理をしていないので、揃えたい

でした。

これらを解決するために、小さな脳味噌で考えた結果、Volta を導入してみようと思いました。

Volta ってなんだ?

柿: 「そうだ、Volta使おう」

上司: 「どんなやつなんだ?」

柿: 「2020 年の終わりに公開された割と新しめの管理ツールですよ」

上司: 「いわゆるモダンってやつだな」

柿: 「言いたいだけですか?」
柿: 「特徴としては、」

  • Rust 製なのでなんか速い
  • プロジェクトメンバー全員が環境を揃えられる
  • OS が違っても共通のコマンドが使える
  • Node だけではなく、yarn や npm も管理できる

柿: 「この 4 つです」

上司: 「ええな。」

柿: 「割とメンテナンスも頻繁に行われているみたいですよ」
https://github.com/volta-cli/volta

上司: 「ちなみにこれは MacOS 限定なのか?」

柿: 「いえ、Windows と MacOS、さらには Linux にも対応していますよ」

上司: 「ええな。」
上司: 「ちなみにどうやってみんなバージョンが分かるようになるんだ?」

柿: 「ああ、package.jsonに記載されますよ」
柿: 「そこでyarn installなどのコマンドを打てば、プロジェクトによってバージョンを変えるってこともできるんですよ」

上司: 「ええな。」

柿: 「ええな bot になってないか?」

上司: 「よし、じゃあ早速導入していこうか。」
上司: 「どうやるん?」

まとめ
  • Volta は比較的最近公開された Node のバージョン管理ツール
  • Windows や MacOS、さらには Linux にも対応している
  • バージョンはpackage.jsonに記載される
  • Node だけじゃなく、yarn や npm も管理できる
  • プロジェクトが異なっていても、package.jsonに記載されていれば、yarn installnpm installを打つだけで、自動的にバージョンを変えることもできる

Volta を導入していこう

柿: 「じゃあ早速導入していきますね!」
柿: 「まず、Volta をインストールする前に」
柿: 「すでに Node.js や他のバージョン管理ツールはアンインストールしておいてほしいです。」
柿: 「競合されると困るんで一応。」

上司: 「一応、それ大事だな」

柿: 「じゃあ、公式のインストール方法に従ってインストールしていきますね。」
柿: 「MacOS と Windows でインストール方法が違うので、別々に説明していきますよ」

MacOS

柿: 「MacOS の場合は、ターミナルで以下のコマンドを実行してください。」

ターミナル
curl https://get.volta.sh | bash

上司: 「 shellzsh とか fish の場合でも大丈夫か?」

柿: 「大丈夫ですよ。」
柿: 「bash,zsh,fishは上のコマンドでインストールできます」
柿: 「なんなら自動でパスも通してくれるんで!」

上司: 「私より頭がいいみたいだな」

柿: 「あ、はい」
柿: 「インストールが終わったら一旦ターミナルを再起動してください」

上司: 「じゃあ、再起動してみる」

柿: 「再起動したら、このコマンドを実行してください」

ターミナル
volta -v

柿: 「こんな感じでバージョンが表示されれば、インストールは完了です。」

ターミナル
volta -v
> 1.1.1

上司: 「え、終わり?」

柿: 「はい、終わり」

上司: 「簡単なんだな・・・。」
上司: 「じゃあ、次は Windows だな」

Windows

柿: 「Windows の場合も、公式のインストール方法に従ってインストールしていきますね。」

柿: 「まずは開発者モードを ON にしてください」

上司: 「開発者モード、かっこいい名前だな」

柿: 「こちらのような WEB サイトを参考にしてください」

https://aprico-media.com/posts/2397

柿: 「開発者モードを ON にしたら、公式ページのリンクをクリックしてください」

https://docs.volta.sh/guide/getting-started

柿: 「download and run the Windows installer
柿: 「というリンクが有ると思うんで、そこをクリックしてください。」

上司: 「どのへんだ?」

柿: 「Windows Installationっていう小見出しのところです」

上司: 「あ、あった」

柿: 「そこをクリックすると、インストーラーがダウンロードされるので、ダウンロードが終わったら実行してください」

上司: 「できたで」

柿: 「そうしたら、コマンドプロンプトなどで以下のコマンドを実行してください」

cmd
volta -v

柿: 「こんな感じでバージョンが表示されれば、インストールは完了です。」

cmd
volta -v
> 1.1.1

上司: 「Windows でも簡単だったな」

柿: 「はい、心配しなくても大丈夫です」
柿: 「じゃあ、次は Node.js をインストールしていきましょう」

まとめ
  • 導入前に、Node.js や他のバージョン管理ツールはアンインストールしておく。
  • MacOS はターミナルで以下のコマンドを実行する。
    • curl https://get.volta.sh | bash
  • Windows はまず開発者モードを ON にする。
    • 公式ページのリンクをクリックしてインストーラーをダウンロードして実行する。

Node.js をインストールしていこう

柿: 「じゃあ、Node.js をインストールしていきましょう」

上司: 「ついにきたな。」
上司: 「じゃあ、どうやってインストールするんだ?」
上司: 「コマンドでやるんだな?」

柿: 「お見通しですね」
柿: 「下記コマンドを実行してください」

ターミナル
volta install node

柿: 「これでインストールできました。」

上司: 「はや!」

柿: 「じゃあ、インストールされた Node.js のバージョンを確認してみましょう」

ターミナル
node -v
> v18.15.0

柿: 「最新のバージョンがインストールされていることが確認できましたね」
柿: 「16 系がインストールしたい場合は、」

ターミナル
volta install node@16

柿: 「というようにバージョンを指定してインストールできます」

上司: 「バージョン指定できるんだな」
上司: 「これは便利だ」

柿: 「では次に yarn をインストールしていきましょうか」
柿: 「以下のコマンドを実行してください」

ターミナル
volta install yarn@1

柿: 「これで yarn の 1 系 がインストールできました」

上司: 「Windows でも Mac でもコマンドが同じなのは便利だな」

柿: 「では次はプロジェクトでのバージョンを固定していきましょうか」

まとめ
  • インストールはコマンド操作で行う
    • volta install node で Node.js をインストールできる
    • volta install node@16 で Node.js のバージョンを指定してインストールできる
    • volta install yarn@1 で yarn の 1 系をインストールできる

プロジェクトでのバージョンを固定していこう

柿: 「どうやってバージョンを明記して揃えるか、覚えていますか?」

上司: 「えーt」

柿: 「package.json でしたね

上司: 「そ、そうでした!」
上司: 「もしかして手書きか?」

柿: 「いえ、これもコマンドでやります。」
柿: 「予め固定したいプロジェクトのディレクトリにcdコマンドで移動しておいてください」
柿: 「移動できたら、以下のコマンドを実行してください」

ターミナル
volta pin node

柿: 「これでpackage.jsonを見に行ってみてください」

package.json
{
  "volta": {
    "node": "18.15.0"
  }
}

柿: 「voltaの中にnodeというキーがあり、その値が18.15.0となっていることが確認できますね」
柿: 「これで、このプロジェクトで使用する Node.js のバージョンが固定されました」

上司: 「なるほど、あっさりだな」
上司: 「じゃあ、yarn も固定してみよう」
上司: 「コマンドはこうか?」

ターミナル
volta pin yarn@1

柿: 「はい、その通りです」
柿: 「では、package.jsonを見てみましょう」

package.json
{
  "volta": {
    "node": "18.15.0",
    "yarn": "1.22.17"
  }
}

柿: 「voltaの中にyarnというキーがあり、その値が1.22.17となっていることが確認できますね」
柿: 「これで、このプロジェクトで使用する yarn のバージョンが固定されました」
柿: 「このようにpinを使うと固定することができます」

上司: 「これでinstallすればローカル環境にこのバージョンがインストールされるんだな」

柿: 「はい、これでみんな揃いますね!!」

上司: 「助かった!!」
上司: 「やっとスタート地点に立った気分だよ」

柿: 「頑張って実装しましょうね!WBS 破綻してますけど」

上司: 「ハハ(白目)」

まとめ
  • volta pin コマンドでバージョンを固定できる

おわりに

以上、いかがでしたでしょうか?

Node.js のバージョン管理ツールとしては、nvmnodenvなどがありますが、voltaはこれらとは違い、プロジェクトごとにバージョンを固定できるという特徴があります。

voltaを使うことで、プロジェクトごとにバージョンを固定することができるので、プロジェクトごとにバージョンを揃えることができます。

また、voltanpmyarnのパッケージ管理ツールとも連携しているので、voltaを使うことで、npmyarnのバージョンも固定することができます。

ぜひ皆さんも使ってみてください!

なにかここがおかしい、といった部分があればぜひコメントをお願いします。

ではまた次の記事でお会いしましょう!

GitHubで編集を提案

Discussion