terminal
Weekly Digest // JS_FRAMEWORKS — Week 28-2026
codeWeekly Report

BunをRustで書き直す — 2026年 第28週 JavaScript

JS frameworks, React/Vue/Svelte, and runtime updates

calendar_todaysummarizeWeek 28-2026
ランタイム

BunをRustで書き直す

月間2,200万ダウンロードを誇るJavaScriptランタイムBunが、535,496行のZigコードベースを11日間でRustに書き直しました。64個のClaudeエージェントが動的ワークフローを並列実行する手法が採用され、背景にはZigの手動メモリ管理では根本的に防ぎにくいuse-after-free・double-free・メモリリークの問題がありました。Rustのborrow checkerとDropトレイトが自動クリーンアップを保証し、v1.3.14に存在した128個のバグを修正しています。Bun.build()呼び出しごとに3 MBずつ漏れていたメモリは、2,000回実行後も約609 MBで安定するようになりました。バイナリサイズはLinuxとWindowsで約20%削減、HTTPスループットは2〜5%向上しました。APIトークンコストは約16万5千ドルで、エンジニア3名が1年かける代替案と比べて大幅に低コストです。Bun v1.4.0がRustポートを搭載し、v1.3.14が最後のZigリリースとなります。

BunをRustで書き直す
Read Articlearrow_forward
Video · TypeScript

Reactで使うTypeScript — Full Tutorial

freeCodeCampのRachel Johnson講師によるこのチュートリアルは、'Assembly Endgame'という実際のハングマン風ゲームプロジェクトを通じてReactでのTypeScript実践的な活用方法を解説します。Vite + TypeScriptプロジェクトのスキャフォールディング、useStateジェネリクスの型付け(例:useState<string[]>)、インポートしたJSX.Element型で関数コンポーネントの戻り値を型付け、ComponentName + Propsの命名規則でカスタムprop型を定義する流れを順に学習します。アロー関数構文を使った関数propの型付け、TypeScriptのOmitユーティリティ型で既存型のサブセットを導出、モジュール化のためのファイル間型インポートなどの応用パターンも含まれます。GameStatusLanguageChipsWordLettersKeyboardなど実際のコンポーネントへのハンズオンチャレンジで各概念を定着させ、非推奨のReact.FCパターンを避け明示的なJSX.Elementアノテーションを採用しています。

AI_INFOGRAPHIC
Reactで使うTypeScript — Full Tutorial — infographicWATCH_VIDEOarrow_forward
Article · ReactREAD TIME: 16m

React Compilerを解説

2025年10月7日v1.0に達したReact Compilerは、ビルド時にコンポーネントを自動でメモ化するBabelプラグインで、ソースコードにuseMemouseCallbackReact.memoを手書きする必要をなくします。コンパイラはuseMemo呼び出しの代わりに内部の_cフックを使ったスロットベースのキャッシュを生成し、レンダーごとにクロージャと依存配列を確保するより低コストです。JSX要素オブジェクト自体をキャッシュすることで、親のコンパイル済み出力が同一の要素参照をReactに渡せば、memoラッパーなしでサブツリー全体の再レンダリングをスキップします。Meta Quest Storeは最大12%の高速化、Sanityは1,411コンポーネント中1,231個でレンダー時間を20〜30%削減、WakeletはLCPを2.6s→2.4s、INPを275ms→240msに改善したと報告しています。Next.js 16+では設定1行Expo SDK 54+ではデフォルトで有効です。

READ_FULL_LOGarrow_forward
Article · ECMAScriptREAD TIME: 5m

ECMAScript 2026の新機能

Ecma International2026年6月30日ECMAScript 2026仕様を正式承認し、7つの機能が追加されました。Array.fromAsyncは非同期イテレータを配列に変換する静的メソッドで、Array.fromの非同期版です。Error.isErrorinstanceof Errorより安全な型チェック手段を提供します。Math.sumPreciseArray.reduceの浮動小数点誤差問題を解消します。Uint8ArrayにはtoBase64toHexfromBase64fromHexメソッドがネイティブ追加され、サードパーティのエンコードライブラリが不要になります。Iterator.concatはカスタムジェネレータなしで複数のイテレータを結合します。JSON.parseのリバイバ関数が第3引数で元のソーステキストを受け取れるようになり、BigIntのロスレスシリアライズが可能です。最後に、MapWeakMapgetOrInsertメソッドが追加され、has-then-setパターンを置き換えます。

READ_FULL_LOGarrow_forward
Article · TypeScriptREAD TIME: 8m

TypeScript 7はTypeScriptで書かれていない

TypeScript 7はTypeScriptコンパイラをGoにネイティブポートしたもので、型システムや言語のセマンティクスを変えずに約10倍のスループット向上を実現しています。RustではなくGoを選んだ理由は、TypeScriptの内部データ構造であるAST・シンボルテーブル・型関係が循環参照を多用しており、Rustの所有権モデルと相性が悪いためです。GoのGCとゴルーチンにより、全面再設計なしの忠実なポートが可能でした。Anders HejlsbergはGoをネイティブ出力・データレイアウト制御・循環データ構造のすべてを備えた最もローレベルな言語と表現しています。VS Codeの型チェックは17.5秒から1.3秒に、SlackのCI型チェックは7.5分から2分以下に短縮され、言語サーバーの失敗コマンド数は80%減少しました。移行にはTypeScript 6.0を経由する必要があり、@typescript/typescript6互換パッケージでモノレポの段階的移行が可能です。Vue・Svelte・Astro・AngularのプログラマティックコンパイラAPIはTypeScript 7.1で提供予定です。

READ_FULL_LOGarrow_forward
Article · ツールREAD TIME: 4m

Tales from the Void:2026年6月振り返り

VoidZeroの2026年6月月次レポートでは、Vite+のベータ版リリースが最大のトピックです。Vite+はVite・Vitest・Rolldown・tsdown・Oxlint・OxfmtをvpDevvp testvp buildなど単一CLIに統合したWebツールチェーンで、アルファ版以降12以上のバージョンをリリースし、500以上のPRをマージ、1,300以上の公開リポジトリが依存しています。Vite 8.1は開発サーバー起動を高速化する実験的バンドル開発モードを導入しました。Rolldownは診断レンダリングのパフォーマンスを改善し、.vue.svelteファイルでのtsconfig.pathエイリアス解決をサポートします。Oxcトランスフォーマーは約2.5%高速化し、OxlintはRustベースのReact Compilerのlintルールを実験的にサポートしました。コミュニティからはAstro 7.0がVite 8を搭載、Next.js互換のViteフレームワークVinextの初ベータ、ViteConf 202610月15日のオンライン開催に決定したことが報告されています。

READ_FULL_LOGarrow_forward
Article · ツールREAD TIME: 9m

KnipでUnused・Ghost Dependencyを見つける

未使用依存関係はコードがインポートしなくなってもpackage.jsonに残り続けるパッケージで、ゴースト(ファントム)依存関係はソースコードでインポートしているが宣言していないパッケージです。後者は別パッケージの推移的インストールがnode_modulesにホイストするため偶然動作します。どちらも依存関係グラフを汚染し、サプライチェーン攻撃面を拡大し、ビルドを不安定にします。Knipはエントリポイント・インポート・エクスポート・マニフェスト・ワークスペース境界など、リポジトリ全体を解析してESLintのようなファイル単位ツールが見落とす両問題を検出するプロジェクトレベルのリンターです。npx knip --include unlistedでゴースト依存関係を、--include dependenciesで未使用依存関係を確認し、--fixでフィーチャーブランチ上で削除を適用します。CIではゴースト依存関係をブロッキング、未使用依存関係をアドバイザリ(--no-exit-code)として扱うと段階的な導入が可能です。--productionモードはテスト・開発専用のノイズを除外し、プロダクション向け解析を強化します。

READ_FULL_LOGarrow_forward
Article · Node.jsREAD TIME: 8m

Node.js 26.5.0(Current)

Node.js 26.5.0は新しいリリース担当者Stewart X Addisonとともに、SEMVER-MINORの追加を5件搭載しています。bufferモジュールにはBlobからテキストをストリーミングするblob.textStream()が追加され、ESMローダーにはテキストファイルをESモジュールとしてインポートする--experimental-import-textフラグが導入されました。perf_hooksモジュールはイベントループの反復ごとの遅延をサンプリングする新APIをサポートし、ReadableStreamTeestreamモジュールに公開され、tlsモジュールはハンドシェイク後にネゴシエートされたTLSグループを報告できます。主な修正としては、検証時に小さな位数のEdDSAポイントを拒否するcryptoパッチ、リテラルIPアドレスでdns.lookupをスキップするdgramの最適化、WHATWGストリームのチャンクオーバーヘッド削減、複数のVFSバグ修正があります。undici 8.7.0sqlite 3.53.3nghttp3 1.17.0に依存関係も更新されました。

READ_FULL_LOGarrow_forward
summarizeDigest_Summary

第28週は2つのランタイム分野の重要な発表で幕を開けました。Bun v1.4.0535,496行のZigコードをRustに完全書き直した成果物を搭載してリリースされました。64個のClaudeエージェントを同時活用して11日間で完了したこの作業はv1.3.14128個のバグを修正し、呼び出しごとに3 MBずつ漏れていたBun.build()の問題を解消し、バイナリサイズを約20%削減、HTTPスループットを2〜5%向上させました。APIトークンコストは約16万5千ドルで、エンジニア3名が1年かける代替案と比べて大幅に低コストです。別途、TypeScript 7がコンパイラをGoにネイティブポートした成果物としてリリースされ、約10倍のスループット向上を達成しました。VS Codeの型チェックは17.5秒から1.3秒に、Slack CIは7.5分から2分以下に短縮され、言語サーバーのエラーは80%減少しました。RustではなくGoを選んだ理由は、TypeScriptのASTとシンボルテーブルが循環参照に満ちており、Rustの所有権モデルと相性が悪いためです。

言語とツール面では、Ecma International6月30日ECMAScript 2026を正式承認し、7つの機能(Array.fromAsyncError.isErrorMath.sumPreciseUint8Array base64/hexメソッド、Iterator.concatJSON.parse raw-source reviver、Map/WeakMap.getOrInsert)が追加されました。React Compiler v1.0useMemoラッパーではなくスロットベースの_cフックを使用し、プロダクションで実績を上げました。Meta Quest Storeは最大12%のページロード高速化、Sanityはレンダー時間を20〜30%削減、WakeletはLCPを2.6秒から2.4秒に改善しました。VoidZeroのVite+ツールチェーンはベータに移行し、Vite・Vitest・Rolldown・Oxlint・Oxfmtを単一CLIに統合しました。Node.js 26.5.0blob.textStream()--experimental-import-text ESMフラグ、小さな位数のEdDSAポイントを拒否するcryptoパッチを追加しました。

依存関係の衛生管理もテーマとして浮上しました。KnipリンターはESLintのようなファイル単位ツールが見落とす未使用依存関係とゴースト(ファントム)依存関係をプロジェクトレベルで両方検出できるツールとして注目されました。--productionモードとCI向けの--no-exit-codeフラグは段階的な適用経路を提供します。

Key Takeaways
  • Bun v1.4.0はZigからRustへの全面書き直しで128個のバグを修正しバイナリサイズを約20%削減しました。Claudeエージェントへの支払いは約165千ドルで、エンジニア3名の1年分の作業を代替しました。
  • TypeScript 7のGoポートはコンパイル速度を約10倍向上させ、VS Codeの型チェックを17.5秒から1.3秒に短縮します。移行にはTypeScript 6.0を経由する必要があり、Vue/Svelte/Astro/AngularのプログラマティックAPIは7.1で提供予定です。
  • ECMAScript 2026が正式承認されました。Math.sumPrecise、Uint8ArrayのネイティブなBase64/hexエンコード、Map.getOrInsertなど7つの機能が追加され、一般的なサードパーティユーティリティパターンを標準で置き換えます。