EmberConf 2024 - Standardizing Autotracking Via TC39 Signals with Daniel Ehrenberg
https://www.youtube.com/watch?v=ji7zSHCX6d8
DeepSRT.icon
EmberConfに初参加したという開発者のリトル・デン氏は、BloombergでJavaScriptのインフラストラクチャとツールチームに所属し、金融情報プラットフォームであるBloombergターミナルの開発に携わっている。以前は別の企業にも在籍し、2016年からTC39に貢献、BigIntやハッシュタグベースのprivate filedとメソッドなどの機能を手がけてきた。現在はECMAの副会長を務め、ニューヨークに在住している。
Bloombergの主力製品は金融情報ターミナルであり、これは実際にはElectronアプリとして構築されている。Web技術を基盤としているため、Webアプリケーションと同様の問題に直面しており、JavaScriptやCSSのような基盤技術への投資を行っている。
UIフレームワークの主な役割は、DOMを最新のデータで更新することであり、ビューはモデルの純粋関数であると考える。Ember.jsでは、テンプレート構文とJavaScriptを使用してこれを実現し、自動追跡機能により、言語の変更に応じて画面上の表示を自動的に更新できる。Ember.jsの自動追跡はクロックに基づいており、必要な部分のみを更新する。
様々なフレームワークが、独立してカニのような形状に進化してきたように、UIフレームワークも同様に、リアクティブレンダリングの実現方法において収束しつつある。これは、各フレームワークが異なる時期に異なる部分を正しく理解してきた結果であり、アイデアの共有も影響している。
現在、TC39で標準化が提案されているAPIは、Class Signalを使用し、初期値の設定、取得、設定、およびキャッシュされたgetterのような計算を行うことができる。フレームワークは、レンダリングのタイミングや関連部分を特定するために、より微妙なAPIを必要とする。このAPIにより、フレームワークに依存しないリアクティブモデルを構築できる。
Yehuda氏とGoogleのチームと共に、TC39にSignals Proposalsを提示した。これは、カウンターをインクリメントするボタンや、現在の値が偶数か奇数かを表示するオブジェクトなどのデータ構造で使用できる。このリアクティビティのためのSIgnalsを持つオブジェクトは、例えば、PreactやVue.jsなどのフレームワークでも使用できる。
標準化の目的は、エコシステムに影響を与えることであり、その出発点はエコシステムである必要がある。Promises/A+プロジェクトのように、異なるライブラリがAPIを統一し、互換性を実現しようとする試みから学ぶ必要がある。アプリケーションは、Signalsを採用するために変更を加える必要はない。相互運用性は重要な要素であり、複数のマイクロフロントエンドで共通のデータ層を共有する場合などに役立つ。自動追跡は、現在の計算されたシグナルのグローバル変数に依存しており、JavaScript言語が共通の参照点となることが望ましい。
ECMAのTC39を通じてJavaScriptの機能が標準化される。TC39プロセスはEmber.js RFCプロセスに類似しており、4つのステージを経て標準化される。Signalsは現在ステージ1にあり、実現にはまだ多くの作業が必要である。
Signalsのプロトタイプ作成を支援するために、エコシステムレベル、特にフレームワークレベルでの作業が必要である。BloombergのDolan Mew氏とEric Yans氏と共に、シグナルライブラリの実装に取り組んでいる。また、Noox Populi氏が、トラック組み込みとトラックツールボックスをシグナルに移植した。Alex Lifart氏がGlimmer Nextのブランチでこのポートを行い、Chris Thurn氏がWarp DriveへのSignalsの統合に取り組んでいる。Ember.jsコミュニティからの多くの貢献者に感謝しており、協力を継続していきたいと考えている。
関心のある方は、Discordに参加したり、定期的な会議に参加したり、提案を推進する共同チャンピオンとチャットしたりすることができる。ポリフィルのバグ修正、テストの作成、アプリケーションへのシグナルの統合、問題の提起、ECMAおよびTC39への参加など、様々な方法で貢献できる。