エピソード 28: Mark Cogan(フランス、パリ)
前のエピソード
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 を iOS デバイス上で直接コンパイルして実行できますが、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 を初めて使用する場合は、重要な抽象化とデータ構造に関するドキュメントをご覧ください。