Maru@maru

Dev Hub

Translated from English

フルスタック開発ツール解説:Bun 1.4.4、Next.js 16.4、およびNode.jsの重要な修正

2026年10月下旬、TypeScriptおよびJavaScriptエコシステムにおいて、ランタイムのアップデート、本番環境のセキュリティアドバイザリ、データベースのエルゴノミクス(人間工学)向上といった非常に密度の高いリリースラッシュが起きています。今回のリリースは、単なるバージョンアップにとどまらず、コードフォーマットのオーバーヘッド、意図しない本番データベースへのクエリ、エージェントによる移行の容易化、ベースランタイムの遠隔コード実行(RCE)脆弱性といった、現場の具体的な課題に対処するものです。

何が変更されたのか、それがなぜ重要なのか、そして本番環境を壊さずにどう対応すべきかについて解説します。

Bun 1.4.4が外部フォーマッタの議論に終止符

Bun v1.4.4では、Prettierの代替として設計された組み込みコードフォーマッタbun fmtが搭載されました。ベンチマークによると、大規模なモノレポにおいてoxfmtよりも3〜6倍、標準のPrettierより最大286倍高速に動作し、かつ既存のPrettier設定ファイルをそのまま利用できます。

このリリースの最適化はフォーマットだけではありません。BunチームはBun.SQLのクエリごとのCPUオーバーヘッドを最大48%削減し、ネイティブでのストリーミングCOPYサポートの導入、明示的なquery.cancel()機能の追加、そしてbun checkによる型チェックを最大7.8倍高速化しました。

追加のNodeモジュールをインストールすることなく、プロジェクト全体で直接フォーマッタを実行可能です:

bash

組み込みのフォーマッタを採用することで、CIパイプラインにおいて最も重いステップの一つが解消され、数分かかっていたlintやフォーマットの処理が1秒未満で完了するようになります。

Next.js 16.4でCache Componentsがデフォルトに、エージェント対応の移行ツールも登場

Next.js 16.4では、create-next-appを通じて作成されるすべての新規アプリケーションにおいて、Cache Componentsがデフォルトで有効になります。React 19.3との統合により、データ集約型のビューにおいて、コンポーネントレベルのキャッシュディレクティブ('use cache')を標準的な考え方として利用することが想定されています。

Turbopackのコンパイル遅延の削減や本番バンドルサイズの縮小に加え、エージェント向けのCLIフラグが導入されました:

bash

このコマンドは、破壊的変更を単にターミナルに出力するだけでなく、Claude CodeやCursorのようなコーディングエージェント向けに最適化された構造化コンテキストペイロードを提供します。ASTの差異や非推奨のAPIの場所、提案される変換などをエージェントランナーに直接渡すことで、フレームワークのバージョンアップに伴う手動作業の負担を大幅に軽減します。

Node.jsの重要なセキュリティパッチ:CVE-2026-111497に即時対応を

Node.jsセキュリティチームは、サポート中の全リリースライン(v26.12.1、v24.22.1、v22.23.4)に対して緊急アップデートを公開しました。このパッチバンドルは、CVE-2026-111497を筆頭に10種類のCVEを解決します。

CVE-2026-111497は、組み込みのBrotliデコーダーにおける境界外書き込みの脆弱性です。リバースプロキシやAPIゲートウェイ、Webスクレイピングツールなどで、信頼できない悪意を持って作成されたBrotliストリームをアプリケーションが解凍する際、攻撃者が遠隔コード実行(RCE)を引き起こす可能性があります。また、このリリースではTLSホスト名検証バイパスの重大な脆弱性(CVE-2026-105483およびCVE-2026-106069)も修正されています。

バックエンドでNode.jsを使用して圧縮ペイロードの受信やプロキシを行っている場合は、機能開発よりもコンテナベースイメージの更新を今週の最優先事項としてください。

Drizzle ORM RC5で意図しない全表スキャンを防止

Drizzle ORMはv1.0.0-rc.5を公開しました。今回の焦点は、フィルターパラメーターがundefinedと評価された場合にクエリが意図せずテーブル全体を返してしまうという、長年の懸念事項です。

RC5では、リレーショナルフィルター条件に予期せずundefined値が渡された場合、実行時エラーが発生するようになりました。意図的に条件をバイパスしたい場合は、明示的にEmptyFilterシンボルを使用する必要があります。

typescript

このわずかな契約の変更により、コードレビューをすり抜けてしまうような認証漏れや、意図しない全表スキャンという問題カテゴリー全体が排除されます。

次に優先すべきこと

まずは本番環境のNode.jsワークロードにパッチを適用してください。Brotliのメモリ破壊脆弱性は、パブリックネットワークへの入り口となるあらゆるサービスにとって差し迫った危険です。バックエンドのランタイムを保護したら、重要度の低いCIワークフローでBun 1.4.4をテストしてフォーマッタの互換性を評価し、1.0の正式リリースに向けてDrizzleのデータベースクエリでundefined引数が適切に処理されているかを確認してください。

Loading comments…