logo

Node.js v23.8.0

Node.js v23.8.0 (Current) の主な変更点と解説

Node.js v23.8.0 (Current) が 2025年2月13日にリリースされました。このバージョンでは、システム CA 証明書の利用、URL Pattern API の導入、zstd 圧縮アルゴリズムのサポートなど、いくつかの重要な改善が含まれています。


1. システム CA 証明書ストアの利用をサポート (macOS・Windows)

変更点

  • 新しいコマンドラインオプション --use-system-ca が追加
  • --use-bundled-ca--use-openssl-ca との併用が可能
  • macOS と Windows でシステムの CA 証明書を利用できるように

背景とメリット

これまでは、Node.js が OpenSSL の CA 証明書を利用するのが基本でした。しかし、環境によってはシステムが管理する CA 証明書を使いたい場合があります。
今回の変更で、macOS・Windows 環境では OS の信頼ストアを使うことで、環境ごとの CA 証明書管理が簡単になります。


2. URL Pattern API の導入

変更点

  • URLPattern クラスが node:url モジュールに追加
  • Node.js 24 からはグローバルオブジェクトとして利用可能に

使い方

import { URLPattern } from 'node:url';

const pattern = new URLPattern({ pathname: '/users/:id' });
console.log(pattern.exec('/users/123')); 
// { pathname: { groups: { id: '123' } }, ... }

背景とメリット

URLPattern API は、URL のパターンマッチングを簡単に行える仕組みです。
これまでは RegExp などを使ってパス解析を行っていましたが、この API を利用することで、より直感的に URL の処理ができるようになります。


3. zstd 圧縮アルゴリズムのサポート

変更点

  • node:zlib モジュールに zstd 圧縮機能が追加
  • zstd 圧縮/解凍をサポート
  • 実験的機能 として提供

使い方

import { createZstdCompress, createZstdDecompress } from 'node:zlib';
import { pipeline } from 'node:stream';
import { createReadStream, createWriteStream } from 'node:fs';

pipeline(
  createReadStream('input.txt'),
  createZstdCompress(),
  createWriteStream('output.zst'),
  (err) => {
    if (err) console.error('Compression failed:', err);
    else console.log('Compression successful');
  }
);

背景とメリット

Zstandard (zstd) は、Google などでも採用されている高速・高圧縮のアルゴリズムです。
従来の gzipdeflate よりもパフォーマンスが良いため、ファイル圧縮の選択肢が増えます。


4. スレッドに名前を設定可能に

変更点

  • Worker コンストラクタに name オプションを追加
  • デバッグ時にスレッド名を識別しやすくなった

使い方

import { Worker } from 'node:worker_threads';

const worker = new Worker('./worker.js', { name: 'background-task' });
console.log(worker.threadId); // 名前付きスレッドが識別しやすい

背景とメリット

これまで、Node.js のスレッドは名前を持たなかったため、デバッグ時にどのスレッドがどのタスクを担当しているのか分かりにくいことがありました。
今回の変更により、ワーカースレッドに名前を設定でき、より直感的なデバッグが可能になりました。


5. タイムゾーンデータの更新 (2025a)

変更点

  • パラグアイが 2024 年から UTC-3 を恒久採用
  • フィリピンの 1991 年以前のデータが改善

背景とメリット

システムの日付・時刻を正しく扱うために、Node.js は定期的にタイムゾーンデータを更新しています。
特に、国や地域によるサマータイムの変更などに対応するため、最新のタイムゾーン情報を保持することが重要です。


6. その他の変更

  • sqlite モジュールの拡張: ユーザー定義関数が ArrayBufferView を返せるように
  • fs モジュールの改善: FileHandle.readableWebStream が常にバイトストリームを作成
  • http の最適化: ガベージコレクションの負担を軽減
  • events の改善: getMaxListeners() が 0 リスナーを適切に検出
  • readline の修正: 中止時の未解決 Promise を解決
  • QUIC のバグ修正: 通信の安定性向上

まとめ

Node.js v23.8.0 では、セキュリティ強化やデバッグの改善、新しい API の追加など、多くの改良が行われました。
特に、--use-system-ca オプションの追加、URLPattern API の導入、zstd 圧縮サポートは、今後の Node.js 開発において重要なポイントとなるでしょう。

📌 次のステップ

logo