Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TSKaigi Hokuriku - TC39 Signals で描くJS/TS/フレームワー...

Avatar for teamLab teamLab PRO
November 26, 2025

TSKaigi Hokuriku - TC39 Signals で描くJS/TS/フレームワークの未来の姿

このスライドはTSKaigi Hokurikuの登壇に使用したスライドのアーカイブになります。

チームラボでは、フロントエンドエンジニアを募集しています。
少しでも、チームラボにご興味をお持ち頂けましたら、採用ページをご覧頂けますと幸いです。
https://www.team-lab.com/recruit/

TSKaigi Hokurikuは、TypeScriptの国内最大級技術カンファレンス「TSKaigi」の北陸地域版で、2025年11月に金沢で開催されたイベントです。
https://hokuriku.tskaigi.org/

Avatar for teamLab

teamLab PRO

November 26, 2025
Tweet

More Decks by teamLab

Other Decks in Technology

Transcript

  1. © teamLab Inc. アジェンダ 1. 自己紹介 2. TC39 Signals とは?

    3. 未来の姿 その1 : JS/TSだけでDOM操作が簡単に 4. 未来の姿 その2 : ブラウザ以外の環境でもリアクティブな処理を 5. 未来の姿 その2 : JSフレームワーク間のコアロジック共有 6. 余談 : 未来のJSフレームワーク Dathomir.js 作ってみました!! 2
  2. © teamLab Inc. TC39 Signals とは? 名称 5 JavaScript Signals

    standard proposal Stage 0 1 2 2.7 3 4 現在検討中
  3. © teamLab Inc. TC39 Signals とは? 7 リアクティブ変数を組み合わせたリアクティブ変数を作成する computed() signal()

    リアクティブ変数を作成する リアクティブ変数の変更に応じて実行する処理を定義する effect()
  4. © teamLab Inc. TC39 Signals とは? Signal リアクティブ変数を作成する 1. 値の比較

    更新された場合値に変化があるか検証 2. フラグ更新 変化した場合フラグを立てる 3. 通知 propagateを使って依存に変更フラグを通知 8 https://deepwiki.com/stackblitz/alien-signals/3.1-signals
  5. © teamLab Inc. TC39 Signals とは? Computed リアクティブ変数を組み合わせたリアクティブ変数を作成する 1. フラグチェック

    変更フラグを検証 2. 再実行 変更が通知されていたら関数を再実行 3. 通知 shallowPropagateを使って依存に変更フラグを通知 9 https://deepwiki.com/stackblitz/alien-signals/3.2-computed-values
  6. © teamLab Inc. TC39 Signals とは? Effect リアクティブ変数の変更に応じて実行する処理を定義する 1. フラグチェック

    変更フラグを検証 2. 実行 変更が通知されていたら関数を再実行 10 https://deepwiki.com/stackblitz/alien-signals/3.4-effect-scopes
  7. © teamLab Inc. JS/TSだけでDOM操作が簡単に 今 DOM更新 : 適宜記述 複雑なDOM操作困難 →

    基本React, Vue.js … 12 let counter: number = 0; const setCounter = (value: number) => { counter = value; render(); // 状態変更のたびに手動でレンダリングを呼び出す }; const isEven: () => boolean = () => (counter & 1) == 0; const parity: () => string = () => isEven() ? "even" : "odd"; const render: () => void = () => element.innerText = parity(); // 状態の更新 setInterval(() => setCounter(counter + 1), 1000);
  8. © teamLab Inc. JS/TSだけでDOM操作が簡単に 未来の姿 DOM更新 : effectで自動 依存関係が単純で 追いやすくなる

    →簡単なSPAは構築可能 になるかも! 13 const counter: Signal<number> = new State(0); const isEven: Computed<boolean> = new Computed(() => (counter.get() & 1 == 0); const parity: Computed<string> = new Computed(() => isEven.get() ? "eve : "odd"); effect(() => element.innerText = parity.get()); //effectはコールバック内の ソース(parity)を自動追跡し、変更時のみ再実行される // 状態の更新 setInterval(() => counter.set(counter.get() + 1), 1000);
  9. © teamLab Inc. JSフレームワーク間のコアロジック共有 今 18 z runtime system reactive

    system z runtime system reactive system z runtime system reactive system
  10. © teamLab Inc. JSフレームワーク間のコアロジック共有 遠い未来の姿 20 runtime system runtime system

    runtime system Signals reactive system Signals 3つの機能の 処理と型を覚えるだけ! Signal: Signal<any> Computed: Computed<any> Effect: Effect<any>
  11. © teamLab Inc. JSフレームワーク間のコアロジック共有 遠い未来の姿 22 runtime system runtime system

    runtime system runtime system Signals reactive system Signals 対応ライブラリ 共有できる - JS処理 - TS型, 推論 - ドキュメント
  12. © teamLab Inc. 未来のJSフレームワーク Dathomir.js 作ってみました!! 25 dathomir-js/dathomir A full-stack

    JS framework that works with the new order TC39 Signals ✅ SPA ✅ JSX構文による記述 ✅ Signals によるリアクティブ化 🚧 SSR対応(with Vite Environment) ✅ Typescript native https://github.com/dathomir-js/dathomir
  13. © teamLab Inc. 未来のJSフレームワーク Dathomir.js 作ってみました!! 26 dathomir-js/dathomir A full-stack

    JS framework that works with the new order TC39 Signals https://github.com/dathomir-js/dathomir npm install @dathomir/core @dathomir/plugin
  14. © teamlab Inc. takuma-ru チームラボ パッケージチーム 所属 TC39 Signals で描く

    JS/TS/フレームワークの未来の姿 TSKaigi Hokuriku 2025 ご清聴ありがとうございました
  15. © teamLab Inc. 配色  テキストと背景 1 |#202020 セクションタイトル等   テキストと背景 2 |##ffffff 背景色や濃い背景でのテキスト等

     テキストと背景 3 |#595959 本文等   テキストと背景 4 |#fed535 特殊なページの背景色等  30 テキストと背景
  16. © teamLab Inc. 配色  アクセント 1 |#fed535 標準テーマカラー   アクセント 2 |#ffedad 目立たせたくないテーマカラー 

     アクセント 3 |#f90100 警告等   アクセント 4 |#f29b03 用途自由   アクセント 5 |#0485f7 用途自由   アクセント 6 |#49dc10 用途自由  31 アクセント
  17. © teamLab Inc. タイポグラフィ 本文|Zen Kaku Gothic New / 18pt

    / Reguler / テキストと背景 3 (#595959) 強調|Zen Kaku Gothic New / 18pt / Bold / テキストと背景 3 (#595959) 34
  18. © teamLab Inc. 改訂履歴 ver1.0.0 - 2025/08/25 初版 ver1.1.0 -

    2025/08/26 全体デザイン調整 ver1.1.1 - 2025/09/09 社名修正, ロゴ最新化 46