プログラミング
Reynard: iOS 13以降向けの本格的なFirefoxウェブブラウザ
Reynard: A real Firefox web browser for iOS 13 or later (github.com)
要約
Reynardは、iOS 13以降向けのGeckoエンジン(Firefoxと同じ)を採用したウェブブラウザです。AppleのWebKitエンジンに縛られる他のiOSブラウザとは異なり、古いiOSバージョンでも最新のウェブサイトを表示可能にします。また、FirefoxのアドオンなどGecko独自の機能も利用でき、TrollStoreやAltStoreなどの方法でインストールできますが、まだ実験的な段階です。
全文翻訳
Reynard Browser
ReynardはiOS 13以降向けのGeckoベースのウェブブラウザです。
iOS上の他のブラウザがAppleのWebKitエンジン(Safariや全てのサードパーティ製ブラウザを含む)の使用を強制されているのに対し、ReynardはGeckoを使用します。これはデスクトップ版およびAndroidデバイス版のFirefoxブラウザを動かしているのと同じエンジンです。
このプロジェクトは主に、古いWebKitバージョンに固定されている古いiOSバージョンのユーザーを対象としています。WebKitはOSにバンドルされているため、これらのデバイスはエンジンのアップデートを受け取ることができず、最新のウェブサイトの読み込みに失敗することがよくあります。独立して最新の状態に保たれているGeckoを使用することで、Reynardはこれらのサイトを再び機能させることができます。
新しいiOSバージョンのユーザーも、Firefoxのアドオンやその他のGecko限定機能を含むWebKitの代替としてこのブラウザを使用できます。
インストール
最新のビルドは、リリース(Releases)ページからダウンロードできます。
このプロジェクトはまだ初期の実験段階にあるため、バグや機能不足が予想されることに注意してください。
TrollStore (iOS 14 - 16.6.1, 17.0)
最高の体験を得るには、Reynard-TrollStore.tipaビルドを使用してTrollStore経由でReynardをサイドロードすることを推奨します。これにより、JIT(Just-In-Time)コンパイルが自動的に有効になり、パフォーマンスが向上し、アプリの自動アップデートが可能になります。アプリの自動アップデートのためには、TrollStoreでURLスキーム(URL Scheme Enabled)オプションがオンになっていることを確認してください。
AltStore または SideStore (iOS 17.0.1+)
TrollStoreが利用できない場合、特に新しいiOSバージョンでは、AltStoreまたはSideStoreを使用してReynard.ipaビルドをサイドロードする必要があります。インストール中に、必ず「Keep App Extensions」オプションを選択してください。Reynardは機能するために拡張機能に依存しており、それらなしでは動作しません。ここをクリックして、AltStoreまたはSideStoreにReynardのAltSourceを追加することもできます。
重要
LiveContainerは、それ自体の制限によりサポートされていません。
署名に配布証明書を使用するサイドロード方法はサポートされていません。
その他のサイドロード方法はテストされておらず、それらから生じる問題に対するサポートは提供されません。
Jailbroken (iOS 13)
ジェイルブレークされたデバイスで、AppSync UnifiedをインストールしたFilza File Managerを使用して、Reynard-Jailbroken.ipaビルドをサイドロードしてください。JITコンパイルの自動有効化とパフォーマンスの向上も享受できます。
プレビュー
iOS 14 (iPhone 6S Plus, 14.1)
これらのサイトは、iOS 14で破損したり正しく表示されなかったりすることが知られています。以下のスクリーンショットは、SafariとReynardでの読み込み方を比較したものです。
github.com
Safari
Reynard
chatgpt.com
Safari
Reynard
apple.com
Safari
Reynard
iOS 15 (iPhone 7, 15.8.6)
iOS 26 (iPhone 13 mini, 26.1)
Reynardは最新バージョンのiOSでも問題なく動作します!
ビルド
警告
ビルド手順は参考のために以下に含まれています。ビルドプロセス中に発生した問題やエラーに対するサポートは提供されないことに注意してください。
プロジェクトをビルドするには、Xcode、Python 3、RustとCargo、およびldidが必要です。
リポジトリをクローンします。
git clone --recursive https://github.com/minh-ton/reynard-browser
cd reynard-browser
Geckoをダウンロードし、パッチを適用します。
./tools/development/update-gecko.sh
./tools/development/apply-patches.sh
依存関係とGeckoエンジンをビルドします。
./tools/development/build-idevice.sh
./tools/development/build-gecko.sh
Reynardを実行するには、XcodeでReynard.xcodeprojを開き、そこからビルド/実行してください。
注記
このプロジェクトは当初、好奇心から始まりました。BrowserEngineKitフレームワークなしでGeckoを実行できるかどうかを確認したかったのです。そうすれば、可能な限り古いiOSバージョンで実行できるようにさらに変更できると考えました。それが機能し、それ以来、より良いUIKit統合のためのエンジンパッチの開発、バグ修正、そしてこれを完全で実用的なブラウザに変えることに注力してきました。
もしあなたがこのリポジトリを見つけて興味を持ったなら、ぜひ協力や共同作業を歓迎します。私はここで学びながら進めており、iOSアプリ開発やGecko自体に関する事前の経験はあまりありません。そのため、どのような貢献、フィードバック、またはアドバイスでも大いに感謝されます。
謝辞
LiveContainer: アプリ拡張機能の処理とNSExtensionの使用。
StikDebugとidevice: ペアリングベースのJIT有効化サポート。
TrollStore: バイナリをrootとして起動し、JITを有効化。
Amethyst-iOS、dolphin-ios、DukeX、およびMeloNX: 様々なユーティリティ関数、多数のプライベートAPIの使用、JITメモリ処理。
BrowserEngineKitを使用したGeckoのiOSへの移植に関する既存の作業: 困難なエンジンの統合の大部分。
ライセンス
このプロジェクトは、GNU General Public License v3.0の下でライセンスされています。ただし、Firefox Geckoエンジンの変更を含むpatchesディレクトリは、Mozilla Public License 2.0の下でライセンスされています。