圧倒的パフォーマンスの「WKWebKit」
SafariそのものではなくiOS全体という話であれば、iOS 8のWeb技術における最大の注目点は「WKWebKit」ではないだろうか。
これまでiOSでは、WebにアクセスするAPIとして「UIWebView」を提供してきたが、OS XのWebKitと比較すると制約が多かった。OS XのWebKitではDOM(Document Object Model、文章や図といったWebページの構成要素)にまでアクセス可能だが、iOSのUIWebViewにはそこまでのAPIが用意されていなかったのだ。
しかし、AppleはiOS 8でついに“大きな一歩”を踏み出した。UIWebViewを温存し互換性を維持しつつ、新しいWebビュー「WKWebKit」を用意したのだ。WebKitにDOMレベルでアクセスできるAPIもいくつか公開されたため、Webアプリのパフォーマンスが大幅に改善されると考えられる。
なんといっても、WKWebviewではJavaScriptエンジンに「Nitro」を利用できる。NitroはSafariにしか利用が許可されてこなかったが、サードパーティー製アプリでもWKWebViewを使えばNitroの恩恵にあずかれるのだ。
実際、UIWebViewとのパフォーマンスの差は一目瞭然。iOSのSafariはまだUIWebViewベースのため、パフォーマンス測定には使えないが、App Storeで公開されている「WebView - WKWebView and UIWebView rendering」というサードパーティー製アプリがある。このアプリは、WKWebViewとUIWebViewそれぞれで1つのURLをレンダリングする機能を持つので、同条件でパフォーマンスを比較できるのだ。
WebView - WKWebView and UIWebView rendering | |||
---|---|---|---|
価格 | 無料 | 作者 | MashSpots |
バージョン | 1.2 | ファイル容量 | 4.9 MB |
対応デバイス | iPhone/iPad/iPod touch | 対応OS | iOS 8.0以降 |
最初に試したのは「Speedometer」。WebKitチームが開発した、DOMオブジェクトに着目しWebアプリの応答性を測定するベンチマークだ。結果はUIWebKitが23.82、WKWebKitが26.48(いずれもiPhone 6で測定)と、大きな差とはいえないまでもWKWebKitに軍配が挙がった。
次に試したのは、定番JavaScriptベンチマーク「SunSpider 1.02」。こちらは差が歴然、UIWebViewは1177.7ms、WKWebKitが341.4msとなった(いずれもiPhone 6で測定)。iOSのSafariにおけるWebアプリのボトルネックは、JavaScriptではなくDOM再描画にあるが、これまでNitroを利用できなかったサードパーティー製アプリは事情が異なる。iOS 8以降、Webアプリの可能性は一気に高まることだろう。