世界を動かす技術を、日本語で。

「Servo」を試してみました

概要

Chrome 系ブラウザが 世界標準 となり、他のレンダリングエンジンはほぼ消滅。 新たな 選択肢 として Servo が登場し、Rust製で安全性と並列処理が特徴。 Servo はLinux Foundation Europe管理下で独立開発が進む。 現時点で実用的なブラウザはないが、将来的な可能性に期待。 FirefoxやGeckoの今後と合わせて、ウェブ標準の多様性維持が課題。

Chrome時代の到来とウェブエンジンの統一

  • Google Chrome が世界で最も普及した ウェブブラウザ となった現状
  • 主要な競合ブラウザも Chromium コードベース(Microsoft Edge, Vivaldi, Opera, Brave, Arcなど)
  • SafariFirefox のみが独自エンジン(WebKit, Gecko)を維持
  • 2000年代初頭は各社独自エンジン(Trident, Tasman, Presto, NetFront, Gecko, KHTML)を開発
  • 各エンジンの統合・消滅により、 WebKitBlinkGecko が主流に
  • OperaMicrosoft Edge も独自エンジンを放棄しChromium採用

オープンウェブへの危機

  • 実装が一つ しか存在しない標準は、実装自体が標準となる危険性
  • ウェブが Google の支配下に置かれる懸念
  • Chromium の制限やセキュリティ問題が他ブラウザにも波及
  • Manifest V3移行時にセキュリティや機能制限が話題に

新たな選択肢:Servo

  • ServoRust 製の完全新規ウェブレンダリングエンジン
  • マルチスレッド処理・メモリ安全性が最大の特徴
  • Chromium開発者も「深刻なバグの約70%がメモリ安全性問題」と指摘
  • Linux Foundation Europe が管理、技術委員会主導で開発
  • 「埋め込み可能なレンダリングエンジン」を目指し、ElectronやAndroid WebViewの代替も視野
  • 数十年ぶりの完全新規エンジンとして、既存ブラウザの教訓を活かし開発

Servoの現状と課題

  • フル機能のブラウザは未登場、 nightlyビルド でエンジンの試用可能
  • ブックマークや拡張機能、同期機能などは未実装
  • 多くのサイトでレンダリングバグや崩壊が発生
  • WikipediaCNN Lite など軽量サイトは正常動作
  • デモページ でグラフィック性能を確認可能、現状ではSafari等に性能で劣る
  • Acid3テストで 83/100点、主流ブラウザよりやや劣後
  • 今後の優先開発項目は Shadow DOMCSS Grid など

Servoの歴史とMozillaとの関係

  • 2012年 にMozillaがServo開発を開始、 2013年 にSamsungも参加
  • 安定化後はFirefoxのGeckoエンジン置換も計画されていた
  • MozillaはGeckoの一部のみServoコードに置換(Firefox QuantumでCSSエンジン刷新)
  • 2020年 の大規模レイオフでServo開発者が解雇され、Mozillaは開発から撤退
  • Servoは Linux Foundation 傘下で再始動、 Igalia などからも支援

Firefox・Geckoの今後とゲーム理論

  • 米司法省(DOJ) がGoogleの検索独占に対し裁判を進行
  • GoogleがChrome売却や他ブラウザへの検索契約停止を命じられる可能性
  • MozillaはGoogleからの収益が大半で、契約終了なら Gecko 開発維持困難
  • Firefoxが WebKitChromium/Blink に乗り換えるリスク
  • オープンソースコミュニティによるGeckoの継続開発やServoとの統合案
  • Gecko消滅の可能性もあり、WebKitやChrome/Safariの寡占化進行懸念

Servoの未来への期待

  • FirefoxやGeckoの将来にかかわらず、 Servo がウェブ標準多様性の希望
  • ウェブエンジンの選択肢拡大とオープンウェブ維持への貢献に期待

Hackerたちの意見

MozillaがFirefoxの技術的未来を捨てたのは、いまだに理解できない。Mozillaのことはほとんど意味不明だけど、金の流れを追うと納得できる。

どういう意味?Mozillaの収益の大半はFirefoxから来てるんじゃないの?

証拠もなしに名前を挙げるのは良くないけど、ある時点を過ぎると世界の理解に疑問を持ち始める。今、Mitchell Bakerが仕込みじゃないかと疑い始めてる。

俺はまだ、ServoがChrome/Chromiumの覇権に対抗できる存在になれると強く信じてる。Mozillaがなぜこれを捨てたのか、Linux Foundationがほとんどサポートしてないのも理解できない。

一連の退職劇とその周りのコミュニケーションを見てると、もっと単純な理由だと思う。Mozillaは当時、すごく政治的な会社に見えた。Servoは頻繁にニュースレターを出してコミュニケーションが上手だったし、Rustも勢いがあったから、これが逆鱗に触れたのかもしれない。Mozillaは今でも古いガードが残って管理されてる感じがする。特に上層部はそう。これはトップの無能さを示してるけど、悪意はないと思う。

Pocketの終了はまた悲しい例だね。エイプリルフールのジョークとして、MozillaがFirefoxを終了してコアビジネスに集中すると発表したら面白いのに。それって、人気のある製品を終了するという美しい抽象概念だよね。

Mozillaは、以下の長期的な戦略目標を考えると理にかなってると思う:Googleのお金から独立すること。非Googleの収入は2023年に1億5,000万ドルに成長した、前年の8,000万ドルから。MozillaはGoogleのお金を資産構築に使う割合が大きく、アドボカシーや他のプロジェクトに使うよりも多い。2023年には10億ドルの投資があった。純資産は毎年1億ドル以上増えてる。まだ本当に独立するには距離があるけど、その方向に大きなステップを踏んでる。彼らの収入に占めるGoogleのお金の割合は、2020年の90%から2023年には75%に減った。お金の流れを追うことが、実際に思ってることを示すとは思わない。追記として:やってもやらなくても叩かれる。Firefoxが独立したブラウザエンジンを維持するのは馬鹿だって言ってた人もたくさんいたし、みんながChromiumに切り替えるべきだって。人々はMozillaの比較的小さなアドボカシー支出を叩いて、Firefoxに集中すべきだって言うけど、Servoを続けるべきだとも主張する。ServoがQuantum以降のFirefoxに大きな違いをもたらすことはなかっただろうけど。

何が起こるかは分からないけど、Blinkの独占に挑戦するために https://ladybird.org/ もあるよね。

成功してほしいな。今は直接寄付できるから、成功を願ってる人たちが手助けできる。これらの寄付はMozillaとは違って、ブラウザの開発に直接使われるはずだよ。

Ladybirdの意味が全然わからない。フルタイムのエンジニアがいて寄付も募ってるから、明らかに趣味プロジェクト以上のものだよね。もしかしたら俺の考えが間違ってるかもしれないけど、機能やセキュリティ、パフォーマンスで大きなエンジンと競争できるとは思えない。Blinkがペースを作ってて、Webkitはなんとかついていくのがやっと、Geckoは徐々に遅れを取ってる。これらのチームはLadybirdチームよりも何桁も大きい。もしBlinkの支配がウェブにとって脅威だと思うなら、代替エンジンがあっても、そのエンジンを使うウェブ開発者が増えないと意味がない。これらのことはServoにも当てはまるけど、少なくとも彼らの技術的なプロジェクト目標(埋め込み可能、モジュール式、並行処理、安全なメモリ)はまあまあ魅力的に聞こえる。Ladybirdも似たような目標があるかもしれないけど、少なくとも彼らのウェブサイトには技術的な目標が書かれてない。

面白そうだけど、Swiftで書くつもりなの? C++でブラウザエンジンを書くなら、好みじゃないけど、現実的で結果にフォーカスしてるのはわかるよ。Rustで書くなら、ちょっと夢見がちかもしれないけど、少なくともC++を置き換える可能性がある言語を選んでるってことだよね。他の言語だと、会社内で政治的な力を持ってる人がその言語が好きだからって理由で「全部Swiftで書き直すよ」って感じになりそう。ブラウザを作るんだから、最も人気のあるOSのサポートが「改善中」な言語で本当に作りたいの?

正直に言うと、Ladybirdの魅力が技術的な観点からはあまり理解できないんだ。既存のエンジンと同じくC++で書かれてるし(確かに少しSwiftも使われてるけど、ほとんど影響ない)、GeckoやBlinkに対してどんな利点があるの? Servoにはセキュリティや並列処理に関する明確な技術設計があるのがわかるんだけど。

Dogemaniaテストは、M4 Pro MacBook Proでスムーズに60 FPSで動いてたけど、400枚目あたりで止まった。ChromeでDogemaniaを1400枚まで60 FPSで動かしてたけど、その時点で飽きてタブを閉じた。

わお、俺もこれやってみた。FirefoxとChromiumの違いは落ち込むほどだった。Chromiumではほぼ常に100 FPS以上、最高で1,000までいったけど、FFは500を超えるのがやっとで、60以下に落ち込んだ。完全に公平なテストではないけど、Chromiumには拡張機能も入れてないし、たまに頑固なウェブサイトを使うためだけに使ってるから、比較パフォーマンスの教訓にはなった。

dogemaniaがアニメーションの後に画像を静止させるなら、恥ずかしいほど最適化できるんじゃない?アミガが無限にこれをできない理由は何?

現在のロードマップでは、Shadow DOMとCSS Gridが優先事項として挙げられてる。私はCSS Gridのサポートに取り組んでるところで、「名前付きグリッドラインとエリア」のサポートをもうすぐ実装する予定。これでたくさんのウェブサイトが正しくレイアウトされるはず。私のプロジェクトだから偏見があるけど、ServoがCSS Gridに使ってるアプローチはかなりクールだと思う。実際の実装が外部ライブラリ(Taffy [0])にあって、スタンドアロンで使えるし、RustのUIエコシステム全体で広く使われてる。Blitz [1]ウェブエンジン(FlexboxとBlockレイアウトにもTaffyを使ってる)、Zed [2]テキストエディタ、Bevy [3]ゲームエンジンでも使われてるからね。このアプローチが、ウェブエンジンを独立して使えるモジュールに分解して、公開APIを持つことで、ウェブエンジン開発に参加しやすくなることを期待してる。各パーツを個別に理解できるから、将来的に新しいウェブエンジンを作るのも簡単になると思う。 [0]: https://github.com/DioxusLabs/taffy [1]: https://github.com/DioxusLabs/blitz [2]: https://zed.dev [3]: https://bevy.org/

ウェブブラウザエンジンの機能を実装した経験は、HTMLやCSSの書き方に何か影響ある?それとも、他の人たちと同じように「css grid チートシート」を週に3回ググってるの?

それが機能の肥大化や断片化につながることを心配してない?Googleに対抗するなら、焦点を絞らないと。

(Taffy [0]) スタンドアロンで使えるし、RustのUIエコシステム全体で広く使われてるんだよね。Blitz [1] ウェブエンジンでも使われてるし(BlitzもTaffyを使ってFlexboxやBlockレイアウトを実現してる)。Blitzの名前を聞くのは初めてだな。面白そうで野心的だね。多分、隠れた本物のウェブエンジンなんじゃないかな。ServoはRustがデビューした頃には広く知られてたし。

ウェブエンジンを独立して使えるモジュールに分解して、公開APIを持つのが好きだな。何年か前にWebRTCを見て、「なんでクソみたいなSkypeのパクリを作るのが、50行のJavaScriptか、C++プロジェクトでChromiumの半分をコンパイルする悪夢のような1週間のどちらかなんだろう?」って思ったんだ。やっとWebRTCのRustクレートが出たみたいで、良かった。ウェブアプリだけがこの投資の恩恵を受けるべきじゃないよね。

Servoを「新しい」って言うのはちょっと無理があるかな ;)

他のエンジンよりも遅れて始まったけど、まだ採用されていない素晴らしいアイデアがいくつかあるみたいだね。

Mozillaは、未来の技術を作っておきながら、競合にそれを渡しちゃった「歴史に名を刻む企業」の仲間入りをしそうな気がする。RustやServoでね。Googleに追いつこうとしてるように見える会社が、実際にはブラウザ開発の分野で一時期Googleを追い越してたなんて、驚きだよ。それなのに、結局は追求する価値がないって判断したんだね。

人々にお金を払わせるのは難しいよね。10€のビールには喜んでお金を払うのに、WhatsAppの0.99€の生涯ライセンスを回避する方法を「友達」に聞くなんて。

会社がGoogleに追いつこうとしてるように見えるのに、実際には一時期Googleを追い越してたなんて、驚きだよ。それなのに、結局は追求する価値がないって判断したんだね。Googleは2006年頃からMozillaの主な収入源だし、Mozillaが存在するためにはGoogleを喜ばせておけばいいだけなんだ。大きな利益相反があるけど、Mozillaにとってはいい取引だね。

MozillaがGeckoを捨てることに決めたら、ハードフォークしてMozillaを見限る時が来たってことだね。今がその時かもしれない。編集:Geckoを捨てるのはChromiumのことで、Servoじゃないよ。

これは公平だと思う。Mozillaは生き残る価値がない。新しいプレイヤー、例えばServoやLadybirdを応援すべきだよ。Googleからの巨額の予算(年間5億ドルだっけ?)があっても、Firefoxを含むすべてを台無しにした。BakerがMozillaを妨害するために送り込まれたスパイみたいに見える。要するに:Googleに資金提供されて、彼女の力で全てをダメにしようとしてる。

Mozillaは終わった。彼らは全ての卵をGoogleのバスケットに入れちゃったし、すぐにそれも失うだろう。彼らには前に進む道がない。ServoとLadybirdが未来だよ。LadybirdがMozillaよりもずっと少ない人数でこんなに早く進んでいるのに驚いている。あのプロジェクトがやっていることを見るのは本当に刺激的だ。

もっとこういう感じだと思ったんだ:ウェブブラウザ用に作られたRust、Servo。

これはオープンウェブにとっていくつもの意味で危険だ。標準の機能する実装が一つしかないと、その実装が標準になってしまう。これが問題だとはまだ理解できない。仕様を実装するエンジンが、Google以外の団体によって形成された委員会によって管理されている限り、オープンソースであれば問題ないと思う。今の私たちの行動が問題で、資源の無駄遣いだ。ブラウザエンジンはLinuxカーネルのように、一つのエンジンで異なるディストリビューションになるべきだ。

それには反対だな。ブラウザエンジンが多ければ多いほど、どれか一つのセキュリティの脆弱性が与えるダメージは少なくなる。これはメモリ安全な言語でも重要だよ。論理エラーも同じくらいダメージを与えることがあるから、例えばLog4jの脆弱性みたいに。

理論的にはそうだね。でも実際には、唯一のメンテナーの利益とユーザーの利益が一致しているときだけ。これらの利益は変わるから、独占は避けた方がいいよね。最近のmanifest v2の非推奨はコミュニティにあまり好かれてないし、長期的なblinkベースの代替案も存在しないみたいだし。

Mozillaがこんな風になっちゃったのは本当に悲しい。競争力のあるブラウザ会社が活動家に変わっちゃった。だからこそ、コアプロダクトが衰退していったのも無理ないよね。

プロジェクトがRustで書かれると、なんでそれが話題になるんだろう?プロジェクトの背後にいる人たちがRustを書けることを証明することに焦点が当たってる気がする。良いソフトウェアを書くことよりもね。Rustのサークル以外の人たちは気にしてるのかな?Servoはその典型的な例だと思う。ウェブ標準はOOPを重視して作られていて、ガベージコレクションを前提にしてることが多いから、ブラウザは最終的な成果物であり、Rustプログラマーにとっての聖杯みたいなものだよね。私もそれはすごいと思う。現実的にはServoが本物のブラウザになることはないだろうし、たぶんRusto-electroniumのレンダリングエンジンに終わると思うけど、それでも大きなことだよね。とにかく、愚痴はこれくらいにして、彼らに幸運を祈るよ。