Google I/O 2023でのウェブ関連のトピック

今年のGoogle I/Oは、KeynoteとDeveloper Keynoteこそ観客をいれて通常運転に戻りましたが、セッションはすべて動画となり、コミュニティ要素はテキストチャットのみという形態となりました。来年こそは今までどおりのGoogle I/Oになってほしいですね。

今年のGoogle I/Oは、ChatGPTを代表としたGenerative AIの登場にとても影響を受けた内容だったな、という感想を持ちました。Bard はGoogle I/Oの前に公開されていましたし、すでに多くの人が試していたのではないかと思います。

ただ、Bardが日本語のサポートを今回遂げたのは、ちょっと驚きでした。Googleから登場する技術やプロダクトの多くが、近年英語のみ対応という状況が多く、多言語対応がなかなか進んでいない印象が僕にはありました。AndroidのApp Actionsなどがその代表例です。そんな中で、日本語と韓国語が英語の次にサポート言語として選ばれ、そして今日使えるようになったのは、日本語を母国語としている僕としてはとても嬉しく、誇らしいとさえ思いました。

Googleの日本拠点の方々がとても頑張ってくれた結果なのかもしれません。もしそうだとしたら、本当に感謝してますと言いたいです。

さて、今年もウェブについてのトピックがいくつかDeveloper Keynoteで語られました。ここではそれらを簡単に紹介したいと思います。

WebAssembly

昨年のGoogle I/Oでも実はアナウンスがされていたことではあるのですが、WebAssemblyがManaged-memory languages、つまりGCなどメモリ管理機構を持っているプログラミング言語をサポートするようになりました。

例えば、Dart & Flutter では、JavaScript にコンパイルするよりも WASM としてコンパイルすることで、実行速度が3倍になるそうです。

また、JetBrains 社が当初からアナウンスしていた通り、 Kotlin が WASM に対応した ことも伝えられました。

「Android 向けに1度作れば、それをウェブにも持ってくることができる」と話していましたが、それはちょっと言い過ぎかなぁ、と思います。とはいえ、何にしても、Kotlin で WebAssembly 対応のコードが書けるというのは、嬉しい限りです。

このWebAssemblyのManaged-memory languagesサポートは、僕の理解が正しければ、WebAssembly Garbage Collection (WasmGC) っていう機能によって実現されます。この機能は現在 Origin Trial をやっていて、計画だと Chrome 117 までやることになってます。それまでは、Origin Trial に登録して試すか、もしくは chrome://flags で WebAssembly Garbage Collection を有効にするか、どちらかで使うことができるようになります。

ただ、残念ながら Safari は確か未着手 なので、広く使えるようになるにはまだまだ時間がかかるのかなぁ、と思います。

WebGPU

WebGPU は、ウェブブラウザーが稼働するプラットフォームに搭載された GPU を利用することができる新しい API です。

今まで最速だった WebGL に比べて WebGPU を使った描画速度の比較では、3倍の速度を出すことができた、と発表されていました。

個人的には、今まではどうしても AI 関連の処理を行うためには、ブラウザ側にある情報を一旦サーバに送ってから処理をするっていう必要があり、どうしてもプライバシーの問題がつきまとっていたのかなと思います。もちろんクライアント側の GPU パワーに依存することになるのですべてが実現可能とは言えないと思いますが、クライアント側で AI 系の処理が完結するのは「それなら安心ね」と思う方も多いんじゃないかなと思います。

Firebase Hosting

ファイル群をホスティングして配信できるFirebase Hostingですが、今までNext.jsやAngularのサポートが行われてきました。今回、Astro、Nuxt、Flutter、そして Sveltekit のサポートがアナウンスされました。

まだそれらのフレームワークについてのドキュメントが公開されていませんが、Next.js と同じように、動的コンテンツを事前レンダリングしたり、Server Side Rendering を行ったりすることができるようになると思われます。

個人的には最近 Astro を使い始めたので、これは嬉しいニュースでした。

Interaction to Next Paint

ウェブサイトやウェブアプリの指標として Core Web Vitals がありますが、この指標に新しく Interaction to Next Paint (INP) が加わります。今まで Experimental 扱いでしたが無事卒業して、来年までには重要な指標として仲間入りとなります。

この INP の値が小さいほど、ユーザーはウェブアプリ内で操作に応じたフィードバックを素早く得ることができている、という指標となります。

また、INP の測定のために、各種フレームワークに直接統合可能なツールが提供されます。現時点では、Next.js、Nuxt、そして Angular 向けに提供されています。

Baseline

ウェブブラウザで実行可能な API は、特定のブラウザだけで利用可能な状態では、その魅力は半減してしまいます。主要なブラウザすべてで利用可能である状態になって初めて、その API を安心してウェブアプリから使うことができます。

ブラウザ間でサポートされている Ready to use な機能セットをリストアップしていくことで、ウェブアプリから実際に使ってよいのかどうか推測することから解放されます。

Baseline により、ブラウザ間で互換性がサポートされる API を開発者にわかりやすく提供します。MDN や web.dev に掲載されている API について、ブラウザ間で互換性がサポートされていれば、Baseline のマークがつきます。

Web Standards Interop といった取り組みと合わせて、開発者にとって API をより安心して利用することができる環境が整いつつありますね。

まとめ

Developer Keynote にて紹介されたウェブ関連の話を簡単に紹介してみました。これら以外にも、ウェブに関するセッション動画が数多く公開されています。

Web sessions at Google I/O 2023 - YouTube

今年の Google I/O は残念ながらライブイベント的な感じではありませんが、最近のテクノロジをキャッチアップする絶好のチャンスです。ぜひ上記のセッション動画を参考にして、これからのウェブを一緒に作っていきましょう!

このエントリーをはてなブックマークに追加

関連記事

macOSやLinuxからWindowsに移行したら快適になった話

「エンジニアチームの生産性の高め方」という書籍が出版されました

2023年のRemap

Remapにファームウェアビルド機能を追加しました

2022年を振り返って