7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PWA(Progressive Web App)について調べ直してみた

Last updated at Posted at 2023-11-13

きっかけ

iOSでプッシュ通知ができない等のプラットフォーム間の差がありましたが、iOS16.4にてプッシュ通知がサポートされるようになったので改めてPWAについて調べ直したいと思います。

PWAとは?

WEB技術だけでネイティブみたいなWEBアプリケーションを作るためのデザインパターンと個人的に解釈しました。

Googleのドキュメントを読んでも明確な事は示されていなかった。しかし、Progressive = 「発展、前進」と言う意味だし、「今後のWEBアプリ開発のガイドライン」と言った意味も含んでそうだと感じました。

PWAの特徴

MDN や他ブログを読んで噛み砕いてみると下記要素を含むとPWAであると言えそう。

  • レスポンシブデザイン:PC,スマホ等のデバイスの違いに対応できるデザインを提供する
  • WEB APIの活用:ネイティブアプリの様にローカルファイル、カメラや地図等へアクセスする様々な機能を利用できる。
  • Service Workerの活用:端末へのインストールやプッシュ通知で利用しているモジュール
  • UX重視:キャッシュ等を用いてユーザーの体験を損なわない設計を是としている

PWA(WEB)でできること

上記特徴にも上げましたが、ブラウザ上で使えるAPIが拡充されていていますね。
WebAssenblyも出てきたので、動画編集の様な、高負荷でネイティブでしかできなかったアプリもWEB化する未来があるかも?

PWAの要件

Googleさんの定義するところではUX重視なのが伺えますね。

  1. Starts fast, stays fast:ユーザーは表示に3秒以上かかると離脱すると言われているやつですね
  2. Works in any browser:どのブラウザでも動作させる
  3. Responsive to any screen size:モバイルファーストになりつつありますが、パソコンでの表示も考慮しましょう
  4. Provides a custom offline page:アプリ体験を損なわないためにオフライン時の動作も考慮した方がUXが向上する
  5. Is installable:インストール(ホームにアイコンを設置)すると、アクセスが向上する。インストール(キャッシュ活用)することでUXが向上できるらしい

要件通り実装できているかは Lighthouse で評価できるとのこと。

PWAを構築するための手順

GoogleのドキュメントやWEBを見ると下記が必要になりそうだ。

  1. HTTPS対応:Service Workerを利用するには必須みたいです
  2. Web App Manifest:WEBアプリの情報を定義するJSONファイル。アプリ情報を格納するみたい
  3. Service Worker:アプリのキャッシュやプッシュ通知用のバックグラウンドなタスク処理に利用するみたい

調べて直してみた感想

お、覚えることが多い。。しかし、web.devにまとまった資料が置いてあったので、時間を作って読み込みたいと思います。

現時点の懸念は、キャッシュファイルの管理とかオフライン時の状態管理とかを考慮しないといけなくなるのでアプリの複雑度が上がりそうだと感じました。(もしかしたら楽にできる?)

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?