macOS 10.13.4でSafariがアップデートされたことをご存知だろうか? このアップデートには「Service Workers」という重要な新機能が含まれており、その成果物としてmacOS/Safariでは「PWA(Progressive Web Apps)」がサポートされる。今回は、Service WorkersおよびPWAの概要と、今後のmacOS/iOSアプリに及ぼすであろう影響について考えてみたい。
What's PWA?
PWA(Progressive Web Apps)とは、ざっくりいうと「WEBサイトとアプリの利点を備えた次世代型WEBアプリ」のこと。Googleが提唱した概念であり、「Google Chrome」をはじめ多くのWEBブラウザにサポートされつつある。
その必須要件のひとつには「オフライン対応」が挙げられる。一般的にWEBブラウザはオフラインでの利用は想定されていないが、PWA対応のWEBブラウザではバックグラウンドで動作するJavasriptライブラリ「Service Worker」によりキャッシュ機能が働き、通信環境がない/安定しない場所でもWEBアプリとして変わらず動作する。macOS 10.13.4に含まれるSafari(v11.1)およびiOS 11.3のMobile Safariでは、このService Workerがサポートされたため、ついにAppleがPWAに本腰を入れ始めたと言われているのだ。
WEBアプリのサイトがHTTPSで提供されていることも必須要件のひとつ。PWAでは、ネットワークのリクエストがService Worker経由となるため、HTTPSを利用することでスヌーピングなどの脆弱性に関わる事態を予防できる。
もうひとつ、WEBサイトに「Web App Manifest」と呼ばれるJSON形式のファイルの用意も必要となる。このファイルに定義されたデータに基づき(Service Workerの機能で)情報をローカルにキャッシュすることで、オフラインでもCSSなどのコンテンツを読み込み可能にしてUIを実現するからだ。
PWAの特長には、バナーを表示しユーザにアプリとしてインストールを促すという機能もあるが、これはユーザが5分以上の間隔を空けて(PWAをホストするWEBサイトを)2回目に訪れたタイミングで表示することになっている。Android版Google Chromeで試したかぎりでは、このしくみは期待どおり動作しているようだ。
なぜPWAのインストール機能をAndroid版Google Chromeで試したかだが、macOSおよびiOSのSafariのPWA対応が現時点では完全でないことによる。iOS版Safariでは、アプリをホストするWEBサイトを2回訪ねてもインストールを促すバナーを表示しないため、ユーザが手動で共有メニューから「ホーム画面に追加」することになる。しかもSafariで(URLとして)開かれるため、UIとしてはPWAというより従来型WEBアプリだ。
WEBプッシュ通知に対応しないことも、macOS/iOS版SafariのPWA対応における不足点だ。PWAにおける通知のサポートは必須ではないが、いまやプッシュ通知はアプリの最重要機能であり、AppleのPWAに対する本気度が試される部分といえるだろう。
PWAがMac/iOSアプリを変える……のか?
PWAにはWEBというアーキテクチャ非依存のプラットフォームで開発できること、自前のWEBサイトで配布できるためアプリストアの審査が不要、かつ任意のタイミングで機能を追加/更新できることなど、ネイティブアプリに対するアドバンテージはいくつもある。しかし、アプリを配布する企業の立場で眺めるとどうだろう?
まず、アプリストアにはそれなりの意味と価値があるということ。そこへアクセスすれば自分が必要とするアプリを入手できる、いわゆる「ワンストップ」の場として一般消費者に広く認知されており、In-App Purchaseやサブスクリプションといった決済機能も利用できる。アプリストアで公開したいがためにWEBコンテンツにWebviewを被せた「ガワアプリ」が多数存在する事実からしても、これは確かだろう。
あくまで現時点の仕様だが、プッシュ通知に対応していない点もマイナス要因だろう。企業にとってプッシュ通知はエンドユーザに直接アプローチできる手段であり、マーケティング手法としてかなり効果的だ。BtoCの目線でいえば、プッシュ通知が使えないアプリは見向きもされないに違いない。
とはいえ、パソコンだろうがスマートフォンだろうが共通のコードベースで動作するPWA/WEBアプリは、運用コストを劇的に下げる可能性がある。FaaSなどクラウド上のリソースとの親和性も高い。iPhone/iPadの場合はMDMを使い大量の端末に一斉配布でき、いつでも更新できるうえにOSのアップデートによる影響を抑えられるとくれば、特にBtoB用途のアプリは今後PWA/WEBアプリとして実装される可能性が高そうだ。
一方、端末の性能を最大限要求するゲームなどのアプリには、今後もネイティブアプリが使われるはず。Bluetoothなどハードウェアと紐付いた機能についても同様で、早々PWA/WEBアプリで置き換えることはできないだろう。UNIX系OSとしての利用価値も高いmacOSの場合はより複雑だが、あくまでネイティブアプリを補完する存在として普及するのではないか……いずれにせよ、今後の展開に注目したい。
PWAと従来型WEBアプリ、ストア配布アプリの比較 | |||
機能 | PWA | 従来型Webアプリ | ストア配布のアプリ |
アプリストアでの管理 | × | × | ○ |
オフラインでの実行 | ○ | × | ○ |
プッシュ通知 | ○ | × | ○ |
ローカル通知 | ○ | × | ○ |
任意のタイミングでのアップデート | ○ | ○ | × |
ホーム画面へのアイコン登録 | 自動(OS/ブラウザの機能として対応) | 手動(URLのショートカット) | 自動 |