iPhoneを使ってTwitterやRSS経由で情報を取得する機会が増えると、必然的にそのアプリの内蔵ブラウザ(Webview)を使う頻度も増えていきます。その度にわたしは「アプリ内蔵ブラウザは遅くてイライラするなぁ」という印象を受けます。
iPhoneの純正アプリであるSafariと基本的な中身は変わらないようですが、Safariに採用されている高速Javascriptエンジン「Nitro」はサードパーティアプリの内蔵ブラウザでは利用する事が出来ないそうです。(脱獄すれば可能)
やはりNitroエンジンの有無の差が大きいのでしょうか?検証してみました。
それではレンダリングの速度を、SafariとTwitter・Pocketアプリ内蔵ブラウザにて計測・比較してみましょう。実験サイトは重い重いと評判のとあるブログ。通信環境はWi-Fiで、アクセスのたびにキャッシュを削除しています。
アクセス回数 | Safari | ||
---|---|---|---|
1回目 | 6.5秒 | 4.8秒 | 7.2秒 |
2回目 | 5.9秒 | 6.8秒 | 6.9秒 |
3回目 | 4.8秒 | 5.3秒 | 7.4秒 |
4回目 | 5.1秒 | 8.7秒 | 6.5秒 |
5回目 | 4.7秒 | 7.8秒 | 6.8秒 |
平均タイム | 5.4秒 | 6.7秒 | 6.96秒 |
平均値で言えば確かにSafariアプリの方が速いけど、想像していた程の差は無い。もちろんサイトによっては大きな差がでる場合もあるのでしょうが、今回の実験ケースではTwitterアプリ内蔵ブラウザに軍配が上がるケースもあるぐらい。う〜ん、なんでだ。
体感の差は情報量だった
「それでもSafariアプリの方が明らか速く感じるんだよな〜、なぜだろう?」と思ってそれぞれのブラウザ画面を眺めていると分かりました。Safariにあって内蔵ブラウザに無い物が。
それはサイトのダウンロードの進捗を表示するプログレスバーの有無。
Safariのプログレスバーからはダウンロードの速度はもちろん、ネットワークに何らかの障害があった場合にダウンロード自体が止まっている事が確認出来ます。
一方のアプリ内蔵ブラウザは風車がクルクル回るだけで、上記のような情報はユーザー側で知る事が出来ません。Pocketに至っては風車すらない。ただ待つのみ。
このあたりに、私がアプリ内蔵ブラウザを遅く感じるヒントがありそうです。
考えてみると実生活でも同様のケースってありますよね。例えば電車が遅れる場合でも事前に知らされた待ち時間30分よりも、何のアナウンスも無い待ち時間15分の方がはるかに長く感じる。また人気のラーメン屋さんの行列も、何分待ちかを事前に知る事が出来れば他のお店にするという手段をとる事も出来ますが、情報が無ければただ待つのみ。
本当にちょっとした違いですが、これだけの事で体感の差が大きく異なるという事に自分でも驚いています。現時点でサイトのレンダリングの進捗状況を表示するプログレスバーを備えたサードパーティアプリは(私の知る限り)無い現状から考えると、実装そのものが不可能なのかもしれません。わざわざSafariで開きなおすのかったるいし、なんとかなりませんかね、Appleさん。