エピソード 28: フランス、パリの Mark Cogan(2022 年 1 月)
前のエピソード
2022 年、iOS 版 Chrome は 10 周年を迎えます。 Chrome は最も広く使われている iOS アプリの 1 つで、現時点では米国の App Store で第 2 位のユーティリティ アプリにランクインしています。
iOS 版 Chrome は、同期、翻訳、シークレット モード、パスワード マネージャー、自動入力など、ユーザーに愛用されている Chrome の優れた機能をすべて備えています。 iOS 版 Chrome は、マルチウィンドウやデバイス全体でのパスワード自動入力など、iOS のネイティブ機能と統合されています。
ただし、iOS 版 Chrome が他の Chrome プラットフォームの実装とは大きく異なる点が 1 つあります。
iOS 版 Chrome では Blink は使用されません。
Apple の App Store のルールにより、ウェブ コンテンツの取得とレンダリングに iOS 版 Chrome では iOS プラットフォーム API を使用する必要があります。そのため、iOS 版 Chrome では WebKit、Nitro、CFNetwork を使用しますが、他の Chrome プラットフォームでは Blink、V8、//net
を使用します。このため、iOS アプリがウェブページのコンテンツを操作するための API が制限されているため、//content
API を使用する Chrome 機能の多くは、JavaScript インジェクションを使用して iOS 版 Chrome に実装されています。
//components
のクロス プラットフォーム機能は、//content
の依存関係をサイロ化しながら、すべてのプラットフォームでできるだけ多くのコードを共有するように構成されています。
ls components/some_component
content/ # code with dependencies on //content.
core/ # cross-platform code with no //content dependencies.
ios/ # iOS implementation using JavaScript injection.
iOS 版 Chrome と他のプラットフォームの Chrome のその他の重要な違いは次のとおりです。
- iOS アプリはシングル プロセスである必要があるため、iOS 版 Chrome では
fork()
できません。 - iOS 版 Chrome は Objective-C++(C++ と Objective-C の組み合わせ)と Swift で記述されています。
- iOS デバイス上で直接 Chrome をコンパイルして実行できるほか、Apple が提供する非常に高性能なデバイス シミュレータで多くの機能開発を行うこともできます。
iOS で Chrome のスタートガイド
以下のものが必要になります。
- macOS 11.3 以降を実行している 64 ビット macOS コンピュータ。Apple Silicon がサポートされています。
- Xcode(Apple プラットフォーム用の IDE)バージョン 13.0 以降。
- JDK の現在のバージョン。
詳細については、ビルド手順をご覧ください。
ソースの取得は、他のプラットフォームとほぼ同じです。
mkdir ${HOME}/chromium-ios
cd ${HOME}/chromium-ios
fetch ios
その後、コマンドライン(または Xcode )からビルドできます。
autoninja -C out/Debug-iphonesimulator chrome
iOS 版 Chrome の機能開発の詳細
Chromium スタイルガイドを確認することをおすすめします。Swift、xCode、その他の iOS 固有のリソースについて詳しくは、Apple のデベロッパー向けドキュメントをご覧ください。
主に iOS デベロッパーであり、Chromium を初めて使用する場合は、重要な抽象化とデータ構造に関するドキュメントをご覧ください。