ウェブアプリ

Firefoxをブラウザのタブ内で丸ごと動かす「Firefox in WebAssembly」が登場、開発におけるAIコストは合計400万円以上に相当


ウェブブラウザのタブ内でMozilla Firefoxを丸ごと起動できる「Firefox in WebAssembly」をPuter Labsが公開しました。外観だけを再現したFirefox風の画面ではなく、ウェブページを描画するGeckoやJavaScriptを実行するSpiderMonkeyまでWebAssemblyとして動作します。開発にはAIが大量に使われ、開発に費やしたトークンの使用料は2万5000ドル(約400万円)超に相当したとのことです。

Firefox in WebAssembly
https://developer.puter.com/labs/firefox-wasm/


Show HN: Firefox in WebAssembly | Hacker News
https://news.ycombinator.com/item?id=48926939


ブラウザでFirefox in WebAssemblyのページを開くと自動でロードが始まります。ロードが完了した後に「Launch Firefox」をクリックするとブラウザ内でFirefoxが起動します。


スタートページとしてPuter Labsのサイトが表示されました。Firefoxの画面全体はHTMLのcanvas要素に描画されているとのこと。ブラウザの中にブラウザが表示されており、うっかり外側のChromeのリロードボタンなどを押してしまいそう。


アドレスバーにURLを入力してウェブサイトを開くことも可能なのでGIGAZINEを開いてみましたが、日本語フォントが入っていないようで読むことはできませんでした。


Firefox in WebAssemblyではFirefoxのレンダリングエンジンであるGeckoをWebAssembly向けにコンパイルし、別のブラウザから読み込める形にしたとのこと。移植にはCやC++などで書かれたプログラムをWebAssemblyへ変換するEmscriptenを使用。ChromiumではなくFirefoxが選ばれた理由について、開発者は「単一プロセスで動かすための仕組みは、Firefoxの方が整っていたためだ」と説明しています。

ネットワーク接続にも工夫が必要だったそうです。通常のウェブページは自由にTCPソケットを作成できないため、Firefox in WebAssemblyからの通信はWebSocketを経由してPuterが運用するWispサーバーへ送られます。Wispは複数のTCPやUDP接続を1本のWebSocketにまとめて運ぶプロトコルで、開発者によるとTLSによる暗号化処理はWebAssembly版Firefox側で行われるとのこと。通信は中継サーバーを経由するため、外部サイトには中継サーバーのIPアドレスが表示されます。試した際はアメリカ・カリフォルニア州のIPアドレスと判定されました。


ウェブページの表示を軽くするため、WebGLを使ったGPUアクセラレーションも用意されています。さらにJavaScriptをWebAssemblyへ変換して実行速度を高める実験的なJITコンパイラも搭載。

Firefoxを起動できる状態にするまでにかかった期間は数日程度だったものの、実用に近づけるための高速化や安定性の改善に多くの作業が必要だったそうです。JITコンパイラの研究や不具合の調査にはClaude OpusやClaude FableなどのAIモデルが使われ、合計で約300億トークンを消費し、利用したトークンの料金換算額は2万5000ドル(約400万円)を超えたとのこと。


ソースコードはGitHubで公開されており、Linux上でビルドできます。スマートフォンでは入力やスクロールが正常に動かないという報告もあり、日常利用向けの完成品ではなくWebAssemblyの限界を探る実験として位置付けられています。

GitHub - HeyPuter/firefox-wasm: 🦊 Firefox in WebAssembly · GitHub
https://github.com/HeyPuter/firefox-wasm


Puterはより少ないメモリでブラウザ内ブラウザを実現する「Browser.js」も開発しており、クラウドブラウザやウェブサイトに組み込む自動操作用ブラウザとしての利用を想定しています。Browser.jsには今後Firefox向け拡張機能のような仕組みを追加する計画もあるとのことです。

なお開発者はFirefox in WebAssemblyの中でFirefox in WebAssemblyを開き、さらにFirefoxを重ねて起動することにも一度だけ成功したと報告しています。ただしFirefoxを三重にすると動作はかなり不安定になり、正常に読み込めたのは一度だけだったとのことです。

・関連記事
なぜFirefox(Gecko)は必要なのか?をMozillaが解説 - GIGAZINE

無料でオープンソースのブラウザ内デスクトップ環境「Puter」が2年間の開発期間を経てついにベータ版終了、370名のコミュニティ貢献者・GitHubで4万スター・40万回以上のダウンロードという驚異的な規模に成長 - GIGAZINE

無料でAI向けのブラウザ自動化ができる「Browser4」 - GIGAZINE

ウェブブラウザ草創期に消えていった多数のブラウザたち - GIGAZINE

ウェブサイトが表示されるまでにブラウザはどういった仕事を行っているのか? - GIGAZINE

in ウェブアプリ, Posted by log1d_ts

You can read the machine translated English article 'Firefox in WebAssembly' has emerged, al….