はじめに
Node.jsのインストールについて、公式ページではコマンドで実行する方法とインストーラーを利用する方法の2通りが紹介されているのですが、「簡単そうだしインストーラーの方でいいかな」と思っていました。
ところが、あとになってコマンドで実行した方がよかったなと思ってしまい、結局アンインストールしてコマンドでインストールをやり直しました。
両者の違いと、コマンドでのインストールで分かりにくかったところなどを詳しく解説していきます。
環境
Mac:MacBook Air M4/macOS Sequoia 15.7
コマンドでのインストール時
・Node.js:v24.11.1
・npm:v11.6.2
・nvm:v0.40.3
インストーラーでのインストール時
・Node.js:v22.21.0
・npm:v10.9.4
再インストールした関係で、コマンドの時とインストーラーの時とでバージョンが異なっています。
コマンドとインストーラーの違い
公式のダウンロードページ を開くと、以下のようになっています。
コマンドの場合とインストーラーの場合の2通りのインストール方法があります。

両者の違いは、ページの右上に「nvm」という選択肢がありますが、これがあるかないか、になります。
コマンドの方では1行目に「nvmをダウンロードしてインストールする」と記載しており、その次のコードでnvmのインストールが実行されます。
一方、以下はインストーラーでのインストールが完了したときの画面になりますが、Node.jsとnpmはインストールされているもののnvmはインストールされていないことが分かります。

バージョン管理ツールについて
上記では「nvm」の場合で説明しましたが、ここには以下のように複数の選択肢があります。

これは「バージョン管理ツール」というものの選択肢になります。
Node.js で開発をする際に、「このプロジェクトは Node.js はこのバージョンにして欲しい」と指定されることがあります。
私がインストーラーで直接インストールしてしまった際のバージョンは「v22.21.0」でしたが、それ以外のバージョンは使えず、別のバージョンで開発して欲しいという要望に対応できません。1度アンインストールして、指定されたバージョンを再インストールするしかないです。
インストーラーではマシンに直接インストールされますが、nvmなどのバージョン管理ツールを利用した場合、バージョン管理ツールに Node.js が紐づいているような形になり、複数のバージョンの Node.js をインストールしておくことが可能になります。
そしてプロジェクトによって Node.js のバージョンを切り替えることも容易になります。
バージョン管理ツールには複数の選択肢があり、どれを選択すればよいのかについてはけっこう悩みました。決め手に欠けて、人の好みによってどれがよいか意見もバラバラという印象でした。
ざっと調べたところだと、以下のような特徴があるようです。
| nvm | Node Version Manager。GitHubのスターが最も多く、利用者も多い。 |
| fnm | Fast Node Manager。高速なバージョン切り替えを実現。nvmライクなコマンド。 |
| Docker | バージョン管理とは少し用途が違い、環境全体をコンテナで管理するもの。 |
| n | コマンドがシンプル。 |
| Volta | 高速。Node,jsだけでなくnpmなど幅広くバージョン管理ができる。 |
なお、選択肢には「公式」と「非公式」という表示がありますが、Node.js として公式に推奨するためにそれなりのドキュメントやサポートがあるかどうかの違いになるようです。アップデートが止まっているようなものはリスクがありますが、非公式だから避けた方がよいというわけではなさそうです。
私は結局は、もっともベーシックだし利用者やドキュメントも多い「nvm」を選択しました。
コマンドとインストーラーどちらがよいか?
コマンド(バージョン管理ツールを導入)の方がよいケース
・プロジェクトでどのバージョン管理ツールを使うべきか指定された場合
・すでにバージョン管理ツールがインストールされている場合
・現時点でバージョン管理する必要がある場合
・学習としてバージョン管理もやってみたい場合
インストーラーの方がよいケース
・まずは簡単にNode.jsをインストールして使ってみたい場合
・バージョン管理の必要性を今はそれほど感じていない場合
はじめの段階できちんと環境を作っておいた方がよいのかなという気もしましたが、色々考えてよさそうなバージョン管理ツールを選んだとしても、プロジェクトによってバージョン管理ツールを指定されることもあるようです。その場合は改めて環境構築が必要になります。
ただ、初学者のうちはバージョン管理ツールが必要な場面はそれほどなく、そしてバージョン管理ツールを変更しなければならないような場面はもっとないはずです。必要以上に気にしなくてもいいかと思います。
環境構築をやり直さなくてよいように完璧を目指すよりも、バリバリ開発するようになったら環境の変更は発生し得るものだと思っておいた方がよさそうです。
コマンドでインストールする手順
ここからは具体的に、コマンドでインストールする手順を説明します。
● 公式のダウンロードページ を開きます。
● OSは、この記事ではMacのインストールについて説明しているため、「macOS」を選択します。

● バージョンは、特に理由がなければ最後に (LTS) と書かれたもののうち最新のものを選択します。

LTSは「Long Time Support(長期的にサポートするバージョン)」になります。(Current)は最新の機能が追加されているものになりますが、安定性は保証できないものになります。
● 次の選択肢では、特に理由がなければ「npm」でよいでしょう。

npmは「Node Package Manager」で、Node.js での開発をする中で追加で必要となった機能(パッケージ)のインストールや管理などをしてくれるものです。たとえば「npm install ⚪︎⚪︎」というコマンドを実行すると⚪︎⚪︎に記載したパッケージをインストールできます。
選択肢にある npm/Yarn/pnpm の特徴は以下の通りです。状況に応じて Yarn や pnpm を選択しても問題ありません。
| npm | インストーラーでのインストールでは自動でnpmが入るなど、Node.js の標準という位置づけ。ドキュメントではnpmを前提としていることも多い。 |
| Yarn | 開発当時は、npmよりも高速でセキュリティ面も優れているという特徴があった。npm が改善したため大差はなくなっている。 |
| pnpm | npmの先頭に「Performant」(高性能)」の p をつけたもの。高速で厳密。大規模開発になるほど事故が起こりにくくなるなどのメリットが大きくなる。一方、初学者が学習しやすいのはnpm。 |
● 次のバージョン管理ツールの選択肢では、先述していますが私はもっとも標準的な「nvm」を選択しました。詳しくは先の「バージョン管理ツールについて」という章に記載しています。

● コマンドを実行するために、ターミナルを立ち上げます。画面下のDockからLaunchpadを開き、その他→ターミナル、を選択します。


● 最初のコマンドをコピーします。

● ターミナルに貼り付けて、Returnキーを押して実行します。

● 数秒で完了しました。

私はこのときにあまりよく実行結果を読まずに次に進んでしまったのですが、実はこのときに必要な設定について指示がありました。この件については次の章の「設定ファイルの作成・編集」に書いています。
● 2つ目のコマンドをコピーし、ターミナルに貼り付けて実行します。


● Node.js をインストールするコマンドをコピーし、ターミナルに貼り付けて実行します。24と書いていますが、Node.js のバージョンになります。


● バージョンの確認(インストールの確認)を実施します。それぞれのコマンドをコピーして実行します。

● バージョンが確認できました。

設定ファイルの作成・編集
Node.js のインストールを実行して、無事に動作するようになった方はこの章の説明は不要です。
インストールを実施したものの、私はプロジェクトが起動しないという状況になりました。インストール後はバージョン確認ができたものの改めて確認するとエラーが返ってきました。

● nvmをインストールした時のターミナルを確認すると、「Profile not found.」と書かれています。そして必要なファイルを作成するか、ファイルに追記するようにと指示されています。

「~/.⚪︎⚪︎」というファイルが列挙されていますが、「~/」なので自分のユーザ名のフォルダ内です。そして「.」がついているので隠しファイルになります。
● Finderを選択した状態で、移動→ホーム、と進むと、自分のユーザ名のフォルダが表示できます。

● 私の場合は、いずれのファイルも見当たりませんでした。なお、先頭に「.」がついた、隠しファイル(フォルダ)が表示されていない場合は、Command + Shift + .(ピリオド) キーを同時に押下すると表示できます。

私のMacがまだあまり使い込んでいなかった関係で、ファイルがなかったようです。すでに「. zshrc」や「.bashrc」で環境変数を管理している方は、以下に記載しているファイル作成は不要です。
● 私の環境では「.zshrc」が適しているのでこのファイルを作成します。ターミナルを起動したときに「zsh」と上部に表示されていますが、私のMacは標準シェルというものが「zsh」(z shell)ということになります。このzshに「rc」(Run Command)がついた「.zshrc」です。より厳密には、以下のコマンドを実行して標準シェルを確認します。
echo $SHELL

シェル(shell)とは、ターミナルに入力された内容を受け取ってOSに指示をする、橋渡しの役割をするものです。2019年10月リリースのmacOS Catalina (10.15) から「zsh」が標準シェルになっていますが、それよりも前は「bash」が標準シェルでした。
「.zprofile」等を選ばなかった理由は、これらは「ログインシェル起動時に1度だけ読み込まれる」という仕様になっているからです。一方、「. zshrc」はターミナルを開いたときなどに毎回読み込まれるものになります。nvmは人がターミナルに入力して操作するものになり、複数のターミナルを開いたときなどでも都度読み込まれる「.zshrc」が適しています。
● 以下のコマンドを実行して、ファイルを作成します。
touch ~/.zshrc

● ファイルが作成されたのが確認できます。

これから「.zshrc」のファイルに必要事項を記入をしていきます。そのために使うテキストエディタは作業できれば何でもよいのですが、私は「nano」というエディタを使いました。
● 以下のコマンドを実行して、nano を開きます。
nano ~/.zshrc

● nanoが開いたところです。

● nvmインストール時のコマンドにも書かれていた、以下の2行をコピーして貼り付けます。(# This〜 のところはコメントなので省きました)
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"


1行目の「export」は「環境変数」を定義しています。ユーザ名のフォルダ(ホームフォルダ)を確認すると「.nvm」という隠しフォルダがあるのですが、この場所を「NVM_DIR」と定義します。なぜこの行が必要かというと、nvmは「NVM_DIR」が定義されていることを前提に設計されているからです。
2行目については細かい説明は省略しますが、前半の「[ -s “$NVM_DIR/nvm.sh” ]」は「もし”$NVM_DIR/nvm.sh”というファイルがあったら」を確認しており、後半の「\. “$NVM_DIR/nvm.sh”」では「$NVM_DIR/nvm.sh を読み込む」という意味になります。
気になる方は、ホームフォルダの「.nvm」内を見ると「nvm.sh」というファイルがあることが確認できます。この「nvm.sh」がnvmの中核となるファイルで、これを読み込むことでnvmが利用できるようになります。

●「nano」に戻ります。control+Xキーでnanoが閉じるのですが、これらのキーを押下すると、保存するか確認が表示されます。Yを選択します。

● ファイル名はこのままでよいので、Enterキーを押下します。ファイルが保存され、nanoが閉じます。

● 確認のためにnodeとnpmのバージョンを確認したところ、問題なく表示されました。既存のプロジェクトも問題なく動作することが確認できました。

コマンドでのインストールについての説明はここで終了です。お疲れ様でした!
インストーラーからインストールする場合
ここからは、インストーラーでインストールする手順になります。
● 公式サイトのダウンロードページ を開き、インストーラーを入手します。

● なお、「ARM64」か「x64」かの選択肢がありますが、Appleメニュー→このMacについて、を選択して開いた画面で、「チップ」「Apple M4」などと書いていればARM64です。「プロセッサ」「Intel Core i7」などと書いていれば「x64」です。

● ダウンロードされたインストーラーをダブルクリックして起動します。

● あとはインストーラーの手順に従って進めばOKです。以下は最初の画面ですが、Node.js と npm がインストールされることが分かります。

● インストール完了の画面まできたら、閉じます。

インストーラーによるインストールはこれで完了です。お疲れ様でした!
⬇️ インストーラーでインストールしたあとに、アンインストールしたときの記事


