自称「世界最速ブラウジング」
Android向けに配布されているDolphin Browserというサードパーティ製WWWブラウザがあり、このブラウザの積んでいるレンダリングエンジンが日本版だけダメという話をします。iOS版もあるようですがそちらは詳しくないので特に触れません。
前置き
Dolphin Browserとは
MoboTapまたはドルフィン・ブラウザ株式会社から配布されているiOS/Android向けのWWWブラウザアプリケーションです。
Android版Dolphin Browserの特徴は、AndroidのWebView(ブラウザコンポーネント)と、WebKitベースの独自エンジン「Jetpack」を切り替えられるところにあります。
この独自エンジン「Jetpack」は、日本版では同梱かつ初期設定で有効、国際版では拡張機能として別途配布されています。
「日本版」「国際版」とは
Dolphin Browserを開発しているのはサンフランシスコのMoboTap社ですが、ある時期から日本法人のドルフィン・ブラウザ株式会社が立ち上がり、並行開発のローカライズ版も提供されるようになりました。
Google Playストアにも下記の2つのURLが並びます(国際版は日本からの検索に出てこないようになっているふしがあります)。
- ドルフィンブラウザ:最速&フラッシュ対応の無料ウェブブラウザ - Google Play の Android アプリ (日本版 com.dolphin.browser.android.jp)
- Dolphin - Best Web Browser 🐬 - Google Play の Android アプリ (国際版 mobi.mgeek.TunnyBrowser)
この記事では、以下「日本版」「国際版」で呼び分けます。
ここまでが前置きです。
性能計測と互換性確認
ちょっと古い感じですけれど国際版Dolphin Browser(Jetpack)向けのデモページがあるので、このデモの結果をいくつか抜粋します。ついでにChromeの結果や、それぞれのUser-Agentも並べておきましょう。読み飛ばしてもいいです。
確認はすべてNTTドコモ版Xperia Z3 Compact(Android 5.0.2)で行っています。
日本版がChrome 33を自称し、国際版がChrome 33・Chrome 37を並べて自称しているのが興味深いような。
日本版Jetpack | 国際版Jetpack | Chrome | |
---|---|---|---|
HTTP User-Agent | Mozilla/5.0 (Linux; U; Android 5.0.2; ja-jp; SO-02G Build/23.1.B.1.197) AppleWebKit/537.16 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.16 Chrome/33.0.0.0 | Mozilla/5.0 (Linux; Android 5.0.2; SO-02G Build/23.1.B.1.197) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile Safari/537.36 Chrome/33.0.0.0 | Mozilla/5.0 (Linux; Android 5.0.2; SO-02G Build/23.1.B.1.197) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36 |
html5test.com | 415 | 474 | 518 |
ringmark | r.0 101 Passed r.1 148 Passed r.2 142 Passed |
r.0 101 Passed r.1 145 Passed r.2 213 Passed |
r.0 101 Passed r.1 146 Passed r.2 217 Passed |
Octane | 2819 | 4839 | 5124 |
V8 Benchmark | 3009 | 5655 | 5531 |
SunSpider 0.9.1 | total 929.6ms | total 985.3ms | total 1213.3ms |
microdata | × | × | × |
Scoped style Element | × | × | × |
Custom Scheme Handlers | ○(なぜ?) | × | × |
WebGL 3D Contexts | × | ○ | ○ |
FileSystem API | × | × | ○ |
Web Workers | ○ | ○ | ○ |
Webcam | ○ | ○ | ○ |
Web Audio API | × | ○ | ○ |
requestAnimationFrame | ○ | ○ | ○ |
requestFullscreen | × | × | ○ |
概ね日本版Dolphin Jetpackがパフォーマンスにおいても要素技術の実装においてもぶっちぎりで後進的であり、それに比べて国際版は健闘しているという構図が見えてきます。
たとえば処理性能を調べるOctaneで2819対5124、同じく速度ベンチのV8 benchも3009対5531、どちらも日本版DolphinはChrome比でおよそ0.55倍の遅さというちょっと強烈な数字が出ています(一応、なぜかSunSpiderでは日本版Dolphinが勝っています)。
どれだけの機能を実装しているかを調べるhtml5testやringmark(r.2)では415対518と142対217、数え方にもよりますがChrome比で60個も100個も未実装のフィーチャーがあるということです。実際その下のWebGLやWeb Audio APIが全く使えなかったりしていますね。
個人的にはそのWeb Audio APIに対応していないことに驚いていて、これはiOSではiOS6(2012年)から、Chrome for Androidでは2013年8月には対応済みです。IEがEdgeになりAndroid標準ブラウザがChromiumになって多くのブラウザがWeb Audio APIに対応しているこの2015年に今更なんで出来てないの? という印象が強く残ります。
実例
ゲームの表現力が低い
これだけボロボロだとゲームも辛いんじゃないかということで、グランブルーファンタジーのチュートリアルを見てみました。
左がDolphin Browser日本版、右はChromeです。
フレームレートが低い、音が鳴らない、Webフォントが使えないなどAndroid標準ブラウザ(4.4以前)的な挙動を示しました。自発的に音を再生できずボイス再生ボタンが用意されるのも、前述のWeb Audio APIが死滅しているせいでAudio要素での代替実装が表に出ているからでしょう。
CSSのtransformプロパティを使ったアニメーションにバグがある
https://t.co/DJflSbaYbd pic.twitter.com/W58mwPI4Nm
— 稲葉 (@eps_r) 2015年11月29日
transformやopacityなどGPU支援のあるプロパティの一部で、画面タップやスクロールなど再描画を伴うイベントが起きていないとanimation/transitionを更新しないバグがあります。国際版Jetpackでは発生しません。
下のようにGPU支援の絡まないプロパティを同時に変動させてやると回避することができます(本当にこれが2015年のブラウザ向けのコードか)。
@-webkit-keyframes loopmod { /* CPU Renderに引っかかるプロパティを意識させてやると、 * 日本版Dolphin Browserでも毎フレーム更新される(但し値は有効な桁の小数などで少しずつ変わってないとダメ) */ 0% { -webkit-transform: rotateY(0deg); width: 200px; /* for DolphinJP */ } 100% { -webkit-transform: rotateY(360deg); width: 200.1px; /* for DolphinJP */ } }
初めにこのバグを見つけてからレンダリングエンジンの古さを疑うようになりました。それによく考えたら、現代のブラウザでkeyframes・transition・transformあたりに -webkit のベンダプレフィックスを付ける必要はほぼ無くなっているはずでは?
日本法人ドルフィン・ブラウザ株式会社の姿勢
MoboTap本社の開発チームがHTML5のデモページを作って性能と仕様準拠を改善してゆく中で、日本にだけそれらをマージしない版(しかも初期設定で有効)がズルズルとバラ撒かれている状況に見えますが、そうなると日本法人の姿勢や技術力に対して疑念が生まれます。
さて、当の日本法人は下のようなことを言っています。
「標準ブラウザはカクカク」「ドルフィンブラウザはサクサク」
――日本のドルフィンブラウザのユーザーはどのような点を評価して、どんな使い方をしているのでしょうか。
須賀氏:デフォルト(最初から内蔵されている)のブラウザにはない実行スピードが評価されているようです。日本ではソーシャルゲームやブラウザゲームを遊んでいるユーザーが多いようで、標準ブラウザを使うと、ゲームを遊んでいてもカクカクするなど、“使いにくい”“使いづらい”という声が少なくありません。そんな方がドルフィンブラウザに乗り換えたらサクサク動いた、それで支持してくださるユーザーも多いようです。そういう声を聞くようになってから、検証のためもあって私や他のスタッフもブラウザゲームでよく遊んでいます(笑)。
特に立ち上げの時期では「標準ブラウザで描画のカクカクする体験をお持ちの方に喜ばれている」という主旨のことまでを言っていたベンダが、今やゲームで描画がカクカクしたり音が出なかったりする体験を強いているわけですね。
上の記事から今までの2年半で、日本人に最適化したユーザビリティの強化はやってきたけれど中核に手を入れるのは諦めたということでしょうか。
「常に最も安定したバージョン」
日本法人のブログ記事からも、エンジンに対し少なくとも頻繁に手を入れる気はないことを読み取ることができます。
日本版ドルフィンブラウザでは常に最も安定したバージョンのJetpackを備えているため、Jetpackを別アプリとしてインストールしている方はアンインストールされることをおすすめします。
エンジンの古さには直接関係しないので上には挙げませんでしたが、実は現行の日本版Dolphin Jetpackにはページがクラッシュするバグの内在が認められており、しかも日本法人はこの日本版特有のバグの解決に至っていません。
https://twitter.com/JP_Dolphin/status/666205270746484736
Jetpackを切るとCookieがまともに保存されず、Jetpackを使うとページがクラッシュするというどうしようもない状況が環境によっては発生するわけです。
が、まあ、当の日本法人が「最も安定したバージョン」と言っている以上は安定しているのでしょう。よかったですね。
結
建前から話をするなら、Dolphin Browser(Jetpack)日本版が単純に古いエンジンで性能が低いからといって滅ぼしたいわけではありません。ブラウザが新しい技術を取り入れてゆくのは比較的よいことであれど、一方でブラウザを選ぶ権利がユーザーにあり、ダサいブラウザを切り捨てる権利がWebページの製作者にあり、それは各自のものだ(であってほしい)からです。
私が問題視しているのは、自称最新、自称最速、先進ユーザー向けをかたる製品がその実ジャップ向けのモンキーモデルであり、現地法人がローカライズのかたちをとって性能を劇的に劣化させているというその仕事の内容です。
それが経営的判断なのか無能なのか悪意なのかは知りませんが、結果としてユーザーに「よいものである」と嘘をついて、同じ名前の「よいもの」をズタズタにしてバラ撒いているのがドルフィン・ブラウザ株式会社ではありませんか。
なおAndroid向けモダンブラウザにないFlash Playerが動くという機能の存在は認めます(それが良いことかどうかは置いておいて)が、Flash Playerが動くことからといって上に挙げた問題が変わるわけはありません。もし国際版とのレンダリングエンジンの差異がFlash Playerを安定動作させることに起因しているのならばそれを公表し、少なくとも優良誤認めいた「最速」の看板は取り下げるべきと思っています。
Dolphin Browser日本版のベンチマークとかUser-Agentとかをblogに転記しようとしたら「星を付けるかフィードバック送れ」ってダイアログが出たから先にフィードバック書いた pic.twitter.com/cReO5qpRnj
— 稲葉 (@eps_r) 2015年11月22日
なお記事を書く前にフィードバックを送っています。「今後のリリースの参考にさせていただきます」というテンプレートもいただきましたので改善されるといいですね。