Open9

謎のGoogle社内Webフレームワーク「Wiz」を追う

tomoamtomoam

少し前、何気なくTwitterを見てたらこんなツイートを発見。

Googleの内部のWebフレームワーク…?
起動時はアプリのJSを読み込まない…?
インタラクティブになったときにコードをダウンロード…?

ツイートしてるのはGoogleでLitを開発しているJustinさん。この技術をLitに活かせないか模索するとツイートしてる。

Litの開発をされている方なので、Litを違う名前で読んで遊ぶアイロニーとかユーモアみたいなものかな、フロントエンドはピュアなJavaScriptをvanillaって言うしな、なーんて思ってたら・・・

AngularのIgor MinarさんもWizが存在しているかのように話している?!
そして…

Igorさんが「QwikはWizのOSSとしての再実装」と書くと、そこにAngularJSの作者であり、現在Builder.ioでPartyTownやQwikなどを開発しているMisko Heveryさんが登場し、「QwikはWizにインスパイアされたけど、Wizよりイノベーティブだよ」みたいなことを書いている…!

個人的にQwikのアプローチに興味を持っているんだけど、かなり発展途上だと思っていた。でもアイデアそのものは既にGoogle内部のWebフレームワークとして実装されているようである。本当だろうか?そんな内部フレームワークが本当に存在するのだろうか。

他にWizについて言及している人はいないだろうか。

tomoamtomoam

Alex Russell先生もWizについて話してる、しかも2018年に。そして…

ちょっと待って、今度は Boq っていうのが増えた。

tomoamtomoam

Wiz はGoogleのほとんどのコンシューマー向けWebアプリで使われてるらしいです。

tomoamtomoam

色々調べた結果(といってもGoogleやTwitterで検索しただけですが)、Googleは公開してる以上に内部でいっぱいフレームワークを持っているっぽいです。

ちなみに google/jsaction は Wiz の一部らしい。ReactとAngularの間で起こった戦争に巻き込まれないようにオープンソース化を見送ったとか(本当か?)。
https://github.com/google/jsaction/issues/15#issue-465915314

他にも、Google内部のインフラに密接に結びついているからオープンソースにならないとか、いろんな書き込みを見かけました。

tomoamtomoam

GoogleのUIフレームワークと言えばAngularとLit(旧Polymer)ですが、どちらも使われていないサービスが多数あるのは認識していて、そこに使用されているかもしれないフレームワークの一端(の噂)が垣間見れただけでもわくわくしました。

真相はGoogleに入らないとわかりませんが、もしかしたらそのうち公開されるかもしれませんし、QwikがOSS実装としてやってくれるのかもしれません。楽しみですね。

tomoamtomoam

@leaysgurさんにWizとAngularの合体について教えてもらったので追記。

https://x.com/leaysgur/status/1770596335517134942?s=20

引用先のキーノートの動画はこちら。WizとAngularの件については 38:37 - 46:42 あたり。Angular Signalsの説明の途中でこの件に触れる。
https://www.youtube.com/live/nIBseTi6RVk?si=Y0gc3yoBEwc3Lzn1&t=2317

ざっくりかいつまむとこんな感じ。括弧書きで左矢印がある部分 (←こういうの) は私の意見です。

  • WizはGoogle社内のフレームワーク。オープンソースではない

  • WizはGoogleのフラッグシッププロダクトに使われている(Search、Meet、Photo、Playなど)

  • WizとAngularはどちらも10年以上前から存在する

    • Wizはlatency sensibleなコンシューマー向けに
    • Angularはhighly interactiveなエンタープライズ向けに
  • WizとAngularはお互いの機能(←特徴のほうが適切かも)を求め合っていた

  • 昨年、Angular側がSignal Primitiveを開発しようとしてしていたときに、Wiz側も同じことをしようとしていた

    • それなら、共有してはどうだろう
  • 小さいプロダクトからやってみよう

    • YouTube (←さすが、ユーモアを忘れない)
  • すでにYouTubeではAngular Signalsが使われている

  • YouTubeのWebアプリでは、リビングルーム(テレビやゲーム) / デスクトップPC / モバイル(ローエンド含む) という3つのプラットフォームを主にサポート

  • 現在はそれぞれ別々のレンダリング手法

    • リビングルームとモバイルは仮想DOMアプローチ
    • デスクトップはPolymer、現在は非推奨
    • 統一できたらとても価値がある
  • Signalでパフォーマンス目標を達成できるか? (←このへんは動画内に写っているスライドそのまま)

    • Universal browser support
    • Small bundle size
    • Tops synthetic benchmarks
    • Are performance gain scalable and stable over time?
    • Can we model existing pattern with signals?
    • Do signals incentivize healthier code?
  • ローエンドデバイスで入力のレイテンシーが35%改善

  • ローエンドデバイスでVideo Playerが60FPSサクサク

  • ローエンドデバイスでShortsのスワイプが60FPSサクサク(←これ最新のハイエンドデバイスでもカクつくいてたよね?それが修正されてるかも)

  • 最終的に、良いパフォーマンス、シンプル、メンテが容易になった

  • これからもコラボを続けていく

    • もっとコードをシェアしたり
    • これによるベネフィットをAngularも享受しより良いものになっていくだろう

AngularがWizと合体するというより、Angular SignalsがWizに採用された、ということみたいです。Angular SignalsはAngular自体に依存するものではないようなので、こういうことが可能なのでしょう。
レンダリングシステムのコアとしてAngular Signalsがあり、それをAngularもWizも使っているということかと推測します。