シグナル(リアクティビティ)
値(シグナル)が、自分に依存するUIの部分を自動的に追跡し、変わった部分だけを更新するUIフレームワークのリアクティビティモデル。仮想DOMなしで細粒度のリアクティビティを実現する。SolidJS、Svelte 5、Angular、Vueなどが採用している。
仕組み:シグナルは、getterとsetterを持つ値の入れ物である。計算やUIの一部がシグナルを読むと依存関係が自動的に登録され、シグナルが変化すると、それを実際に読んだ依存先だけが再実行される。ほかは何も動かない。仮想DOM(Reactの方式)との違い:そちらでは、変更によってコンポーネントが再レンダリングされ、差分アルゴリズムが何が変わったかを調べる。シグナルは何が何に依存しているかをすでに正確に把握しているので、差分計算なしで直接更新でき、多くの場合より速く、メモリ処理も少ない。概念は、signal(元の値)、derived/computed(自動更新される派生値)、effect(依存関係が変わったときに副作用を実行するもの)の3つ。先駆けはKnockoutやMobXの系譜で、SolidJSが広めた。今ではAngularのsignals、Svelteのrunes、Vueのrefsなど広く採用されている。近年のフロントエンドフレームワークで最も明確な潮流の1つである。仮想DOMの差分検出やハイドレーションと関連が深い。