2016-07-30 GDG Kobe の Progressive Web Apps ハンズオン勉強会にいった
GDG Kobe の Progressive Web Apps ハンズオン勉強会 に参加した。
PWA : Progressive Web Apps は Web App と Native App のいいとこどりを狙うもの。実態としては Service Workers や Web App Manifest などを活用して Web App の Offline 対応を進めたもの。……という認識でいる。
Offline の利点が生きるであろう Mobile での対応状況は Android Chrome だけ (iOS の Mobile Safari は実装が異なる) という寂しい感じだ。Can I use... の Service Workers も PC の Firefox / Chrome と Mobile の Android Browser / Chrome 以外は全滅している状況。個人的にはあと iOS Mobile Safari だけなんとかなれば採用すべきという姿勢なのだけど……。
勉強会の内容としては Codelabs の「はじめてのプログレッシブ ウェブアプリ」を進めた。こういう機会がないとなかなか手を出さないので、ありがたい。
実際に触ってみた感じ。通常の Web App より協力な cache がある……そんな雰囲気。一度、server から取得してしまえば、あとは server に接続できなくても再読み込みできるし、cache した箇所については違和感なく使える。
おお、サーバーが死んでいても元気に動く App の姿が…… #gdgkobe
— bouzuya (@bouzuya) July 30, 2016
もちろん、cache を効かせたときと同じ問題もある。開発用途で軽く触っているだけでも、何度もなぜか更新されなくて Service Workers を Unregister した。これは本番環境で起きると間違いなくできない対応だ。お客さん相手に Developer Tool を開いてくださいとか chrome://serviceworker-internals/
を……などと言えるはずがない。既存の SPA : Single Page Application だと最悪でも再読み込みで対応できる。PWA だと再読み込みで済まない。気を使ってつくらないと、二度と更新できない Web App など、致命的な問題が起きる。
それらを踏まえても、ぼくは PWA を否定的には見ていない。SPA を「 server-side のみの従来の Web App を破壊し、server-side + client-side の可能性を広げるもの」だとぼくは思っている。同様に PWA を「 online のみの従来の Web App ( SPA を含む ) を破壊し、online + offline の可能性を広げるもの」だとぼくは思っている。
つまり SPA は client-side へ、PWA は offline へと可能性を広げるものだ。可能性と複雑性を広げるものだ。うれしい。つらい。
今後の展望としては blog.bouzuya.net を Service Workers に対応できればいいな、と思っている。