MicrosoftはWindows、AppleはiOSやmacOS、GoogleはAndroidやChromeOSといったPC・スマートフォン向けのOSを開発しており、Windows搭載PCではEdge、iPhoneやMacではSafari、Android端末やChromebookではChromeといった自社製ブラウザがプリインストールされています。こういったメーカーはサードパーティー製ブラウザよりも自社ブラウザを推奨するケースがあるのですが、それだけではなく技術的な問題を残しておくことで競合ブラウザを蹴落とそうとしているとFirefoxの開発元であるMozillaが指摘しており、関連情報をまとめた「Platform Tilt」というページを公開しています。

Platform Tilt - Mozilla

https://mozilla.github.io/platform-tilt/



記事作成時点でMozillaが指摘している技術的問題点は以下の通り。

◆Apple

・App Storeはサードパーティー製のブラウザエンジンを禁止している



AppleはApp Store Reviewガイドラインの2.5.6で、サードパーティーブラウザエンジンの使用を以下の通り禁止しています。

2.5.6 Webを閲覧するアプリでは、適切なWebkitフレームワークとWebKit JavaScriptを使用する必要があります。

これにより、iOS版FirefoxではFirefox独自のブラウザエンジンであるGeckoが利用できず、macOS向けのApp StoreではFirefoxを配布することができません。そのため、MozillaはApp Storeのガイドラインを更新し、サードパーティーブラウザエンジンを許可することをAppleに求めているわけです。

・iOSでのサードパーティーマルチプロセスアプリのサポート



最新のウェブブラウザのほとんどがマルチプロセスアーキテクチャを採用しており、単一のブラウザアプリが、子プロセスを生成するひとつのメインプロセスを持つOSプロセスのコレクションとして実装されます。これには通常、各サイトを別個のプロセスにロードし、特定の機密機能(GPU使用率)を専用プロセスに移動することが含まれるそうです。この設計により、ブラウザはクラッシュに対する耐性が向上し、負荷時の応答性が向上し、悪意のあるエクスプロイトに対してより安全になり、Spectreのような情報漏えいの影響を受けにくくなります。ほとんどのアプリでこのレベルのきめ細やかな分離は必要としていませんが、さまざまなオリジンからインタラクティブなコンテンツを読み込むブラウザにとっては重要な要件になるとのこと。

iOSのSafariはマルチプロセスアーキテクチャを採用していますが、これはSafariのWebKitを使用しない限りサードパーティーアプリでは使用できない独自のメカニズムを採用しています。サードパーティーのブラウザエンジンをサポートするには、iOSは分離された子プロセスを作成して効率的に通信するメカニズムを提供する必要があるというわけです。

・iOSでのJITのサポート



最新のウェブブラウザに必要なコンポーネントである、パフォーマンスの高いJavaScript/WebAssemblyエンジンを提供するには、ブラウザプロセスが書き込み可能かつ実行可能なメモリ領域を作成できる必要があります。ただし、メモリ領域のアクセス許可を構成するために使用されるシステムコールでは許可されていないため、iOS上のアプリはメモリ領域を作成することができません。

これは一般的にセキュリティを向上させる健全なデフォルト動作ですが、ウェブブラウザではこの機能が必要です。その証拠に、iOS上のSafariのWebKitには例外として、書き込みおよび実行可能なメモリ領域を作成する機能が設けられているとのことです。

・iOS上のアクセシビリティAPI



iOSのアクセシビリティAPIドキュメントは不完全であり、ウェブブラウザがアクセシビリティウェブ標準をサポートするために必要なAPIの多くはドキュメント化されていないそうです。さらに、WebKitのオープンソース実装に基づいてそれらを使用する方法を推測することは困難になっています。これはWebKitに合わせて調整され、実行時にWebKitに読み込まれるクローズドソースのシステムバンドルが存在するためです。

・iOSでのメッセージの統合



iOSのSafariには、メッセージアプリで最近受信したリンクを送信元の連絡先と共に表示する便利な機能が含まれています。しかし、サードパーティー製のブラウザアプリはメッセージデータにアクセスすることができないため、同様の機能を実装することが不可能です。そのため、AppleはサードパーティーにもAPIを公開し、Safariと同様の機能を実装できるようにする必要があるとMozillaは主張しています。

・iOSでのブラウザデータのインポート



iOSでは履歴・ブックマーク・Cookieなどの閲覧情報にサードパーティーブラウザはアクセスできず、これらのデータをインポートするためのAPIも存在しません。これらは機密データですが、同様のインポート機能が主要なデスクトッププラットフォームでは可能となっているため、Appleはユーザーの同意を得てデータのインポート機能を実装すべきだとMozilla。別ブラウザへの乗り換えが難しくなるため、Safariからデータをインポートできるようにする必要があるとMozillaは主張しています。

・iOSのデフォルトブラウザの設定と確認



Mozillaは「サードパーティー製のブラウザアプリをデフォルトのブラウザに設定できるようにすることは、プラットフォームにとって重要な機能である」と主張しています。AndroidやmacOSではこの機能を実装していますが、iOSでは同機能はサポートされていません。

・iOS上のサードパーティーブラウザエンジン向けオリジンベースの関連ドメインに依存する機能



WebKit以外のブラウザエンジンでもパスワードの自動入力やワンタイムコード、パスキー、Apple Payなどの機能をサポートできるように、ウェブコンテンツのオリジンに基づいて関連付けられたドメインを指定できるようにする必要があるとMozillaは主張しています。

WebKitベースのブラウザは、ブラウザアプリに関連付けられたドメイン(Firefoxの場合はmozilla.comなど)をオーバーライドし、ユーザーが閲覧しているドメインに対してパスワードの自動入力を実行できるようにしています。

・iOSでのブラウザ拡張機能のサポート



ブラウザ拡張機能はウェブエコシステムの重要な部分であり、ほとんどの一般的なブラウザでサポートされています。ブラウザ拡張機能を使用すれば、開発者はブラウザに新しい機能を追加し、ユーティリティや使いやすさ、OSにインストールされている別のアプリとの相互運用性などを向上させることが可能です。

iOS版のSafariでは拡張機能をサポートしていますが、サードパーティー製のブラウザアプリではApp Store Reviewガイドラインの2.5.2に違反するため、拡張機能をサポートすることができません。サードパーティー製のブラウザアプリでのみ拡張機能がサポート不可となるのはおかしいとして、App Store Reviewガイドラインの緩和をMozillaは求めています。

・iOSでのベータテスト



ベータテストはウェブブラウザのリリースサイクルの重要な部分であり、人気の高いブラウザの場合、毎月新しいメジャーバージョンがリリースされます。そのため、ブラウザの安定性と品質は大規模でアクティブなベータテストに依存すると、Mozillaは主張しています。

iOS以外のプラットフォームでは個別のベータビルドやナイトリービルドを配布できるようになっているものの、iOSではアプリのベータ版を配布することがApp Storeでは許可されておらず、TestFlightの利用が推奨されています。ただし、TestFlightでは「1万人まで」というユーザー数制限が存在しているため、大規模なユーザーベースを持つブラウザの場合は大きな制限となってしまう模様。

◆Google

・Androidでのブラウザデータのインポート



Androidのサードパーティーブラウザでは、履歴・ブックマーク・Cookieなどの閲覧情報にアクセスすることができません。このデータはウェブブラウザのデータディレクトリ内に保存されますが、サードパーティーのブラウザからは直接アクセスできず、インポートを可能にするAPIやコンテンツプロバイダもありません。これらのデータは機密データですが、同様のインポート機能は主要なデスクトッププラットフォームでは実装されているため、Androidでも実装すべきとMozillaは主張しています。

・一部のAndroid機能ではユーザーのデフォルトのブラウザではなくChromeを起動する



AndroidでプリインストールされているGoogleアプリでGoogle検索を利用したり、Discoverで表示されるコンテンツをタップしたりすると、ユーザーがデフォルトのブラウザにChrome以外のブラウザアプリを選択していても、Chromeでコンテンツを開いてしまうそうです。外部リンクを開く場合はすべてのケースでデフォルトのブラウザで開くようにする必要があると、Mozillaは主張しました。

・Android上のサードパーティーブラウザエンジンでの低品質の検索結果



ウェブ検索エクスペリエンスはAndroidのさまざまな機能と緊密に統合されていますが、Firefoxに提供されているエクスペリエンスはChromeに提供されるものと比較して劣るとMozillaは主張しています。Android版Firefoxの場合、同じワード検索を行ったとしても、Firefoxの方が検索結果ページに表示される情報量が少なくなり、デザインの品質も低下するそうです。

以下の画像は左がAndroid版Chrome、右がAndroid版Firefoxで同一ワードで検索した場合の検索結果ページ。



◆Microsoft

・Windowsでのデフォルトのブラウザ設定



Windowsはサードパーティーのブラウザに対してデフォルトのブラウザに設定するための機能を提供しているものの、Windows 10の場合は数回のクリックを行い既定のブラウザを変更する必要があり、