MISONLN41's Blog

怪文書置き場

Firefox Fenixはリリースを急ぎ過ぎている。 Firefox 57と同じ轍を踏まないでほしいなと思った。

追記

なんだかんだでロールアウトが始まってしまいましたが、なんだかんだでそれなりに良いブラウザになってきたように思われます。モダンなUIでアドオンが使えて、Fennecと比べてサクサク動くようになったのは素晴らしいものだと感じます。アドオンの数も、ちょこちょこ見られる怪しげな挙動もこれから改善されていくでしょうし(アドオンに関しては誰でも自由に作って公開、ということはできずMozillaからお声がかかったアドオンだけFenixでも使えるようになる、という感じらしいですが...)。とりあえず、今は船出を迎えたFenixを応援しようと思います。

さらに追記

Mozilla Add-ons Blogにて、今後は更にアドオンの対応を拡充していくこと、そして、Firefox Nightlyにおいてaddons.mozilla.org上のアドオンをインストールする(あくまでテスト用)ことを可能にすることが発表されました。

リリースも迫りつつある?Fenixですが、現状にちょっと疑問を抱いたのでかきかき。

まずFenixって何ぞや

FenixはMozillaが開発しているAndroid向けブラウザのコードネームです。現行のFirefox for Android(コードネームFennec)を将来的に置き換えるべく、GitHub上で開発が進められています。おそらくはFenixにリソースを割いているのでしょうが、FennecはVer.68のメジャーリリースを最後に、現在はバグ修正とセキュリティアップデートのみが行われています。

Fenixに関して、長々と説明するよりも体験してもらう方が手っ取り早いでしょう。Androidユーザーの方は、とりあえずインストールして試してみてください。

play.google.com

試せば分かると思いますが、Fenixは現行のFirefox for Androidとは全く異なるUIを採用しています。そしてずっと速いです。体感ですが、現行のFirefox for AndroidChromeと比べて目に見えて遅いのに対してFenixはChromeに匹敵するレベルのスピードでサクサクとブラウジングできます。

その理由は、主にFenixがGeckoViewとAndroid Componentsを用いて再構築されていることにあります。

GeckoView/Android Componentsとは

GeckoViewは、簡単に言ってしまえばWebViewのGecko版のようなものです。WebViewはブラウザを作ることを想定した実装ではなく、最低限のAPIしかサポートしてませんが、一方でGeckoViewは再利用可能なライブラリとしてパッケージされたGeckoエンジンで、Geckoがサポートする機能を全て利用することができます。エンジンをパッケージ化して切り離すことで、複数のプロダクト(例えばFenixやFirefox Focus、Firefox Realityなど)に組み込むことが簡単になり、開発を加速させることができます。レンダリングをGeckoViewに切り離すことでソフトウェアの構造をクリーンにすることができ、GeckoViewを使用しない(Gecko自体は使用しています)Firefox for Androidと比べてパフォーマンスが向上します。また、GeckoViewは完全に自己完結型のライブラリなので、自分でコンパイルする必要もありません。

勿論、ブラウザを構築するためにはレンダリングエンジンの他にも沢山のものが必要になります。Android Componentsは、非効率な車輪の再発明を繰り返すことを防ぐべく、ウェブブラウザを構築するうえで必要なコンポーネント群、例えばURLバーやタブ、オートコンプリートなどをまとめたものです。

つまり、GeckoViewとAndroid Componentsを使うことで、Chromiumをフォークしたり、低機能なWebViewに手を出す手間から解放され、最低限の労力でブラウザを構築することができるようになるのです。

Reference Browserは、GeckoViewとAndroid Componentsを使用したブラウザの例です。名前の通り、リファレンスとして、最低限のブラウザが実装されています。この記事の本題ではありませんが、これを参考に「ぼくのかんがえたさいきょうのブラウザ with GeckoView & Android Components」を作ってみるのもいいでしょう。コンポーネント化されたGecko、是非デスクトップにも欲しいところです...需要がどれだけあるのかは分かりませんが。

本題 Fenixの現状

ここからが本題です。

先述の通りFenixはまだ開発中の段階で、一部のFirefox Previewをインストールしているユーザー以外では、一月後半からFirefox for Android Nightlyユーザーに向けて徐々にロールアウトが開始したという段階のものです。例えば、Firefoxの大きな特徴の一つである拡張機能ですが、現時点で利用可能なものはuBlock Originのみです。また、Mozillaは "おすすめ拡張機能(Recommended Extensions)" に選ばれている拡張機能の対応を優先して行うとし、現時点ではそれ以外の拡張機能のサポートについて、詳細は無いとしています。

もちろん、拡張機能が無いと使い物にならないわけではありません。Fenixは実用的な段階に達しつつあり、実際僕はスマホのメインブラウザをFenixにしています。

Mozillaは今年の上半期中にFennecユーザーをFenixへ移行することを予定しています。しかし、僕は今の状態で(既にFirefox PreviewからFirefox Nightlyへのロールアウトが始まっていることを考えると、今までのFirefox Preview 2.x→3.0のような大きな機能追加がこれからあるとは考えにくいです)Fenixをリリースするのはいささか急ぎ過ぎているように思えてなりません。たとえ「Chromeに並んだ」として、それだけでFenixを選ぶ人が居るでしょうか。敬虔なMozillianやデスクトップ版Firefoxとの同期を重視する人はFenixを選ぶかもしれません。しかし、今まで数々の拡張機能でのカスタマイズを楽しんでいた人たちは拡張機能への対応が不完全なFenixを選ぶでしょうか?そして、ChromeSamsung Internet等、ほかのブラウザのユーザーたちは、それらのブラウザと大して変わり映えしない、若しくは機能面で劣っているFenixにわざわざ乗り換えようと思うでしょうか?答えはノーです。

基本的に、Chrome以外のブラウザは、機能面で何らかの差別化を図ることによってユーザーを惹き付けています。ページの強制ダークテーマ化であったり、ジェスチャー操作であったり、ビルトインの広告ブロックであったり、スピードダイヤル機能などです。リリース時に、Fenixが予定通りにおすすめ拡張機能に対応すればそれは確かに機能面での差別化を図れる上、FenixをFirefoxたらしめるでしょう。しかし、単に拡張機能を動かせるブラウザであれば、Kiwi Browserがあります。それに、ページの強制ダークテーマ化なんかは、ビルトインのものと拡張機能のものとを比べるとその動作の軽さには大きな違いがあります。拡張機能に埋もれて、せっかくGeckoViewによって実現できた速さが犠牲になってしまうのでは元も子もありません。

なにも、Fenixをはじめから全部入りのブラウザにしろと言っているわけではありません。しかし、現状ではあまりにもほかのブラウザとの差別化が出来ていません。繰り返しますが、Chromeと並んだだけで選ばれるわけではないのです。並んだだけであれば、人々はChromeを選ぶでしょう。

Firefox 57も失敗だった?

話は変わりますが、2017年のFirefox 57のリリースを覚えているでしょうか。2倍の高速化、Chromeと同等のスピード、省メモリーを売りに、刷新されたUIとServoの成果物を取り入れたCSSエンジンを搭載し、Quantumの名を冠して颯爽と登場しました。そして、それは減少傾向にあったFirefoxのシェアを取り戻す......には至りませんでした。これに関しては様々な理由(旧式アドオンのサポートを切ったからとか、そもそもそんなに速くないとか)が考えられますが、一つに「Quantumを銘打ったリリースが早すぎた」ことがあるのではないかと思っています。実は、Project Quantumの目玉の一つに「WebRender」というものがありました。これもServoの成果物で、GPUを使ってレンダリングをすることでより高速に描画できるというものです。これを有効にすると、特にCanvasのパフォーマンスなどが著しく向上します。しかし、これはFirefox 57のリリースの時点では不安定だったため有効化されず、バージョンが60番台に入ってから徐々に有効化されていきました。僕は単純な速度至上主義者ではありませんが、高速化を謳った大型アップデートでWebRenderが投入されなかったのは、絶好の機会を取り逃した考えています。Quantumを銘打ったリリースを、あと一年とは言わずとも、半年ほど遅らせて、その間にWebRenderの完成度を高めて、Quantumリリース時には全環境で有効化できるようにするべきではなかったのか、と思ってしまいます。Mozillaとしては、今出さなければもう立ち直る機会はない、という考えに至ってFirefox 57でのQuantumとしてのリリースを行ったのかもしれませんが、少なくとも高速化をアピールするリリースでそのキー機能が一つ抜けていたことは事実です。結果として、速度面でChromeに完全に並ぶことはできず、シェアの減少を食い止めることはできませんでした。僕は、FenixのリリースでもQuantumと同様、急ぎ過ぎてコケてしまうのではないかと、それが不安です。

Firefoxには頑張ってほしい。だからこそ...

それが時としてwebdevの悩みの種になっていることはさておき、僕はWebの最大の特徴はその多様性と相互運用性にあると思っています。MicrosoftがEdgeHTMLを捨てた今、大規模なブラウザベンダーはAppleGoogle、そしてMozillaの3社のみです。Chrome/Chromiumがどんどん存在感を強めている今日、Webの多様性と相互運用性を守るためにも、Mozilla Firefoxは無くてはならない存在です。だからこそ、これ以上にシェアを減らすようなことはしないでほしい。

幸いにも、FenixはGitHubというMozillaにあまり関わりのない開発者でも気軽に参加しやすい環境(例えばデスクトップ版FirefoxはbugzillaというIssue TrackerとMercurialというコード管理システムで開発されていて、そこに参加するのはあまり手軽ではない)で開発が進められています。そして、ページの強制ダークテーマ化など、様々な機能追加についてのissueも上がっており、活発に議論が行われているように見えます。だからこそ、それらがリリース後に実装予定、もしくは実装する予定なしとされてしまうのはとても残念です。特にモバイルにおいて、今のFirefoxは絶体絶命と言ってもいいでしょう。全く新しいブラウザというのは確かに一つのブレイクスルーになるかもしれませんが、それで「Chromeに並ぶ」だけじゃ意味が無いんです(そろそろしつこい)。どうか、Fenixには選ばれる理由のある、差別化されたブラウザになってほしいと思いました。

 

途中から何かいてるのか自分でもわからなくなって、滅茶苦茶なことを言っている気もしますが、とりあえず僕が伝えたかったのは「このまま出しても数ある他のブラウザの互換にしかなれないよ」ということです。今もそうですが、「新しく作り直した」という、宣伝の、いわば切り札を使って出したものが他のブラウザと同じ(または違いが分かりにくい)ものでは本当にモバイル市場でのFirefoxの行く末が危ないかもしれないと思ったので、何かしら差別化して、選ばれる理由のあるブラウザになってほしい。そんなところです。主張に一貫性が無い。

 

参考:

https://www.soeren-hentzschel.at/firefox-android/fenix-firefox-nightly-umstellung/

https://www.soeren-hentzschel.at/firefox-android/die-ersten-bilder-von-mozillas-neuem-fenix-browser/

https://www.soeren-hentzschel.at/firefox-android/fenix-firefox-preview-3-0/

https://www.soeren-hentzschel.at/firefox-android/firefox-68-5-android/

https://github.com/mozilla-mobile/fenix/issues/2139

https://hacks.mozilla.org/2018/09/focus-with-geckoview/

https://hacks.mozilla.org/2019/06/geckoview-in-2019/

https://blog.mozilla.org/futurereleases/2019/06/27/reinventing-firefox-for-android-a-preview/

https://blog.mozilla.org/addons/2020/02/06/ublock-origin-for-firefox-android-nightly/

https://blog.mozilla.org/addons/2019/10/23/fx-preview-geckoview-add-ons-support/

https://blog.mozilla.org/addons/2020/02/11/faq-for-extension-support-in-new-firefox-for-android/