PWAの学習をいよいよ開始します
目次
PWAとは何か
簡単に言うと:
Service Worker =
Webアプリとサーバーの間に入る「優秀な秘書」🤵
自分の代わりに:
✅ データをキャッシュしておく
✅ オフラインでも対応する
✅ バックグラウンドで働く
比喩:通常のWebサイト:
📧 メールが来るたびに郵便局に取りに行く
↓
郵便局が閉まっていたら受け取れない
インターネットがないと何もできない
PWA(Service Worker):
📦 私書箱(Service Worker)が郵便を受け取る
↓
✅ 見たいときに見られる
✅ オフラインでも過去のメールは読める
✅ 新しいメールが来たら通知してくれる
Service Workerの仕組み
通常のWebサイト:
📱 Webアプリ(ブラウザ)
↓ リクエスト(データください!)
↓
🌐 インターネット
↓
🖥️ サーバー
↓ レスポンス(はい、データです)
↓
📱 Webアプリ(表示)
問題:
❌ インターネットがないと何もできない
❌ 毎回サーバーに問い合わせる(遅い)
❌ バックグラウンドで何もできない
PWA(Service Worker あり):
📱 Webアプリ(ブラウザ)
↓ リクエスト
↓
🤵 Service Worker(傍受する!)
↓
「このデータ、キャッシュにあるかな?」
↓
📦 キャッシュ
↓
ある場合: すぐ返す(超速い!)✅
ない場合: サーバーに取りに行く
↓
🌐 インターネット
↓
🖥️ サーバー
↓
🤵 Service Worker(受け取る)
↓
📦 キャッシュに保存
↓
📱 Webアプリ(表示)
メリット:
✅ オフラインでもキャッシュから表示
✅ 2回目以降が超速い
✅ バックグラウンドでも動く
Service Workerができること
オフライン対応 ⭐⭐⭐⭐⭐
✅ インターネットなしでもアプリが開く
✅ キャッシュしたデータは見られる
✅ 「オフラインです」というエラーが出ない
キャッシュ管理 ⭐⭐⭐⭐⭐
✅ よく使うデータを自動保存
✅ 2回目以降が超速い
✅ サーバーの負荷も減る
例:
初回: サーバーから取得(1秒)
2回目: キャッシュから(0.1秒)
- バックグラウンド動作 ⭐⭐⭐⭐
✅ アプリを閉じていても動く
✅ プッシュ通知を受け取れる
✅ バックグラウンド同期
例:
アプリを閉じていても通知が来る
夜中に自動でデータを更新
オフラインで記録したデータを後で同期
- ネットワークの最適化 ⭐⭐⭐⭐
✅ 必要なときだけサーバーにアクセス
✅ 画像などを事前にキャッシュ
✅ データ通信量を削減
例:
- アプリアイコン: 初回のみダウンロード
- UI画像: キャッシュから表示
- データ: 変更があったときだけ取得
Service Workerは必須?
PWAには必須!
PWAの条件:
✅ HTTPS
✅ Manifest.json
✅ Service Worker ← これがないとPWAじゃない
Flutter Webでも使える?
Flutter Web でビルドすると:
→ HTML/CSS/JavaScriptが生成される
→ そこに Service Worker を追加できる
→ PWA化完了!
実装は難しいか
基本パターンは決まっているらしい:
- install イベント(初回のみ)
- fetch イベント(リクエストの傍受)
- activate イベント(更新時)
→ コピペでもOK!
→ ライブラリもある(Workbox)
とりあえず今日は理解まで
