Webフロントエンド - 基礎

PWA(Progressive Web Apps) ぴーだぶりゅーえー

プログレッシブウェブアプリService Workerオフライン対応Web App Manifestネイティブアプリモバイル
PWAって何?アプリとWebサイトの違いがよくわからなくて…

簡単に言うとこんな感じ!

PWAは「Webサイトなのにアプリみたいに使える」しくみだよ!スマホのホーム画面に追加できて、オフラインでも動いて、通知まで届く。App Storeに登録しなくてもブラウザから配れるから、開発コストをグッと減らせるんだ!


PWA(Progressive Web Apps)とは

PWA(Progressive Web Apps) とは、Webブラウザで動くサイトでありながら、スマートフォンアプリと同等の使い勝手を実現するための技術・設計思想の総称です。通常のWebサイトに特定の技術要件を追加することで、「ホーム画面へのインストール」「オフライン動作」「プッシュ通知」などネイティブアプリ(iOSやAndroid向けに作られたアプリ)ならではの機能を持たせることができます。

従来、スマホアプリを提供するにはiOS向け・Android向けとそれぞれ別々に開発し、App StoreやGoogle Playへの審査・登録が必要でした。PWAなら1つのWebコードベースで両プラットフォームに対応でき、審査不要でURLを共有するだけでユーザーに届けられます。開発・運用コストの削減とユーザー体験の向上を同時に狙える点が、ビジネス上の大きなメリットです。

「Progressive(プログレッシブ=段階的)」という名前の通り、古いブラウザでは普通のWebサイトとして動作し、新しいブラウザでは高機能なアプリとして動作するという後方互換性の思想も特徴のひとつです。


PWAを構成する3つの技術要素

PWAは、複数の技術が組み合わさって実現しています。

技術要素役割たとえるなら
Service Workerバックグラウンドで動くプログラム。キャッシュ管理・オフライン対応・プッシュ通知を担う「お店の裏方スタッフ」
Web App Manifestアプリ名・アイコン・起動画面などを定義するJSONファイル「アプリの履歴書」
HTTPS安全な通信。Service Workerの動作に必須「鍵のかかった配達便」

この3つがそろって初めてPWAとして認識され、ブラウザが「ホーム画面に追加」を促すインストールバナーを表示するようになります。

PWAの主な機能と対応状況

機能内容Chrome/AndroidSafari/iOS
ホーム画面インストールアイコンをホーム画面に追加✅(iOS 16.4〜)
オフライン動作キャッシュを使いネット不要で閲覧
プッシュ通知ブラウザ経由で通知を送る✅(iOS 16.4〜)
バックグラウンド同期オフライン中の操作を後で反映⚠️ 部分対応
カメラ・GPS連携デバイス機能へのアクセス

覚え方:「PWA = プロっぽく見えるWebアプリ」

Progressive(段階的に強化)・Web(ブラウザで動く)・Apps(アプリとして使える)——覚えるときは「ロっぽく見えるWebプリ」と読み替えると忘れにくいですよ。


歴史と背景

  • 2007年 — AppleのSteve Jobsが初代iPhone発表時に「Webアプリをネイティブアプリの代替として使ってほしい」と提唱。当時の技術では実現できず忘れられる
  • 2013〜2014年 — ChromeチームがService Workerの仕様策定を開始。オフライン対応の土台が生まれる
  • 2015年 — GoogleエンジニアのAlex Russellが「Progressive Web Apps」という名称を提唱・ブログ投稿。概念が世界に広まる
  • 2017年 — ChromeがPWAのインストール促進バナー(Add to Home Screen)を正式搭載。Twitterがtwitter.comをPWA化し話題に
  • 2018年 — MicrosoftがWindowsのMicrosoft StoreでPWAを配布可能に。デスクトップOSにも広がる
  • 2019年 — スターバックス・Pinterest・Uber など大手企業がPWA採用。PWAによるコンバージョン率改善事例が相次いで報告される
  • 2021〜2023年 — AppleがiOSでのPWA対応を段階的に強化。iOS 16.4でプッシュ通知にも対応し、主要プラットフォームが出揃う

PWA vs ネイティブアプリ vs 通常Webサイト

3つのアプローチをどう使い分けるか、ビジネス判断の軸を整理します。

PWA・ネイティブアプリ・Webサイト 比較 通常Webサイト 開発コスト 低い オフライン対応 × 不可 プッシュ通知 × 不可 ストア審査 不要 向いている用途 情報発信・コーポレート PWA 開発コスト 中程度 オフライン対応 ✅ 可能 プッシュ通知 ✅ 可能 ストア審査 不要 向いている用途 EC・社内ツール・メディア ネイティブアプリ 開発コスト 高い(×2〜3) オフライン対応 ✅ 可能 プッシュ通知 ✅ 可能 ストア審査 必要(数日〜数週) 向いている用途 ゲーム・高度なHW連携

ビジネス上の判断ポイント

システム発注・選定の場面では、以下の問いで判断できます。

  1. ユーザーにアプリをインストールさせたいか?
    → アプリDL率は低い。PWAなら「ホーム画面追加」のハードルが格段に低い
  2. オフラインや通知が本当に必要か?
    → 必要ならPWAかネイティブ。不要なら通常Webで十分
  3. iOS・Android両方に対応が必要か?
    → ネイティブは2本分の開発費。PWAなら1本分で済む
  4. センサー・Bluetoothなど高度なハードウェア連携が必要か?
    → Webの制約を超える用途はネイティブを選ぶ

関連する規格・RFC

規格内容
W3C Web App ManifestPWAのアプリ名・アイコン・表示設定を定義するJSON形式の仕様
W3C Service Workersバックグラウンド処理・キャッシュ・プッシュ通知を実現するAPI仕様
W3C Push APIWebアプリからサーバープッシュ通知を受け取るためのAPI仕様

関連用語

  • Service Worker — PWAのオフライン対応・キャッシュ・通知を担うバックグラウンドスクリプト
  • Web App Manifest — アプリ名・アイコン・起動設定を定義するPWA必須のJSONファイル
  • HTTPS暗号化通信。Service Workerの動作に必須のプロトコル
  • レスポンシブデザイン — 画面サイズに合わせてレイアウトを変えるWeb設計手法。PWAと組み合わせて使う
  • SPA(シングルページアプリケーション) — ページ遷移なしでコンテンツを切り替えるWeb構成。PWAと相性が良い
  • キャッシュ — データを一時保存してアクセス速度を上げる仕組み。PWAのオフライン対応の核心
  • プッシュ通知 — サーバーからアプリ・ブラウザへ能動的に送る通知のしくみ
  • ネイティブアプリ — iOS・Android向けに個別開発されるスマートフォン用アプリ