エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

Progressive Web Apps の概要

きっかけ

HTML5 ConferenceでProgressive Web Appsって単語が出てきたが、単語の意味が分からなかったので、調査した。
HTML5 Conferenceの内容は、下記記事でまとめてある。

suzaku-tec.hatenadiary.jp

Progressive Web Apps

Progressive Web Appsとは?

ウェブアプリを最新テクノロジーを駆使して、ネイティブアプリのように高速動作するアプリにしようという考え方や動きのこと。
Alex Russell氏がブログで提唱したのが始まりらしい。
原文のリンクは、下記を参照。
俺は、英語見ただけで嫌悪感が走ってしまった。。。何とか克服したい。

Progressive Web Apps: Escaping Tabs Without Losing Our Soul – Medium

ネイティブアプリとウェブアプリ

このまま話が進んでも、漠然としたことしか考えられないので、それぞれのメリットを列挙。
デメリットは、相手のメリットが該当する。

ネイティブアプリ

  • 動作が早い
  • バイス特有の機能を使える
  • ネットワークリソースに左右されない
  • Push通知
  • Google PlayApp Storeといったアプリの配布サイトの集客力を利用できる
  • 決済をストアが代行してくる。

ウェブアプリ

  • アプリのダウンロードが不要
  • Google PlayApp Storeといったアプリの配布サイトの制約に縛られない
  • バイスの制約がない
  • 開発言語が一般的なものを使える
  • URLでアクセスできるので、拡散しやすい

ハイブリッドアプリとの違い

似たような単語にハイブリッドアプリがある。
違いは、アプローチの違い。
最終的な目標は、同じ場所。
ネイティブとwebの融合にある。
※ネイティブアプリとWeb技術が融合することで、ハイブリッドアプリか、Progressive Web Appsが融合召喚できる!

ネイティブアプリが、Webアプリを取り込む方式で作られたアプリ。
一般的にWebViewを使って、Web技術をネイティブアプリに持ってきている。

Progressive Web Appsは、その逆である。
Webアプリが、ネイティブアプリを取り込む方式で作られたアプリ。

Progressive Web Apps を体現するための特徴

  • レスポンシブ
    どんな環境でも最適化されたレイアウトで表示する。
  • オンライン/オフラインでも動作
    ネットワークの接続状況に依存せず、同じ動きをする。
  • ネイティブアプリのようにインストール
    アプリ感覚で操作でき、インストールすることもできる。
  • リンク可
    URL を使って共有できる。
  • 安全性
    傍受されないよう暗号化され、セキュアされている。
  • Push通知などのエンゲージメントが可能

感想

発祥元がGoogleだけあって、Web技術の発展のための考えがまとまっている。
どれも、実現しようとすると、かなり難易度が高い気がする。
規約を作らないと厳しいかもね。
Progressive Web Appsを実現するためには、Web技術を総動員しないと解決が難しいと、調べていて感じた。
サーバーサイドエンジニアとしては、特にレスポンシブデザインの作成が難しいんだよね。。。
どこかで、サポートするFWがでないと厳しい。
デファクトスタンダードのFWが必要そう。
今は、Service Workerがそれに当たるのかな?

あとは、ストアに制約されないのがいいと思いました。
ストアの集客力は、確かに嬉しんだけど、制約に振り回されることが結構ある。
今は拡散はいろんな方法があるから、自前の集客力がある場合は、選択肢の一つとしてProgressive Web Appsはありだと思いました。

バイスの違いを意識しない開発ができる点も嬉しい。
ただ、デバイスごとにテストは必要だと思うけど。
あと、懸念として、特定デバイス固有の事象が出ないかが凄く心配。
バイス固有の事象のために、ロジックを入れなければ行けないは、マジ勘弁。
もし、そういう問題出た時にどう対処するか、エンジニアの腕の見せ所かもね。
あまり遭遇したくは無いが。

いろいろ述べたが、魅力的な技術だと個人的に感じる。
Webエンジニアは、結構ネイティブアプリを作りたい衝動がある。
それをできるような手法が確立されれば、飛びつくWebエンジニアは、多い気がする。
自分もその一人になると思う。

ハイブリッドアプリと、Progressive Web Appsのどちらが良いかは、判断できない。
自分は、Webの技術畑の出身だから、Progressive Web Appsに魅力を感じる。
たぶん、今まで.NETなどをしてきた人は、ハイブリッドアプリに魅力を感じるのではないかと感じた。

参考サイト

developers.google.com

html5experts.jp

sisidovski.hatenablog.com

iyuichi.hatenablog.jp

digiday.jp

www.domore.co.jp