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

Web依存関係は壊れている。修復できるのか? — 2026年 第2週 JavaScript

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

calendar_todaysummarizeWeek 2-2026
エコシステム

Web依存関係は壊れている。修復できるのか?

Lea Verouは、Webプラットフォームがずっとファーストクラスの依存性管理システムを欠いており、Webpack・Rollup・esbuildのようなバンドラーが本来の用途とは異なる穴埋めをさせられてきたと論じます。node_modules/の直接デプロイ、Unpkg・JSDelivrなどのCDNインポート、パッケージのローカルコピー、import mapの利用といったバンドラー不使用の選択肢はすべて、セキュリティリスク・カプセル化の破壊・推移的依存性の処理不能・HTMLテンプレートツールへの強制依存という共通の欠陥を抱えています。import mapは特にlocality・composability・scalabilityを損ない、JSONで作り直したバンドラーに過ぎません。Verouはプラットフォームレベルの改善策として、<script type=importmap src>による外部import map、DOMメソッド経由のimport map注入(記事執筆中に全ブラウザで既に動作することを発見)、HTTPのLinkヘッダー経由のimport map配信、package.jsonへのclientDependenciesフィールド追加を提案します。さらに急進的なアイデアとして、bare specifierをサーバー側で解決できるspecifier: URLプロトコルとして扱う構想も示しています。結論は明確です。プラットフォームが依存性解決を担うまで、最初の依存パッケージを追加した瞬間から開発者は不当な複雑さを強いられます。

Web依存関係は壊れている。修復できるのか?
Read Articlearrow_forward
Video · 開発者体験32:20

Claude Codeに夢中になった(今なら分かる)

Theo(t3.gg)は、AnthropicがRate Limitを2倍に引き上げた後、2週間の休暇中にClaude Codeインスタンスを最大6つ並列で実行し、ワークフローが完全に変わった体験を共有しています。IDEを一度も開くことなく、Expo・Nativewind・ConvexをベースにしたTurbo Repoモノレポ構成のフルスタック画像生成スタジオ(Web + React Nativeモバイルアプリ)を構築し、Claude Codeのジョブ実行中のみTwitterへのアクセスをブロックするブラウザ拡張機能も作成しました。WebプロジェクトをExpoアプリ付きのTurbo Repoモノレポに変換するよう求める単一プロンプトで1時間以上かかり、2,300行のPRが生成され、Greptileはそれに5点満点の5点を付けました。月$200のサブスクリプションで約$1,500相当の推論を消費し、フル稼働でも週間限度の14%しか達しなかったと推定しています。主な注意点として、これらのツールはモデルのミスを見抜ける経験豊富なエンジニアに対してより効果的であること、--dangerously-skip-permissionsモードのリスク、そしてコンテキスト圧縮と履歴管理がまだ改善の余地があることを挙げています。

AI_INFOGRAPHIC
Claude Codeに夢中になった(今なら分かる) — infographicWATCH_VIDEOarrow_forward
Article · ツールREAD TIME: 4m

ESLint v10.0.0-rc.0リリース

ESLint v10の最初のリリース候補には、開発者向けの注目すべき変更点が3つあります。RuleTester APIにrequireDataアサーションオプションが追加され、trueに設定すると、プレースホルダーを含むメッセージを参照するmessageIdを持つすべての無効テストケースでdataオブジェクトの提供が必須となり、ルールメッセージとテスト定義の不一致を検出できます。また、失敗したテストケースのスタックトレースが改善され、invalid[N]インデックスとVS Codeターミナルでクリック可能なファイル:行参照が出力に含まれます。さらにmax-paramsルールにcountThisオプションが追加され(非推奨のcountVoidThisを置き換え)、"never"に設定するとTypeScriptのthisアノテーションが関数パラメーター数から除外されます。npm i eslint@next --save-devまたはeslint@10.0.0-rc.0としてインストール可能で、v10で導入される破壊的変更の移行ガイドも提供されています。

READ_FULL_LOGarrow_forward
Article · フレームワークアップデートREAD TIME: 12m

Angularコンポーネントを移動すると状態がリセットされるのはなぜ?CDK Portal徹底解説

Angularで条件付きレンダリングやngTemplateOutletを使ってコンポーネントを別のDOM位置に移動すると、コンポーネントは静かに破棄・再生成され、すべてのsignal・タイマー・フォーム状態がリセットされます。この記事では3つのCDKアプローチを比較しています。ngTemplateOutletはアタッチのたびに新しいembedded viewを生成し、@angular/cdk/portalTemplatePortalはポータルのライフサイクル制御を提供しますがアタッチ時に新しいviewを生成します。DomPortalのみが実際のDOMノードを物理的にreparentし、生きているコンポーネントインスタンスとすべてのAngular signal、さらに重要なこととして機能スコープのDIプロバイダーが保持されるよう元のinjectorコンテキストを維持します。実装はviewChild<ElementRef>effect()new DomPortal(element)を初期化し、実際のdivアウトレットに[cdkPortalOutlet]を使用します。ただし、ポータルは一度に1つのアウトレットにしかアタッチできないため、移動すると前のアウトレットから自動的にデタッチされます。

READ_FULL_LOGarrow_forward
Article · 言語理論READ TIME: 7m

わずか200行のJavaScriptで実装するストリーミングJSON

Krasimir TsonevはReact Server Componentsで使われる手法についてのDan Abramovの記事にインスパイアされ、約200行のコードでストリーミングJSONライブラリStreamsonを構築するプロセスを解説しています。サーバー側はTransfer-Encoding: chunkedContent-Type: application/x-ndjsonを使用し、normalize()関数でデータオブジェクトを走査して未解決のPromiseを_$1のようなプレースホルダーIDに置き換えます。各Promiseが解決されると{ i: id, c: value }形式のチャンクをres.write()で送信し、全Promiseが完了したらres.end()を呼び出します。クライアントはFetch APIのgetReader()でストリームを読み取り、各NDJSONラインをパースして、ミラーリングされたwalk()関数でプレースホルダーを後から届くチャンクで解決されるPromiseに置き換えます。制約として、サーバーとクライアントの両方を自分でコントロールできる必要があります。ライブラリはnpmにstreamsonとして公開されており、unpkg.com/streamson@latest/dist/streamson.min.js1KBのブラウザバンドルを提供しています。

READ_FULL_LOGarrow_forward
Article · ツールREAD TIME: 4m

ViteLandの最新情報:2025年12月振り返り

VoidZero2025年12月アップデートには、5つのコアプロジェクト全体にわたる重要な進展が含まれています。Oxlintはtypescript-eslintより8〜12倍速い型認識リンティングをアルファ版として提供し、ESLint互換のJSプラグインも追加されました。Oxfmtアルファは埋め込み言語サポートと実験的なimportソートを含み、npx oxfmt --migrate prettierコマンドでPrettierからの移行も容易になっています。VitestはOpenTelemetryによる実験的なトレーシングとexperimental.fsCacheフラグによる変換ファイルのディスクキャッシュをサポートします。Rolldownはデフォルトのチャンキングアルゴリズムを改善してチャンク数を削減し、postBanner/postFooterオプションとTypeScriptプロジェクト参照をサポートします。コミュニティへの採用も加速しており、Bun・Vue・Preact・date-fns・Shopify・Miro・Airbnb・MonkeyType(リント速度約3倍向上)がOxlintに移行し、FacetpackのReact NativeツールキットはBabelをOxcに置き換えて変換速度を36倍改善しています。

READ_FULL_LOGarrow_forward
Article · フレームワークアップデートREAD TIME: 2m

Ember 6.9リリース

Ember 6.9はEmber Release Trainの標準マイナーリリースで、ユーザー向けのフレームワーク変更はなく、Ember.js 6.9のすべての変更は内部修正、ドキュメント更新、またはバックポートされたバグ修正です。より重要なニュースはEmber.js 6.8が同時にLTS(Long Term Support)に昇格したことで、9リリースサイクル(54週)のセキュリティパッチと6サイクル(36週)のバグ修正を受けることになります。前のLTSは6.4でした。ツール面では、Ember CLI 6.9broccoli^4.0.0にアップグレードし、broccoliの依存ツリーにあるセキュリティ脆弱性と非推奨警告を解消します。新メジャーバージョンはAPIが完全に互換性があります。このアップグレードにより最小サポートNode.jsバージョンが20.19に引き上げられますが、これは更新されたbroccoliが必要とするrequire(esm)機能がそのバージョンにバックポートされているためです。

READ_FULL_LOGarrow_forward
summarizeDigest_Summary

第2週のJavaScriptの主題は、プラットフォームが長年解決できていない依存性管理です。Lea Verouの力作エッセイは、バンドラーが10年間埋め合わせてきた空白に正面から切り込みます。WebプラットフォームはJavaScriptにまともな解決モデルを提供したことがなく、CDNインポート・node_modules/デプロイ・import mapなどすべての代替手段がそれぞれ致命的な欠陥を抱えています。提案は具体的です: <script type=importmap src>、DOMメソッド経由のimport map注入(記事執筆中に既にクロスブラウザで動作することを発見)、HTTPのLinkヘッダー配信、package.jsonへのclientDependenciesフィールド。プラットフォームが解決を担うまで、最初の依存パッケージを追加した瞬間から複雑さが跳ね上がるという結論は厳しいものです。

ツールレイヤーは急速に動いています。VoidZero2025年12月アップデートは5つのプロジェクトが同時に前進する様子を示しています: Oxlintはtype-awareリンティングをtypescript-eslintの8〜12倍の速度で提供し、Oxfmtアルファはnpx oxfmt --migrate prettierマイグレーションパスを追加、VitestはOpenTelemetryトレーシングとexperimental.fsCacheを獲得し、Rolldownはチャンキングアルゴリズムを改善しました。Shopify・Airbnb・BunがOxlintに移行し、FacetpackはBabelをOxcに置き換えて変換速度を36倍改善しました。

リントガバナンスの面では、ESLint v10.0.0-rc.0RuleTesterrequireDataオプションを導入しmessageIdプレースホルダーとテストdataオブジェクトの一貫性を強制します。またmax-paramsにはTypeScriptのthisアノテーションを除外するcountThisオプションが加わりました。Krasimir Tsonevの200行Streamsonライブラリは、Transfer-Encoding: chunkedとNDJSONでフレームワーク非依存のprogressive JSONを実現する方法を示します。未解決のPromiseをプレースホルダーIDとして直列化し、クライアントでFetch APIのgetReader()で解決するアプローチは、React Server Componentsの核心アイデアをその本質まで蒸留したものです。

フレームワーク周辺では、DOMを跨いでAngularコンポーネントを移動するとstateがリセットされる問題に明確な答えが示されました: @angular/cdk/portalDomPortalのみが実際のDOMノードを物理的にreparentし、signal・タイマー・origin injectorコンテキストを保全します。Ember 6.96.8のLTS昇格は静かなガバナンスの節目です。Theo氏が休暇中にClaude Codeインスタンスを6つ並列で動かしてTurbo Repoモノレポを構築した動画は、AI支援エンジニアリングの現在地を率直に伝えるフィールドレポートです。

Key Takeaways
  • DOMメソッド経由のimport map注入はすでにクロスブラウザで動作しています。より広範なプラットフォーム提案が定着する前に、この依存性注入アプローチを今すぐプロトタイプしてみてください。
  • リントが多いプロジェクトをOxlintに移行して812倍の速度向上を検証し、npx oxfmt --migrate prettierも同時に実行してツールを一括統合しましょう。
  • Angularでコンポーネントを別のDOM位置に移動する際は、TemplatePortalの代わりにDomPortalを使用してください。signalとorigin injectorコンテキストを保全できる唯一の方法です。