謎のGoogle社内Webフレームワーク「Wiz」を追う
少し前、何気なく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について言及している人はいないだろうか。
Alex Russell先生もWizについて話してる、しかも2018年に。そして…
ちょっと待って、今度は Boq っていうのが増えた。
「Google Wiz Boq」で検索すると結構引っかかる。例えばこれ
BoqはナイスだけどWizとSoyはfが付くワードとsが付くワードで罵倒されてる。ちょっと待って、Soy って?また増えた。
Wiz はGoogleのほとんどのコンシューマー向けWebアプリで使われてるらしいです。
色々調べた結果(といってもGoogleやTwitterで検索しただけですが)、Googleは公開してる以上に内部でいっぱいフレームワークを持っているっぽいです。
ちなみに google/jsaction は Wiz の一部らしい。ReactとAngularの間で起こった戦争に巻き込まれないようにオープンソース化を見送ったとか(本当か?)。
他にも、Google内部のインフラに密接に結びついているからオープンソースにならないとか、いろんな書き込みを見かけました。
GoogleのUIフレームワークと言えばAngularとLit(旧Polymer)ですが、どちらも使われていないサービスが多数あるのは認識していて、そこに使用されているかもしれないフレームワークの一端(の噂)が垣間見れただけでもわくわくしました。
真相はGoogleに入らないとわかりませんが、もしかしたらそのうち公開されるかもしれませんし、QwikがOSS実装としてやってくれるのかもしれません。楽しみですね。
@leaysgurさんにWizとAngularの合体について教えてもらったので追記。
引用先のキーノートの動画はこちら。WizとAngularの件については 38:37 - 46:42 あたり。Angular Signalsの説明の途中でこの件に触れる。
ざっくりかいつまむとこんな感じ。括弧書きで左矢印がある部分 (←こういうの) は私の意見です。
-
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も使っているということかと推測します。