Signals(リアクティビティ)
UIの必要な部分だけを正確に更新する、細粒度のリアクティビティモデル。従来のコンポーネント全体の再レンダリングと対比される。
従来のリアクティビティとの違い
| モデル | 更新範囲 | 代表例 |
|---|---|---|
| コンポーネント再レンダリング | 状態変化したコンポーネントとその子孫全体 | React |
| Signals | UIのうち実際に変化した部分だけ | Solid.js, Angular, Svelte 5 |
Signalsでは状態の変化がどのDOM要素に影響するかを追跡し、最小限の更新だけを実行する。
採用状況
2025年時点でReact以外の主要フレームワークがSignalsをファーストクラスで採用:
- Solid.js - 当初からSignalsベース
- Angular - Signal Formsを導入
- Vue.js - Composition APIでSignals的パターン
- Svelte 5 - Runes(ルーン)として実装
- TC39 - JavaScriptの仕様への追加提案が進行中
なぜSignalsが支持されるか
本質的複雑性と偶有的複雑性の観点から見ると、コンポーネント全体の再レンダリングは偶有的複雑性を生む——実際には変化していないUIも再計算される。Signalsはその偶有的コストを削減する。
型システムによるMake Illegal States Unrepresentableと同様に、「更新すべきでない場所が更新される」という不正な状態をランタイムで防止する。