iPhone と Web の行方
海外の blog で "Safari is the new IE" という記事が出たりしている。
Safari に新しい Web 技術がなかなか実装されないためだろう。
Web のフロントエンドエンジニアにとっては困った話だ。
ECMAScript 6 compatibility table によると ECMAScript 6 (2015) の iOS 10 の Safari 10 は対応率が 100% となっているが
端末のカメラ機能を使用する getUserMedia などは対応されていない。
Android の Chrome や Window 10 Mobile の Edge では使用できるのだが。
getUserMedia など、Safari の大元のオープンソースで運営されている WebKit では実装されているが動かない。
近年の Web の動向
Web ページは機能が肥大化していてアプリとなっているケースも多く、G Suite (旧 Google Apps) や Office 365、Web の iCloud などのオフィス系のアプリと同等の機能が備わっている。
だが、Web ページはアプリとして問題があり、ページ遷移する度にアクセスがかかるため、近頃では1つの HTML で表示を動的に変える Single Page Application (SPA) が登場した。
ネイティブのアプリはデータを予め端末にダウンロードするため、画像や動画、音楽などのアプリで使うリソースが端末に保存されているが、
Web の場合、キャッシュがあるものの、基本はその都度ダウンロードする必要性がある。
アプリとなるとオフラインでの実行やプッシュ通信も必要だろうし、
スマートフォンなどで他のアプリを立ち上げた時にブラウザがバックグラウンドへ移行しても何か処理したい場合もある。
そこで Google が Service Woker というものと付随するものを開発し、リソースのキャッシュと更新や削除、プッシュ通信、バックグラウンドでの動作を可能にした。
これらの機能と通信やその他を機能を使用しできた Web アプリを Progressive Web Apps と言われ、Chrome で実装しており、Firefox や Edge でも実装中であったり開発中であったりする。
Safari での Progressive Web Apps はどうなっているのか
Safari Technology Preview Release 13 で XMLHttpRequest の強化版 Fetch API が導入されたぐらい。
Safari の今後
どうかはわからないが、たぶん Apple が守りたいものは2点。
ユーザー体験とバッテリー消費。
Web アプリでも肥大化するとバッテリーの多量消費はするし、Background Sync が使えるとなると尚更。
その為、Web のモダンな機能の採用は当分先となりそうではある。
Web は今後も進化し続けるし、 アプリとしても実用レベルになってきている。
だが、バッテリーの革新的進化が当分先であるが故に、まだまだネイティブアプリがスマートフォンの中心であり続けるとは思われる。
しかし、いつか状況は変わるかもしれない。