Galaxy S4の標準ブラウザが1年前のChromiumをforkしているかも知れない件

先日、Galaxy S4の標準ブラウザのUser Agent Stringに“Chrome”の文字列が入っているのを知りました。

情報源はたかおファン氏のブログです。

Galaxy S4 (SC-04E)のChromeのUser Agent Stringは

Mozilla/5.0 (Linux; Android 4.2.2; SC-04E Build/JDQ39) AppleWebkit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36

そしてGalaxy S4 (SC-04E)の標準ブラウザのUser Agent Stringが

Mozilla/5.0 (Linux; Android 4.2.2; ja-jp; SC-04E Build/JDQ39) AppleWebkit/535.19 (KHTML,like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19

参考にGalaxy S3 (SC-06D)の標準ブラウザのUser Agent Stringは

Mozilla 5.0 (Linux; U; Android 4.0.4; ja-jp; SC-06D Build/IMM76D) AppleWebkit/534.30 (KHTML,like Gecko) Version/4.0 Mobile Safari/534.030

さらに標準ブラウザのアドレスバーに“chrome://version/”と入力すると、Chromeに似たバージョン表皮がされるということなので、たかおファン氏はSamsungが独自にChromiumをforkしたのではないかとしています。そうなるとforkしたのはChrome 18 (2012-03-28リリース)。結構古いバージョンで、Chrome for Androidがβ版から抜ける以前のバージョンです。

ことの背景

このあたりの背景については、2013年5月にブログを書きました(英語)。それに補足する形で、背景をまとめました。

  1. “Jelly Bean” (Android 4.1)以降、GoogleはAndroidの標準ブラウザ(いわゆるAndroid stock browser)を外し、Chromeを標準ブラウザとしました。
  2. GoogleはJelly Beanのリリース以降は、Chromeを標準ブラウザとしたとされています。しかし実際にはJelly Bean搭載デバイスであっても、依然としてAndroid stock browserを標準ブラウザとしているものが大半です。Jelly BeanでもOSにはAndroid stock browserのエンジンが搭載されており、web viewを使ったときはChromeではなくAndroid stock browserのエンジンが使用されます。
  3. Android stock browserはオープンソースですが、Chromeはオープンソースではありません。ChromeはAndroid OSには含まれていませんし、Chromeをプレインストールするためには別途Googleとライセンス契約を結ぶ必要があります。Chromeのオープンソース版としてChromiumプロジェクトがあり、Chromeはこれをforkしたものです。

Samsungの判断の背景

SamsungがChromiumをforkしたのならば、それは完全に納得のいくことです。

  1. Samsungとしては単にChromeを搭載するのでは差別化ができません。Samsungは独自の機能をもったブラウザを作りたいと思っています。
  2. 独自のブラウザのベースとしては、a) Android stock browserベースのものを作る、b) Chromiumプロジェクトをベースに作り、c) 独自にWebKitベースのものを作る、が考えられます。Chromeはオープンソースではないので、これをベースにはできません。
  3. 2013年5月時点では、私はSamsungがc)を選択すると予想していました。なぜならTizen OS用ブラウザがHTML5テストで好成績を収めていたからです。TizenブラウザをベースにAndroidに移植するのではないかと予想していました。
  4. 結果的にはSamsungはb)を選択した模様です。

それでこれは良いことなのか困ったことなのか

Android stock browserはバグが多かったり、サポートしていないHTML5, CSS3の機能が多かったりしたので、Androidをサポートする場合にはもともとかなり神経を使いました。Androidは古いバージョンが依然として使われていることも多いので、Androidをサポートする限りは新しい機能があまり使えないと覚悟していました。使うにしても、実機で十分にテストする必要がありました。

今回のSamsung Galaxy S4の標準ブラウザはChromeに似ているとはいえ、バージョンが古いものです。これほど古いバージョンについては、web上で情報を見つけることができません(例えばCan I useにも古いChrome Androidの情報はありません)。しかもテストするには実際にGalaxy S4を使うしかなく、他のデバイスで代用することができません。

Chromeに似ているので、Android stock browserよりはバグが少なく、HTML5やCSS3の機能が使えるだろうと期待はできます。しかしテストが面倒になった分、開発者にしてみればSamsung Galaxy S4の標準ブラウザは迷惑です。

やはり開発者の立場でいえば、総合的にはマイナスと言えるでしょう。

今後

今後もAndroid stock browserの開発が進まなければ、Samsung同様にChromiumをforkするメーカーは出てくるでしょう。どのバージョンをforkするかはそれぞれバラバラになる可能性があり、いろいろなバージョンのChromiumが混在する事態になりかねません。来年ぐらいになれば、ちゃんとwebに情報があるChrome version 27ベースのforkになるので、安定してくると思います。しかし現状では実機でテストしなければわからない状態と言えます。

Chrome version 27以降をベースとしたforkが増えれば、AndroidのHTML5, CSS3は大きく改善します。AndroidのChromeがAndroid 4.0以降でインストール可能とはいえ、実際に使われているケースは圧倒的に少数派です。大部分のユーザはAndroid 4.0以降でも標準ブラウザを使っています。それがChromiumベースになるのはありがたいことです。

まとめると、今後はAndroid stock browserが使われなくなり、Androidのブラウザ フラグメンテーションがますますひどくなります。しかしChromiumの高いバージョンがベースとなっていけば、web開発者としては実用上、負担は軽減されます。