Google Earthチームは先頃、Google EarthのWebAssembly移植版のベータプレビュー版をリリースした。新たな移植版は、Chromeの他、Edge(Canaryバージョン)やOperaなどChromiumベースのブラウザ、およびFirefoxで実行することができる。つまりこの移植版は、既存のEarth For Webバージョンに、ネイティブなC++コードベースとChromeのNative Clinet(NaCl)テクノロジを使用したブラウザを対象とした、クロスブラウザなサポートを提供するものだ。ただし、ブラウザのマルチスレッドサポートの違いにより、パフォーマンスの面では差異がある。
Google Earthは14年前にリリースされ、ユーザが自宅で気軽に、地球を探索できるようになった。Google Earthのこのオリジナルバージョンは、デスクトップインストールを目的としたネイティブC ++ベースのアプリケーションとしてリリースされた。世界全体をリアルタイムでレンダリングするには、ブラウザでは利用できない高度な技術が必要だったからだ。その後、AndroidおよびiOSスマートフォンにGoogle Earthが導入されたが、NDKやObjective-C++などのテクノロジを通じて、既存のC++コードベースが活用されていた。2017年になって、Chromeブラウザを対象に、Googleのネイティブクライアント (NaCl)を使用してC++コードをコンパイルし、ブラウザで実行するGoogle Earthがリリースされた。
Web Assembly、V8、Web CapabilitiesのプロダクトマネージャであるThomas Nattestad氏は、Google EarthのWebAssemblyポートの背景となった開発意図について、次のように説明している。
Webが進歩するにつれて、できる限り多くの人々にリーチして、が指先で世界全体を体験できるように、彼らのプラットフォームでEarthを利用できるようにしたかったのです。Webアプリはリンクが可能なので、従来よりも優れたユーザエクスペリエンスを提供することができます(…)。ソフトウェアのダウンロードに伴うウイルスのリスクがなく、構成が可能であるからです。つまり、Webの他のパーツに埋め込みできる、ということなのです。
(…)WebAssemblyを使用することで、ブラウザ間でアプリをよりアクセスしやすくするだけでなく、Google Earthで見たようなオンライン体験をスムーズにすることが可能になります。
WebAssembly移植版によってGoogle Earthは、Chrome、Edge(Canaryチャンネル)、Opera、Firefoxで利用できるようになった。ただし、現在のSafariやEdgeの公開バージョンでは使用できない。これらのブラウザはWebGL2を完全にサポートしていないためからだ。
ブラウザ間の違いは、Google Earthのパフォーマンスにも影響する。特に重要なのは、マルチスレッドのサポートである。Google EarthのテクニカルリードマネージャであるJordon Mears氏は、次のように説明している。
地球を現実世界の巨大な3Dビデオゲームだと考えてください。つまり私たちは、常にデータをブラウザにストリーミングし、それを解凍し、画面にレンダリングする準備が整えられています。この作業をバックグラウンドスレッドで行えるようになったことで、ブラウザ上でのEarthのパフォーマンスに明らかな改善が見られました。
マルチスレッドWebAssemblyはSharedArrayBufferと呼ばれる機能で有効になるが、SpectreとMeltdownというセキュリティ脆弱性のため、ブラウザから外されていた。ChromeではSite Isolationを導入してこの脆弱性を修正し、デスクトップ用のSharedArrayBufferを再度有効にした。その他のFirefoxなどのブラウザではSharedArrayBufferを引き続き無効だが、将来のバージョンでマルチスレッドのサポートを復活させる予定である。それまでの間、Earthはこれらのブラウザ上ではシングルスレッドで実行されるため、パフォーマンスが低下する可能性がある。
将来的なパフォーマンスの改善は、SIMDのサポートやダイナミックリンクなど、WebAssemblyに追加される予定の新機能にリンクされている。