Node.jsのリリースサイクルを理解し、最適なバージョンを選択する方法
はじめに
リテールアプリ共創部のるおんです
みなさんはプロジェクトを始める時や、既存プロジェクトでNode.jsのバージョンをあげたい時にどのような基準で使用するバージョンを決めてますか?
実際に、自分も定期的なライブラリアップデートの際や、新しくLambda関数を作ってNode.jsを選択する際にどのバージョンを使うべきか迷う時があります。
そんな時、Node.jsのリリースサイクルを理解しておけば、今自分たちが作っているアプリケーションにあったバージョンを正しく指定することができます。
今回は、Node.jsのリリースサイクルを解説し、適切なメジャーバージョンを指定する方法について解説します。
リリースサイクル
メジャーバージョン
まず、Node.jsのメジャーバージョンでは偶数番号と奇数番号で役割が異なります。
我々開発者が本番環境で基本的に使用するバージョンはNode.js v14
やv16
などの偶数番号です。一方で、v15
やv17
などの奇数番号のメジャーバージョンも存在します。
メジャーバージョンが偶数番号のNode.jsは、長期的なサポートが保証されており、一般開発者向けのバージョンです。これに対して、奇数番号のNode.jsは、新機能の導入を積極的に行うためのバージョンであり、早期に新機能を試したい開発者向けです。ただし、奇数番号のバージョンは長期的なサポートが提供されず、短期間でのサポート終了が予定されています。
リリースフェーズ
Node.jsのリリースフェーズは以下の三つに別れています。
Current
Active LTS
Maintenance
Current
→ Active LTS
→ Maintenance
という順でフェーズが進んでいきます。
以下は公式ドキュメントにある現在(2024/6/29)のRelease scheduleの図です。
それぞれのフェーズについて解説します。
Current
フェーズ
新しいメジャーバージョンがリリースされると、最初の6ヶ月間はCurrent
として扱われます。この期間中に新機能や改善が追加され、開発者は最新の機能を試すことができます。Currentフェーズのバージョンは、積極的な開発やテストに適していますが、本番環境での使用は慎重に行うべきです。
Active LTS
フェーズ
Currentフェーズが終了すると、そのバージョンはActive LTS
に移行します。このフェーズでは、新機能、バグ修正、およびLTSチームによって安定性が確認された更新が提供されます。Active LTSフェーズは約18ヶ月間続き、企業やプロダクション環境での使用に最適です。
Maintenance
フェーズ
Active LTSフェーズが終了すると、そのバージョンはMaintenance
フェーズに移行します。このフェーズでは、重大なバグ修正やセキュリティ更新が引き続き提供されますが、新機能の追加は基本的には行われません。ただし、後続のリリースラインへの移行をサポートするために新機能が追加されることもあります。Maintenanceフェーズはさらに12ヶ月間続き、安定性が求められる環境での使用に適しています。
Maintenance
フェーズが終了すると、そのバージョンはEOL(End of Life)となります。この時点で、そのバージョンに対する公式のサポートは提供されません。
上の図では、Node.js v16
がサポート終了になっていることがわかります。
また、先ほど説明した、奇数番号のバージョンで長期サポートがされないというのは、奇数バージョンはCurrentフェーズしか対応しておらず、その後のActive LTSやMaintenanceフェーズには行かないためです。
最適なバージョンの選択
Node.jsのリリースサイクルが理解できました。しかし「結局実務ではどのバージョンを使うのがいいの?」という疑問がでてくると思います。
結論は「場合による」です。
そのため、今回はいくつか重要な観点を示しながら、最適なバージョンを使用する方法を解説します。
1. 使いたい機能や、アプリのフェーズによって選択する。
アプリケーションの開発フェーズや必要な機能を考慮してNode.jsのバージョンを選択することが重要です。
例えば、現在(2024/6/29)にNode.js v22はCurrentフェーズで使用可能です。 (表より早まっていたようです)
しかし、このCurrentフェーズのNode.js v22
を今すぐ実務で使用すべきでしょうか?
もし、どうしても使用したい新機能がある場合はNode.js v22
を選択する必要があると思いますが、よほど強い最新の機能を使いたい理由がない限りはおすすめしません。それなら安定したActive LTS のNode.js v20
を使って、安定した動作と長期的なサポートを受けるべきだと思います。
どのバージョンを使用するかは、それぞれのアプリの要件とフェーズによって決めてください。
2. 依存関係を考慮する
次に、Node.jsのバージョンを決める際に重要なのは、使用する(もしくは使用している)ライブラリやフレームワークとの依存関係です。
例えば、最新バージョンを使うと、必要なライブラリやサービスがまだサポートしないというケースは、Node.jsだけじゃなく他のライブラリでもよくあり、「最新のReactが出た!使ってみる!」ってやると周辺ツールがついてきてなくて痛い目を見ることがあったりするのでとても重要です。
依存関係を理解して適切なバージョンを選択してください。
3. 公式推奨のデフォルトでインストールされるバージョンを使用する
次に、特に依存関係など考慮する必要がなく、とりあえずNode.jsを入れてプロジェクトを始めたいというケースでは、Node.js のトップページにあるDownload Node.js (LTS)
リンクが貼られてるバージョンをそのまま使うのがいいと思います。
LTS(Long Time Support)という名前の通り長期間サポートされるので向こう数年しっかりとセキュリティアップデートも入ってくれます。
現在(2024/6/29)時点ではNodejs v20.15.0
がデフォルトでインストールされるようで、これは上の表のActive LTSフェーズのバージョンであることが確認できます。
おわりに
今回はNode.jsのリリースサイクルについての説明と、適切なNode.jsのバージョンを指定する方法について解説しました。
基礎的な内容でしたが、案外このサイクルについて把握していなかった方も多いのではないでしょうか?
Node.jsの公式サイトでは定期的にブログが更新されており、アップデートの内容が説明されているのて、興味があったら見てみるといいと思います。
ご参考になれば幸いです。
参考