Progressive Web Apps (PWA)を少し勉強する
恥ずかしながら、先週の大越さんの記事を見るまで、PMAを知りませんでした。
そこで、開発元Googleの記事でちょっと勉強してみました。
はじめてのプログレッシブ ウェブアプリ
記事冒頭にPWAの特徴、段階的・レスポンシブ・ネットワーク接続に依存しない・アプリ感覚・常に最新・安全・発見しやすい・再エンゲージメント可能・インストール可能・リンク可能が書かれています。理念と要求条件に本来の特徴が混ざっているのは、好みじゃない。特に、「プログレッシブ」に対応するのは「段階的」と思いますが、非常に観念的。
さて、一通り読むと、技術的なカギは、データと処理(記事ではcontentとApp Shell)の分離、Service Workerです。Service Workerとして登録したプログラムで処理とデータそれぞれをキャッシュすると同時に、ネットワークリクエストを傍受して必要に応じてキャッシュの内容を返すようにしています。
もう一つ重要なのはマニフェストで、ネイティブアプリケーションのようにアイコンを配置したり、同様な外見を用意できます。
ということで、さらにService Workerの入門記事も読みました。
Service Worker の紹介
ピンと来たのは「Service Worker はプログラム可能なネットワークプロキシ」という説明。だからTLS (https)を前提にして、悪意を持ったService Workerの書き換え/設定ができないようにしているのですね。
いつの間にやら、WebブラウザのJavaScript実行環境はとても複雑になっていました。ますますセキュリティホールが怖い。
とは言え、このPWA、おそらくネイティブアプリより開発は容易で、うまく作れば複数のプラットフォームで動作できます。素晴らしいですが、今の所App Storeのような概念はないのが懸念点。無償アプリや社内アプリには問題ありませんが、App Storeのような簡単に課金できる仕組みに加え、アプリを探せるのはとても重要です。前者は近々W3C標準になるらしいPayment Request APIとGoogle PayやApple Payの連携で救えそうですが。最初のGoogleのいう特徴の一つ「発見しやすい」は、アプリの外見をしていても検索エンジンから見つかると言うことなので、あまり助けにはなりません。今のApp Storeの延長線で提供されるかな。