Node.js の奇数版は、公式の予定で何か月しか使えなかったのか: v4〜v26 の期間を数え、2027年からの新方式と並べる
Node.js には「奇数版は LTS にならない」という決まりがあった。その奇数版は、公式のスケジュール上で実際に何か月使えるものだったのか。2027年4月の v27 から始まる新方式(年1回・すべて LTS)は、その差をどう変えるのか。
この記事で確かめたのは、Node.js の奇数版は公式の予定で偶数版(LTS)に比べて何か月しか使えなかったか、そして新方式でその差がどうなるかだ。公式の schedule.json と配布一覧 dist/index.json(いずれも2026年10月1日に取得)から、v4〜v26 の予定期間とリリース回数を自分で数え、2026年3月10日の公式ブログ「Evolving the Node.js Release Schedule」の新方式と並べた。
結論を先に書く。schedule.json の記録では、奇数版 v5〜v25(11本)の開始から終了までは7.3〜8.9か月(平均7.7か月)。偶数版 v4〜v24(11本)は28.7〜36.4か月(平均34.6か月)で、隣り合う偶数版と奇数版の差は21.3〜29.0か月だった。差は最初の約5.5か月(Current)の後に生じている。新方式の v27 は、開始から終了まで36.3か月と記録され、奇数版にあたる枠はない。
この記事は Node.js 公式とは関係のない非公式の調査で、公式が内容を確認したものではない。期間は「公式スケジュール上の予定」であり、実際の利用期間や採用の多さを測ったものではない。月数は日数を30.4375で割り、小数1桁にした。
奇数版の予定期間は平均7.7か月、偶数版は平均34.6か月だった
schedule.json には各メジャーの start(最初のリリース)、lts(LTS に入る日。偶数版のみ)、maintenance、end が書かれている。v0.8〜v0.12 は奇数・偶数の仕組みの前なので数えず、v4 から v26 までを対象にした。全メジャーの表は付録Aにある。
| 本数 | 開始〜終了(合計) | うち Current | うち LTS(LTS 入り〜終了) | |
|---|---|---|---|---|
| 偶数版 v4〜v24 | 11 | 平均34.6か月(28.7〜36.4) | 平均5.5か月 | 平均29.1か月 |
| 奇数版 v5〜v25 | 11 | 平均7.7か月(7.3〜8.9) | 平均5.6か月 | なし(0) |
偶数版は v4 から v24 まで1つずつ、奇数版は v5 から v25 まで1つずつの11組で、隣り合う版どうし(v4 と v5、v6 と v7、……、v24 と v25)の合計の差は、最小が v16 と v17 の21.3か月、最大が v18 と v19 の29.0か月だった。奇数版の平均は偶数版の約2割(7.7÷34.6)になる。
偶数版の中にも短いものがある。v16(28.7か月)、v8(31.0か月)、v4(31.7か月)で、残る8本は35.8〜36.4か月だった。schedule.json は現在の記録で、v16 の終了日がなぜ他より早いかは、この記事で調べた資料からは分からない。
差は Current の後に出る: Current の長さはほぼ同じ
表のとおり、Current(最初のリリースから、偶数版は LTS 入りまで、奇数版は maintenance 入りまで)の長さは、偶数版で平均5.5か月、奇数版で平均5.6か月とほとんど変わらない。偶数版は Current の後に LTS が約29か月続き、奇数版は maintenance が約2か月(平均7.7か月−5.6か月)続いて終わる。予定の上で「奇数版は短い」と言えるのは、Current の後の期間による。
v4 は例外で、Current は1.1か月(2015-09-08〜2015-10-12)しかない。LTS の仕組みが始まった最初の版で、偶数版の Current の幅(1.1〜6.2か月)はこの1本で広がっている。
実際のリリース回数でも、差は Current の後に出ている
予定とは別に、dist/index.json の各リリースの日付から、メジャーごとの実際のリリース回数を数えた(例: v18 なら v18. で始まる版の行の数)。予定期間が終わった版だけで比べると次のとおりだった。
| 本数 | 全期間のリリース回数 | Current の間のリリース回数 | |
|---|---|---|---|
| 偶数版 v4〜v20(終了済み) | 9 | 平均41.8回(36〜51) | 平均13.8回(4〜19) |
| 奇数版 v5〜v25(終了済み) | 11 | 平均15.9回(13〜19) | 平均14.2回(11〜17) |
Current の間のリリース回数は、偶数版(v4 の4回を含む)と奇数版でほぼ同じ水準だった。全期間の回数の差(平均41.8回と15.9回)は、Current の後の分(偶数版は平均約28回、奇数版は平均約2回)にあたる。これは配布一覧に載ったリリース(セキュリティ修正を含む)の行を数えたもので、各リリースの中身の大きさは見ていない。v22・v24・v26 はまだ終了していないので比べていない。
なお v9 は schedule.json の start が 2017-10-01 だが、配布一覧の最初のリリースは 2017-10-31 だった。月数は schedule.json の日付で数えている。
新方式(v27)の予定: 偶数版とほぼ同じ36か月、奇数版にあたる枠はない
公式ブログ(2026年3月10日)は、27.x から主要リリースを年2回から年1回にし、すべてのリリースを LTS にすると書いている。段階は Alpha 6か月(10月〜3月)、Current 6か月(4月〜10月)、LTS 30か月で、最初の Current リリースから EOL までが合計36か月とされている。
schedule.json の v27 は、alpha が 2026-10-28、start が 2027-04-22、maintenance が 2027-10-20、end が 2030-04-30 だった。数えると、Alpha が5.8か月、Current が5.9か月、そこから end まで30.3か月、start から end までが36.3か月になる。ブログの数字と矛盾しない。ただし schedule.json の v27 には lts の項目がなく、この記事では maintenance の日付(2027-10-20)をブログのいう「LTS 入り(2027年10月)」にあたる日として読んだ。
旧方式との比較は次のとおり。
| 旧方式の偶数版 | 旧方式の奇数版 | 新方式の v27 | |
|---|---|---|---|
| 合計 | 平均34.6か月 | 平均7.7か月 | 36.3か月 |
| LTS | 約29か月(v4〜v24 の平均) | なし | 30.3か月 |
| 年あたりの新メジャー | 偶数・奇数で年2つ | 同左 | 年1つ |
LTS に入る時期はどちらも毎年10月で、LTS 入りの間隔は12か月のままになる(schedule.json の lts は v24 が 2025-10-28、v26 が 2026-10-28、v27 が上記の読みで 2027-10-20)。変わるのは、奇数版にあたる約8か月の枠がなくなることと、その前に6か月の Alpha が置かれることだ。Alpha は、ブログによれば奇数版が担っていた早期テストの役割を引き継ぐもので、semver-major の変更を入れてよい点が異なり、本番利用は想定されていない。奇数版の Current(平均5.6か月)と v27 の Alpha(5.8か月)は同じくらいの長さだが、Alpha は「サポート期間」の36か月には含まれない。
同時にサポートされる系統の数も数えた。各月の1日に、start 以上 end 未満のメジャーを数えると、2017年1月〜2026年9月の117か月で2〜4本(平均3.5本。2本になったのは 2023-10-01 の1回だけ)だった。新方式では、毎年4月に1本が始まり36か月で終わるとして数えると、定常状態では毎月3本になる(Alpha は含めない)。これは公式ブログの10年分の表(27.x〜36.x)を単純に延ばした自分の計算で、公式が示した数ではない。ブログは現状を「四つか五つの active release lines」と書いており、その数え方は示されていないため、この記事の数え方とは直接比べない。
公式が挙げる理由と、この記事から言えること
公式ブログが新方式の理由として挙げているのは、次の点だ(要約)。
- 奇数版の採用は少ない(原文は “Odd-numbered releases see minimal adoption”)。多くの利用者は LTS を待つ。
- 奇数・偶数の区別が新しい利用者を混乱させる。
- ボランティアが中心の保守で、4〜5本のリリース系統にセキュリティ修正をバックポートするのが負担になっている。
意図としては、ブログに書かれたこれらの範囲を超えて書かない。
この記事の数字と照らして、次のように考える。
- 「奇数版は短命」は、予定の上では奇数版が LTS に入らず、Current の約5.6か月の後に約2か月で終わる、という形で確かめられた。リリース回数でも Current の間は偶数版と同じ水準で、差は Current の後に出ている。
- 新方式は、偶数版がもっていた約36か月を毎年の版に与え、奇数版の枠をなくす。同時にサポートされる系統の数は、この記事の数え方では平均3.5本から3本になる。ブログの挙げる「バックポート先の系統が多い」という理由とは方向が合う。ただし、これは2つの数字を並べただけで、公式が実際にこの数字を根拠にしたかは分からない。
- 「奇数版の採用が少ない」は公式ブログの記述で、この記事は採用の多さを測っていない。npm のダウンロード数など、別の資料で確かめる必要がある。
確かめた範囲と言えないこと
schedule.jsonは2026年10月1日時点の記録で、過去の版の日付が後から書き換えられたかどうかは調べていない。v16 の終了日の経緯も分からない。- v22・v24・v26 の終了、v26 の LTS 入り(2026-10-28)、v27 の日付は予定で、まだ起きていない。ブログも新方式の表を「final ではなく、変更されうる」としている。
- 実際の利用者数・採用の割合・セキュリティ修正の数は測っていない。リリース回数は配布一覧の行数で、中身は見ていない。
- 新方式で実際に何が起きるかは、2027年4月以降の実績を見ないと言えない。
まとめ
Node.js の公式スケジュール(schedule.json、2026年10月1日取得)では、奇数版 v5〜v25 の開始から終了までは平均7.7か月、偶数版 v4〜v24 は平均34.6か月で、隣り合う版の差は21.3〜29.0か月だった。Current の長さ(約5.5か月)とその間のリリース回数はほぼ同じで、差は Current の後に生じている。2027年の v27 からの新方式(2026年3月10日の公式ブログ)は、36か月の版を毎年1本ずつ出す計画で、奇数版の枠はなくなる。採用の多さについては、この記事では確かめていない。
付録A 全メジャーの予定期間とリリース回数
月数は日数÷30.4375。LTS は LTS 入り〜end(奇数版は LTS にならないので0。v27 の LTS は maintenance〜end)。リリース回数は dist/index.json(2026-10-01 取得、868件)で、版が v<メジャー>. で始まる行の数。※ v27 の LTS 入りは maintenance の日付を読み替えたもの。
| 版 | 種別 | start | LTS 入り | 終了(end) | Current(月) | LTS(月) | 合計(月) | 実リリース数 |
|---|---|---|---|---|---|---|---|---|
| v4 | 偶数 | 2015-09-08 | 2015-10-12 | 2018-04-30 | 1.1 | 30.6 | 31.7 | 40 |
| v5 | 奇数 | 2015-10-29 | — | 2016-06-30 | 6.0 | 0.0 | 8.0 | 19 |
| v6 | 偶数 | 2016-04-26 | 2016-10-18 | 2019-04-30 | 5.7 | 30.4 | 36.1 | 45 |
| v7 | 奇数 | 2016-10-25 | — | 2017-06-30 | 6.1 | 0.0 | 8.1 | 17 |
| v8 | 偶数 | 2017-05-30 | 2017-10-31 | 2019-12-31 | 5.1 | 26.0 | 31.0 | 36 |
| v9 | 奇数 | 2017-10-01 | — | 2018-06-30 | 6.0 | 0.0 | 8.9 | 18 |
| v10 | 偶数 | 2018-04-24 | 2018-10-30 | 2021-04-30 | 6.2 | 30.0 | 36.2 | 42 |
| v11 | 奇数 | 2018-10-23 | — | 2019-06-01 | 5.9 | 0.0 | 7.3 | 17 |
| v12 | 偶数 | 2019-04-23 | 2019-10-21 | 2022-04-30 | 5.9 | 30.3 | 36.2 | 51 |
| v13 | 奇数 | 2019-10-22 | — | 2020-06-01 | 5.3 | 0.0 | 7.3 | 17 |
| v14 | 偶数 | 2020-04-21 | 2020-10-27 | 2023-04-30 | 6.2 | 30.1 | 36.3 | 46 |
| v15 | 奇数 | 2020-10-20 | — | 2021-06-01 | 5.4 | 0.0 | 7.4 | 18 |
| v16 | 偶数 | 2021-04-20 | 2021-10-26 | 2023-09-11 | 6.2 | 22.5 | 28.7 | 37 |
| v17 | 奇数 | 2021-10-19 | — | 2022-06-01 | 5.4 | 0.0 | 7.4 | 15 |
| v18 | 偶数 | 2022-04-19 | 2022-10-25 | 2025-04-30 | 6.2 | 30.2 | 36.4 | 38 |
| v19 | 奇数 | 2022-10-18 | — | 2023-06-01 | 5.4 | 0.0 | 7.4 | 13 |
| v20 | 偶数 | 2023-04-18 | 2023-10-24 | 2026-04-30 | 6.2 | 30.2 | 36.4 | 41 |
| v21 | 奇数 | 2023-10-17 | — | 2024-06-01 | 5.5 | 0.0 | 7.5 | 13 |
| v22 | 偶数 | 2024-04-24 | 2024-10-29 | 2027-04-30 | 6.2 | 30.0 | 36.2 | 36(進行中) |
| v23 | 奇数 | 2024-10-16 | — | 2025-06-01 | 5.5 | 0.0 | 7.5 | 14 |
| v24 | 偶数 | 2025-05-06 | 2025-10-28 | 2028-04-30 | 5.7 | 30.1 | 35.8 | 29(進行中) |
| v25 | 奇数 | 2025-10-15 | — | 2026-06-01 | 5.5 | 0.0 | 7.5 | 14 |
| v26 | 偶数 | 2026-05-05 | 2026-10-28 | 2029-04-30 | 5.8 | 30.1 | 35.8 | 15(進行中) |
| v27 | 新方式 | 2027-04-22 | 2027-10-20(※) | 2030-04-30 | 5.9 | 30.3 | 36.3 | 0 |
付録B 数え方
scripts/nodejs_schedule_months.pyがschedule.jsonとdist/index.jsonから表・平均・組ごとの差を出力する(出力:derived-nodejs-schedule-2026-10-01.json)。- Current は偶数版が start〜lts、奇数版が start〜maintenance。合計は start〜end。Current の間のリリース回数は、その期間(奇数版は 2017-10-01 から数えた v9 を含む)に入る日付の行を数えた。
- 同時にサポートされる系統の数は、各月の1日に start 以上 end 未満の版を数えた(2016年1月〜2027年4月の月初)。
- 取得時の User-Agent に連絡先は含めていない。
出典
- nodejs/Release「schedule.json」(2026年10月1日取得): https://raw.githubusercontent.com/nodejs/Release/main/schedule.json
- Node.js「dist/index.json」(リリース一覧。2026年10月1日取得): https://nodejs.org/dist/index.json
- Node.js 公式ブログ「Evolving the Node.js Release Schedule」(2026年3月10日。2026年10月1日取得): https://nodejs.org/en/blog/announcements/evolving-the-nodejs-release-schedule