2026年現在、Macでの開発においてNode.jsは欠かせない存在となっています。
フロントエンド開発からサーバーサイド、さらにはAIツールの実行環境まで、その用途は多岐にわたります。
しかし、Node.jsを公式サイトから直接ダウンロードしてインストールする方法は、複数のプロジェクトを抱えるプロの開発者にとっては推奨されません。
プロジェクトごとに求められるNode.jsのバージョンが異なるため、バージョン管理ツールを導入して環境を構築することが現在のスタンダードです。
MacにおけるNode.js開発環境の重要性
MacはUnixベースのオペレーティングシステムであり、開発者にとって非常に親和性の高い環境を提供しています。
特に2020年代後半の現在、Apple Silicon(M1/M2/M3/M4チップ以降)を搭載したMacでの開発は、パフォーマンスと電力効率の両面で圧倒的な優位性を持っています。
Node.jsはこの強力なハードウェア上で動作し、Webアプリケーションのビルド時間を大幅に短縮します。
しかし、Node.jsは進化のスピードが速く、半年ごとに新しいメジャーバージョンがリリースされます。
古いプロジェクトではNode.js v18が必要なのに、最新のプロジェクトではNode.js v24が必要といった状況が頻繁に発生します。
このような状況で、システムに1つのNode.jsしかインストールされていないと、古いプロジェクトが動かなくなったり、最新の機能が使えなかったりと、開発効率が著しく低下してしまいます。
そこで重要になるのが、バージョン管理ツール(Version Manager)の活用です。
これを利用することで、コマンド一つでNode.jsのバージョンを切り替え、プロジェクトごとに最適な環境を瞬時に構築できるようになります。
なぜ公式サイトのインストーラーを避けるべきなのか
Node.jsの公式サイト(nodejs.org)にアクセスすると、macOS用の「.pkg」インストーラーが提供されています。
初心者の方にはこれが最も簡単な方法に見えますが、プロフェッショナルな開発環境を構築する上では、いくつかのデメリットが存在します。
権限(Permission)の問題
公式サイトのインストーラーを使用すると、Node.jsの実体やグローバルにインストールされるパッケージが/usr/local/lib/node_modulesなどのシステム領域に配置されます。
これにより、npm install -gを実行する際にsudo権限を求められることがあり、セキュリティ上のリスクやファイル権限の不整合を引き起こす原因となります。
バージョン切り替えの困難さ
インストーラーでNode.jsを入れると、その時点の特定のバージョンがシステムに固定されます。
別のバージョンを試したい場合、一度アンインストールしてから別のインストーラーを実行する必要があり、非常に手間がかかります。
アンインストールの煩雑さ
macOSからNode.jsを完全に削除するのは意外と面倒です。
関連するバイナリやライブラリ、設定ファイルが各所に散らばるため、手動で削除するとミスが発生しやすくなります。
バージョン管理ツールを使っていれば、nvm uninstallといった単純なコマンドで環境をクリーンに保つことができます。
バージョン管理ツールの選定基準:nvm vs fnm
現在、Macで広く使われているNode.jsのバージョン管理ツールには、主にnvm (Node Version Manager)とfnm (Fast Node Manager)の2つがあります。
それぞれの特徴を理解し、自分の開発スタイルに合ったものを選びましょう。
| 特徴 | nvm | fnm |
|---|---|---|
| 言語 | Bash | Rust |
| パフォーマンス | 普通(シェル起動時に遅延がある場合も) | 非常に高速 |
| 普及度 | 非常に高く、情報が豊富 | 急速に普及しているモダンな選択肢 |
| 対応シェル | Bash, Zsh, Dash, Fishなど | Bash, Zsh, Fish, PowerShellなど |
| 自動切り替え | 別途設定が必要 | 標準機能(高速) |
nvmは長年愛されている業界標準のツールであり、ドキュメントやトラブルシューティングの情報が非常に豊富です。
一方で、シェルの起動時に若干のオーバーヘッドがあるため、ターミナルを開く速度を重視する方には不向きな面もあります。
fnmはRust言語で作られており、驚異的な実行速度を誇ります。
2026年現在のモダンな開発環境では、このfnmを推奨するプロジェクトが増えています。
特にプロジェクトごとにNode.jsのバージョンを自動で切り替える機能がデフォルトで非常に高速に動作するため、ストレスのない開発が可能です。
nvmの導入と設定手順
まずは、定番のnvmをインストールする手順を解説します。
1. インストールスクリプトの実行
ターミナルを開き、以下のコマンドを実行します。
バージョン番号(v0.40.1などは例です)は、GitHubのリポジトリで最新のものを確認することをお勧めします。
# nvmのインストールスクリプトを実行
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
2. 環境変数の設定
インストールが完了したら、使用しているシェルの設定ファイル(多くの場合 ~/.zshrc)に設定を追記する必要があります。
インストールスクリプトが自動で追記してくれる場合もありますが、記述がない場合は以下の内容を手動で追加します。
# .zshrc に追記する設定内容
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && echo "$HOME/.nvm" || echo "$XDG_CONFIG_HOME/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
設定を反映させるために、ターミナルを再起動するか、以下のコマンドを実行してください。
source ~/.zshrc
3. Node.jsのインストールと使用方法
nvmが正しくインストールされたら、実際にNode.jsをインストールしてみましょう。
# 最新のLTS(長期サポート版)をインストール
nvm install --lts
# 特定のバージョン(例: v22.0.0)をインストール
nvm install 22.0.0
# 使用するバージョンを切り替える
nvm use 22.0.0
# 現在インストールされているバージョンの一覧を表示
nvm ls
v20.12.2
-> v22.0.0
v24.0.0
default -> lts/* (-> v22.11.0)
fnmの導入と設定手順
次に、現在急速にシェアを伸ばしているfnmのインストール手順を解説します。
Macの場合、Homebrewを使用してインストールするのが最も簡単です。
1. Homebrewを使用したインストール
MacにHomebrewがインストールされていることを前提とします。
# Homebrewでfnmをインストール
brew install fnm
2. シェルへの統合設定
fnmを動作させるためには、シェルの設定ファイル(~/.zshrc)に以下の1行を追加する必要があります。
# .zshrc に追記
eval "$(fnm env --use-on-cd --shell zsh)"
--use-on-cdオプションを付けることで、プロジェクトのディレクトリに移動した際、そのディレクトリにある.node-versionファイルなどを読み取って自動的にNode.jsのバージョンを切り替えてくれるようになります。
3. fnmでのNode.js管理
fnmのコマンド体系はシンプルで使いやすくなっています。
# 利用可能なNode.jsのバージョン一覧を表示
fnm list-remote
# 最新のLTS版をインストール
fnm install --lts
# インストール済みのバージョン一覧を表示
fnm list
# 特定のバージョンを使用する
fnm use 24.0.0
* v20.15.0 LTS Iron
* v22.3.0
* v24.1.0 (currently using)
プロジェクトごとのバージョン自動切り替え
複数のプロジェクトを並行して進めている場合、それぞれのプロジェクトのルートディレクトリにバージョンを指定するファイルを置いておくと便利です。
これにより、開発者が手動でnvm useなどを行う必要がなくなります。
バージョン指定ファイルの作成
一般的には、以下のいずれかのファイルを使用します。
- .node-version (推奨):多くのツールが共通して対応している形式
- .nvmrc:nvmで伝統的に使われている形式
ファイルの中身は非常にシンプルで、バージョン番号のみを記述します。
22.0.0
このファイルがプロジェクト直下にある状態で、fnmの自動切り替え設定が有効になっていれば、cdコマンドでディレクトリに入るだけで環境が整います。
nvmを使用している場合は、.zshrcにディレクトリ移動時にnvm useを実行するスクリプトを別途記述する必要がありますが、fnmであれば標準機能として提供されています。
Corepackを利用したパッケージマネージャーの管理
Node.js v16.13.0以降、Corepackというツールが同梱されるようになりました。
これは、npm以外のパッケージマネージャー(yarnやpnpm)のバージョン管理を容易にするためのツールです。
2026年現在、多くの現場でpnpmが採用されており、Corepackの設定は必須と言えます。
Corepackの有効化
Node.jsをインストールした直後に、以下のコマンドを実行してCorepackを有効にします。
# Corepackを有効化
corepack enable
# 必要に応じて、使用するパッケージマネージャーを指定
corepack prepare pnpm@latest --activate
これにより、各プロジェクトのpackage.jsonに記載されたpackageManagerフィールドの記述に従って、適切なバージョンのpnpmやyarnが自動的にダウンロード・利用されるようになります。
既存のNode.jsをクリーンアップする方法
もし、この記事を読む前に公式サイトのインストーラーやHomebrewで直接Node.jsをインストールしてしまっている場合は、バージョン管理ツールを入れる前にそれらを削除することを強く推奨します。
競合が発生し、どちらのNode.jsが動いているのか分からなくなるトラブルを防ぐためです。
Homebrewで入れた場合の削除
brew uninstall --force node
インストーラー(pkg)で入れた場合の削除
以下のコマンドを順番に実行して、関連ファイルを削除します。
sudo rm -rf /usr/local/lib/node_modules
sudo rm -rf /usr/local/include/node
sudo rm -rf /usr/local/bin/node
sudo rm -rf /usr/local/bin/npm
このように、システムを一度クリーンな状態にしてからfnmやnvmを導入することで、パス(PATH)の優先順位による予期せぬ挙動を回避できます。
トラブルシューティング:パスが通らない場合
インストールしたはずなのにnode -vが動作しない、あるいは古いバージョンが表示されるといった場合は、多くの場合シェルのパス(PATH)設定が原因です。
1. シェルの種類を確認する
Macのデフォルトシェルは現在「zsh」ですが、古い環境から引き継いでいる場合は「bash」を使っている可能性があります。
echo $SHELL
出力が/bin/zshなら<del>/.zshrcに、/bin/bashなら</del>/.bash_profile(または~/.bashrc)に設定を記述しているか確認してください。
2. 設定ファイルの読み込み順序
環境変数の設定を追記した後、sourceコマンドを実行し忘れていないか、あるいはターミナルのタブを新しく開いても状況が変わらないか確認しましょう。
3. Apple Silicon固有の注意点
稀に、Intel Mac向けにビルドされたバイナリが動作していることがあります。
現在のバージョン管理ツール(nvmやfnm)は、M1/M2/M3/M4チップに対してネイティブなバイナリ(arm64版)を自動的に選択してくれますが、古い設定が残っているとRosetta 2経由でIntel版が動いてしまい、パフォーマンスが低下することがあります。
以下のコマンドで「arm64」と表示されれば正常です。
node -p "process.arch"
arm64
まとめ
MacでNode.jsをインストールし、快適な開発環境を構築するための最適解は、バージョン管理ツール(nvmまたはfnm)を利用することです。
2026年現在の傾向として、特段の理由がなければ、高速で動作し自動切り替え機能も充実しているfnmをお勧めします。
一方で、長年の実績とコミュニティの安心感を重視するならnvmも依然として強力な選択肢です。
この記事で紹介した手順を参考に、システム領域を汚さないクリーンな環境を作り上げることで、Node.jsのバージョン差異に悩まされることなく、本来の開発業務に集中できるようになります。
また、Corepackを活用してパッケージマネージャーまで一貫して管理することで、チーム開発における「自分の環境では動かない」というトラブルも未然に防ぐことができるでしょう。
最後に、Node.jsの環境構築が終わったら、まずはnode -vおよびnpm -vを実行して、正しくインストールされたことを確認してください。
快適なJavaScript/TypeScript開発ライフをスタートさせましょう。
