ひとことで言うと
PWA(Progressive Web App)とは、Web App ManifestとService Workerを組み合わせることで、ホーム画面追加・オフライン動作・プッシュ通知といったネイティブアプリ的な機能をWebで実現する技術の総称だ。ChromeやSafariはPWAの要件を満たすサイトに対してインストールプロンプトを自動表示する。
PWAの要件は「HTTPS配信」「Web App Manifestの存在」「Service Workerの登録」の3つが基本だ。AI生成ツールがPWAテンプレートを使って出力した場合、これらが自動で揃うため、ギガサイト便のようなHTTPS配信サービスにアップロードするだけでPWAとして動作可能になる。
- 相手がログインなしで開ける状態か確認する
- PCとスマホで最低1回ずつ表示を確認する
- 内部情報・個人情報・不要な外部送信が残っていないか見る
- レビュー期限と修正時の差し替え方を決めておく
HTML共有で関係する場面
社内レビュー用にPWA対応のサイトをHTTPS URLで共有すると、iPhoneのSafariでは「ホーム画面に追加」のオプションが表示され、Androidでは「アプリをインストール」バナーが出ることがある。レビュー担当者がインストールしてしまうとその後の更新版がキャッシュに残り、最新のUIが届きにくくなる。
PWAをプレビュー共有する際は、Service Workerの登録をコメントアウトし、manifestの`display`を`browser`に変更した「PWA無効化版」を用意するのが現実的だ。ギガサイト便のパスワード付き共有URLを使えば、不特定多数にインストールされるリスクも下げられる。
よくある誤解
「PWAはオフラインで絶対動く」という誤解がある。Service Workerにオフラインキャッシュ戦略が実装されていない場合、オフラインでは表示されない。AI生成コードのService Workerがキャッシュ戦略を持つかどうかは、`sw.js`の中身を確認しなければわからない。
「PWAを使うとApp Storeでの公開が不要になる」という期待もあるが、現状はiOSのSafariのPWA対応が限定的で、プッシュ通知やバックグラウンド同期などはAppleの制限がある。重要な配信チャネルにApp Storeが含まれる場合はネイティブアプリと並行開発が必要なケースも多い。
安全に使うための注意点
PWAとして一度インストールされたアプリはバックグラウンドでプッシュ通知を受け取れる状態になる。共有先の担当者がインストールした場合、その後もサーバーからの通知が届く可能性があり、プロジェクト終了後に通知サーバーを止め忘れると継続的な通知が発生する。共有用途ではプッシュ通知設定を無効化してから渡すこと。
PWAのService WorkerはHTTPS証明書が有効な間はアクティブなままだ。共有URLを無効化してもService Workerはブラウザ側に残り、古いキャッシュを返し続けることがある。ギガサイト便でURLを削除・再発行した際は、受け取った相手にブラウザのService Workerをアンインストールするよう案内しておくと確実だ。
よくある質問
AI生成のPWAをiPhoneで正常にホーム画面追加できる条件は何ですか?
HTTPS配信、Web App Manifestの存在、Safariでのアクセスが最低条件です。iOSではService Workerの要件は緩く、Manifestと`display: standalone`だけでホーム画面追加が可能です。アイコン画像がないとデフォルトのスクリーンショットが使われます。
PWAのプレビュー共有と本番公開では、何か設定を変える必要がありますか?
プレビュー共有時はService WorkerとManifestのdisplayをbrowserに変更してインストールを無効化するのをお勧めします。本番公開時には元に戻し、start_urlとscopeを本番ドメインのパスに合わせてください。
PWAにしておくとプレビュー共有で何かメリットはありますか?
Service Workerによるキャッシュで2回目以降の読み込みが速くなるため、通信が遅い環境でのレビューでは体感が改善します。ただし更新版の反映に手間が増えるため、短期レビューでは無効化した方がトラブルが少ないです。