技術とかの雑なToday I Learnedメモ

Web相互運用性JavaScriptランタイムコミュニティグループを読んだ

Web相互運用性JavaScriptランタイムコミュニティグループを読んだ

Web相互運用性JavaScriptランタイムコミュニティグループ

読んだ。

WinterCGというグループが設立され、WebブラウザではなくJavaScript開発環境としての標準API実装について議論されるらしい。

Web相互運用性JavaScriptランタイムコミュニティグループ

WinterCG

World Wide Web Consortium (W3C)

Web Hypertext Application Technology Working Group (WHATWG)

今まではW3CとWHATWGが標準化APIを開発してきたが、基本的にWebブラウザで動作することが前提で開発されていたらしい。

これら既存グループは常にWebブラウザの特定のニーズのみを考慮するよう用途が明白に制限されてきたため、Webブラウザとは少し異なる任意の環境で開発標準を最適化することは容易ではありませんでした。

Cloudflare Workersのようなサーバーレス環境、あるいはNode.jsやDenoのようなランタイムには、単にウェブブラウザと関連しない、および関連する、幅広い要件、問題、懸念が存在します。この食い違いのため、そしてさまざまな仕様の開発中にこれらの違いが明確に考慮されなかったため、実際には複数の環境で共通する機能に対し、非ブラウザのランタイムに独自の非標準ソリューションが実装される事態が生じてきました。

Webブラウザ以外での動作環境について考慮されることがあまりなかったので、ブラウザ以外のランタイムに標準API以外の独自機能が追加されたりしてて、それらをどうにかしたいという思いからできたみたい。

Web相互運用可能というのがキーっぽくて、Webブラウザで動作するAPIが他のランタイム(Node.jsやDeno、Cloudflareなど)でも同様に動作する or ほぼ同じ動作をするようにする必要がある。

ただしランタイムの違いは埋められるものではなく事実なので、そこは混同することなく意識する必要がある。記事の例だと、ローカルファイルシステムのフルアクセスについてはNode.jsとDenoがフルアクセス可能、Webブラウザはアクセスの制限をかける必要があり、Cloudflare Workersはそもそもローカルファイルシステムを持たない、など。

WinterCGが独立して、独自の標準APIセットを公開することを意図しているわけではありません。WinterCGから生まれる新しい仕様のアイデアは、まずW3CとWHATWGの既存のワークストリームで検討され、できるだけ幅広い意見の一致を得ることを目指します。ただし、他の環境(Cloudflare Workersなど)で必要な機能をWebブラウザでは特に必要でない、あるいは無関係であることが明らかになった場合、WinterCGは独自の仕様を進めることができます。

WinterCGが標準APIの策定をするというわけではなく、あくまでWeb相互運用可能かどうかをうまいことまとめて、無理な場合は独自仕様を作れるらしい。

動作環境によって求められるものが違う中、あくまでWebブラウザに必要なものを標準APIとして開発されてきていたものを、うまいことまとめて相互運用可能にするという取り組み。素晴らしいと思う。