[iOS] Chromium for iOS がオープンソース化されたのでビルドしてみた

はじめに

こんばんは。モバイルアプリサービス部の平屋です。

オープンソースのウェブブラウザプロジェクト「Chromium」のブログに、Chromium for iOS がオープンソース化されたという記事が投稿されていました。今回オープンソース化された「Chromium for iOS」と Google の製品「Chrome for iOS」の違いは Google による機能追加の有無だと思われます。

以下のガイドページを参考にして、環境構築からアプリの実行までを試してみましたので、本記事ではその手順を紹介していきます。

検証環境

  • Xcode Version 8.2.1
  • macOS Sierra 10.12.3
  • java version 1.8.0_121

システム要件について

ガイドページに記載されているシステム要件は以下のとおりです。

  • A 64-bit Mac running 10.11+.
  • Xcode 8.0+.
  • The OS X 10.10 SDK. Run
  • The current version of the JDK (required for the Closure compiler).

depot_tools をインストールする

Chromium のソースコードの取得時などに使用するツール「depot_tools」を任意のディレクトリにインストールし、パスを通します。

$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
$ export PATH=`pwd`/depot_tools:"$PATH"

ソースコードを取得する

プロジェクト用のディレクトリを作成し、「depot_tools」の fetch コマンドを使用してソースコードを取得します。

リポジトリの完全な履歴が必要ない場合は、--no-history オプションを付けることによって取得時間を短くできるようです。--no-history オプションを付けてソースコード取得を実行してみたところ、20 分ぐらいで完了しました。

$ mkdir chromium && cd chromium
$ fetch --no-history ios

取得が完了すると、「.gclient」ファイルと「src」ディレクトリがワーキングディレクトリの中に作成されます。

「src」ディレクトリに移動します。

$ cd src

setup-gn.py を実行する

「setup-gn.py」を実行し、ビルドの準備をします。

処理が完了すると、「out」ディレクトリの中に Release/Debug、実機/シミュレータなどの各環境向けのディレクトリが作成されます。

$ python ios/build/tools/setup-gn.py

ビルドする

ガイドページには Xcode または ninja コマンドを使用してビルドできると書いてあります。

今回は ninja コマンドを使用してビルドしました。以下のコマンドを実行すると、シミュレータ向けのデバッグビルドが実行されます。

ビルドが完了するまで 3時間ぐらいかかりました!

$ ninja -C out/Debug-iphonesimulator gn_all

アプリをインストールする

ビルドが完了すると、各環境向けのディレクトリ内に「Chromium.app」ファイルが生成されていることを確認できます。

今回はシミュレータ向けのデバッグビルドを行ったので、「out/Debug-iphonesimulator」ディレクトリ内に「Chromium.app」ファイルが生成されました。

iOS シミュレータのウィンドウの中に「Chromium.app」ファイルをドラッグし、iOS シミュレータにアプリをインストールしました。

アプリを実行する

iOS シミュレータでアプリを実行してみました。見た目はほとんど Chrome と同じですね。

ios-chromium-oss-1

ios-chromium-oss-2

ios-chromium-oss-3

ios-chromium-oss-4

ios-chromium-oss-5

Xcode で開く

「out/build」ディレクトリ内に生成される「products.xcodeproj」ファイルを開くと、ソースコードを Xcode で表示できます。大量のファイルが含まれていて、少し見ただけでは全体を把握できませんでした!

ios-chromium-oss-6

さいごに

本記事では、iOS 向けの Chromium をシミュレータで実行するまでの手順を紹介しました。

ちょっと動かしてみようと思って触り始めたのですが、予想以上に時間がかかってしまい (ほとんど待ち時間)、今回はアプリの実行までで終わりました。今後、ソースコードの内容などを見ていきたいと思います。

参考資料