🎃

PWAとネイティブアプリの違いを調べてみた

2024/07/12に公開

この記事は何?

  • これから開発するプロダクトで採用できるか判断するため、2024年7月時点でPWAとネイティブアプリの差を調べた

PWAとは?

  • Progressive Web Apps の略
  • Webアプリをネイティブアプリと同じように扱えるようにする技術
    • ホーム画面にWebアプリをインストールしたり、プッシュ通知を行えるようにしたりできる

ネイティブアプリとの違い

ネイティブアプリ PWA
開発技術 Swift, Kotlin, Dart(Flutter) HTML, CSS, JavaScript
ストア審査 -
アップデート 手動 自動※
デバイス機能の制限

※キャッシュ削除等が必要な場合がある

PWAでできないこと

  • プッシュ通知
    • iOS
      • iOS16.4 より前はサポートしていない
      • ローカルプッシュ通知に制限がある
        • アプリがフォアグラウンドにないと通知が届かない
      • リモートプッシュ通知はネイティブアプリと同じように動作する
    • Android
      • ローカルプッシュ通知に制限がある
        • アプリキル時に通知が届かない
      • リモートプッシュ通知はネイティブアプリと同じように動作する
  • デバイス機能
    • GPS, カメラ, 加速度計等一部のデバイス機能は使用可
      • ブラウザを介して動作するため、デバイスから提供されている機能をそのまま使えるわけではない
    • 指紋認証や顔認証等一部機能にはアクセスできない
  • 高度なグラフィック処理
    • ブラウザの制限によりグラフィック関連の機能に制限がある
    • WebGLやWebGPUを使えば再現できるものもあるが、コストがかかる
  • スクリーンショットの禁止、画面のマスク

PWAのリスク

調べた感想

  • 思ったより機能の制限が多くて残念
  • 批判によりPWAサポート廃止が撤回された前例ができたのは良かった
    • 直近にいきなりサポート廃止される可能性は低そう
  • 様々なコストを抑えることができるので、できないことを理解した上で採用を検討する価値はあると感じた

おまけ

ボタン押下してから10秒後にローカルプッシュ通知を送るだけのPWA作った

Discussion