
プログレッシブウェブアプリケーション(PWA )またはプログレッシブウェブアプリは、スタンドアロンアプリケーションとしてデバイスにインストールできるタイプのウェブアプリです。[1] PWAは、デバイスのウェブブラウザのオフラインキャッシュを使用してインストールされます。[2]
PWAはネイティブ(デバイス固有)アプリケーションの代替として2016年から導入されており、異なるプラットフォーム向けに個別のバンドルや配布を必要としないという利点があります。デスクトップやモバイルデバイスなど、さまざまなシステムで使用できます。Apple App StoreやGoogle Playなどのデジタル配信システムにアプリを公開するかどうかはオプションです。[2]
PWAはHTML、CSS、JavaScript、WebAssemblyなどの一般的なウェブ技術を使用して構築されたウェブページまたはウェブサイトの形式で配信されるため、[3] PWA対応ブラウザがあればどのプラットフォームでも動作します。2021年現在、PWA機能はGoogle Chrome、Apple Safari、Android版Firefox、Microsoft Edgeでさまざまな程度にサポートされていますが[4] [5] 、デスクトップ版Firefoxではサポートされていません。[6]
歴史
先人たち
2007年のAppleのワールドワイド開発者会議で、スティーブ・ジョブズはiPhoneが「Web 2.0インターネット標準で作成されたアプリケーションを実行する」と発表した。 [7]ソフトウェア開発キット(SDK)は必要 なく、アプリはSafariブラウザエンジンを通じてデバイスに完全に統合される。[8]このモデルは後に、不満を抱く開発者をなだめる手段としてApp Storeに切り替えられた。 [9] 2007年10月、ジョブズは翌年にSDKをリリースすると発表した。[8]その結果、Appleは引き続きWebアプリをサポートしたものの、iOSアプリケーションの大多数はApp Storeに移行した。
2010年代初頭から、動的ウェブページにより、ウェブテクノロジーを使用してインタラクティブなウェブアプリケーションを作成できるようになりました。レスポンシブウェブデザインとそれが提供する画面サイズの柔軟性により、PWAの開発がよりアクセスしやすくなりました。HTML、CSS、JavaScriptの継続的な機能強化により、ウェブアプリケーションにさらに高いレベルのインタラクティブ性を組み込むことができ、ウェブサイトでネイティブのようなエクスペリエンスを実現できるようになりました。[10]
2013年、MozillaはFirefox OSをリリースした。これは、モバイルデバイス上でウェブアプリをネイティブアプリとして実行するためのオープンソースの オペレーティングシステムとなることを目指していた。Firefox OSは、HTML5で書かれたGaiaと呼ばれるユーザーインターフェイスを備えたGeckoレンダリングエンジンをベースとしていた。Firefox OSの開発は2016年に終了し[11]、プロジェクトは2017年に完全に中止されたが[12]、 Firefox OSのフォークがフィーチャーフォンプラットフォームであるKaiOSのベースとして使用された。 [13]
最初の紹介
2015年、デザイナーのフランシス・ベリマンとGoogle Chromeエンジニアのアレックス・ラッセルは、サービスワーカーやウェブアプリマニフェストなど、最新のブラウザでサポートされている新機能を活用したアプリを説明するために「プログレッシブウェブアプリ」という用語を作り出した。これにより、ユーザーはネイティブオペレーティングシステム(OS)でウェブアプリをプログレッシブウェブアプリケーションにアップグレードできる。その後、GoogleはAndroid向けのPWA開発の促進に多大な努力を払った。[15] [16] Firefoxは2016年にサービスワーカーのサポートを導入し、Microsoft EdgeとApple Safariが2018年に続き、[17] [15]すべての主要システムでサービスワーカーが利用できるようになりました。
2019年までに、PWAはMicrosoft Edge [18](Windows)やGoogle Chrome [19](Windows、macOS、ChromeOS、Linux )など、ほとんどのブラウザのデスクトップ版でサポートされるようになりました。
2020年12月、デスクトップ版FirefoxはPWAの実装を断念した(具体的には、実験的な機能として利用可能だったプロトタイプの「サイト固有のブラウザ」設定を削除した)。Firefoxのアーキテクトは「デスクトップ版FirefoxにPWAサポートがすぐには導入されないというシグナルを送りたい」と述べた。[6] Mozillaは引き続きAndroidでPWAをサポートする予定である。[20]
ブラウザのサポート
特徴
プログレッシブウェブアプリは、適切なウェブ標準に準拠したどのブラウザでも動作するように設計されています。他のクロスプラットフォームソリューションと同様に、その目標は、開発者がネイティブアプリよりも簡単にクロスプラットフォームアプリを構築できるようにすることです。[15]プログレッシブウェブアプリは、プログレッシブエンハンスメントウェブ開発戦略を採用しています。
プログレッシブウェブアプリの中には、App Shellモデルと呼ばれるアーキテクチャアプローチを採用しているものがあります。[24]このモデルでは、サービスワーカーがレスポンシブウェブデザインウェブアプリケーションの基本ユーザーインターフェース、つまり「シェル」をブラウザのオフラインキャッシュに保存します。このモデルにより、PWAはウェブ接続の有無にかかわらずネイティブのような使用を維持できます。これにより、初期の静的フレーム、つまりコンテンツを段階的に、また動的に読み込むことができるレイアウトまたはアーキテクチャが提供され、読み込み時間が短縮されます。[25]
技術的基準
プログレッシブウェブアプリとみなされ、ブラウザでインストールできるサイトの技術的な基準は、2016年にラッセルによって説明され[26]、その後更新されました。[27] [28]
- 安全なオリジンから発信されます。TLS 経由で提供され、アクティブな混合コンテンツはありません。プログレッシブ ウェブ アプリは、ユーザーのプライバシー、セキュリティ、コンテンツの信頼性を確保するために、HTTPS経由で提供する必要があります。
- フェッチ ハンドラを使用してサービス ワーカーを登録します。プログレッシブ ウェブ アプリは、サービス ワーカーを使用してプログラム可能なコンテンツ キャッシュを作成する必要があります。通常の HTTPウェブ キャッシュは、最初に使用した後にコンテンツをキャッシュし、さまざまなヒューリスティックを使用してコンテンツが不要になった時期を推測しますが、プログラム可能なキャッシュは、コンテンツが最初に使用される前に事前に明示的にプリフェッチし、不要になったときに明示的に破棄することができます。[29]この要件により、ページをオフラインまたは低品質のネットワークでアクセスできるようになります。
- ウェブアプリのマニフェストを参照します。マニフェストには、少なくとも
nameまたは、 、および(値は、または)、および(192 px と 512 px のバージョン) の 5 つの主要なプロパティが含まれている必要があります。マニフェストに含まれる情報により、PWA は URL 経由で簡単に共有でき、検索エンジンで検出でき、複雑なインストール手順が軽減されます (ただし、PWA がサードパーティのアプリストアにリストされる可能性はあります)。[30]さらに、PWA は、ホーム画面への追加、スプラッシュ画面の表示など、ネイティブアプリスタイルのインタラクションとナビゲーションをサポートしています。short_namestart_urldisplaystandalonefullscreenminimal-uiicons
テクノロジー
プログレッシブウェブアプリの作成には、一般的に多くの技術が使用されています。ウェブアプリケーションは、インストール基準を満たし、オフラインで動作し、デバイスのホーム画面に追加できる場合、PWAと見なされます。この定義を満たすには、すべてのPWAに少なくともマニフェストとサービスワーカーが必要です。[31] [32] [33]データの保存、サーバーとの通信、コードの実行には、他の技術が使用される場合があります。
マニフェスト
ウェブアプリケーションマニフェスト[34]は、JSONベースのマニフェスト(通常はmanifest.jsonというラベルが付けられる)[30]を定義したワールドワイドウェブコンソーシアム(W3C)仕様であり、開発者にウェブアプリケーションに関連する以下のメタデータを配置するための一元的な場所を提供します。
- ウェブアプリケーションの名前
- ウェブアプリのアイコンまたは画像オブジェクトへのリンク
- ウェブアプリを起動または開くための優先URL
- ウェブアプリの構成データ
- ウェブアプリのデフォルトの向き
- 表示モードを設定するオプション(全画面など)
このメタデータは、アプリをホーム画面に追加したり、ネイティブ アプリと一緒にリストしたりするために不可欠です。
iOSサポート
iOS Safariは部分的にマニフェストを実装していますが、PWAメタデータのほとんどは、メタタグのApple固有の拡張機能を介して定義できます。これらのタグにより、開発者はフルスクリーン表示を有効にしたり、アイコンやスプラッシュスクリーンを定義したり、アプリケーションの名前を指定したりすることができます。[35] [36]
サービス労働者
サービスワーカーは、メインドキュメントからのWeb/HTTPリクエストに応答できるプログラム可能なネットワークプロキシを実装するWebワーカーです。リモートサーバーの可用性を確認し、そのサーバーが利用可能な場合はコンテンツをキャッシュし、後でそのコンテンツをドキュメントに提供することができます。サービスワーカーは、他のWebワーカーと同様に、メインドキュメントのコンテキストとは別に動作します。サービスワーカーは、プッシュ通知を処理し、バックグラウンドでデータを同期し、リソース要求をキャッシュまたは取得し、ネットワーク要求を傍受し、そのドキュメントが読み込まれていない場合でも、それらを登録したドキュメントとは独立して集中更新を受け取ることができます。[37]
サービスワーカーは、登録、インストール、アクティブ化の 3 段階のライフサイクルを経ます。登録では、インストールの準備として、ブラウザにサービスワーカーの場所を伝えます。インストールは、Web アプリのブラウザにサービスワーカーがインストールされていない場合、またはサービスワーカーに更新がある場合に行われます。アクティブ化は、PWA のすべてのページが閉じられたときに行われるため、以前のバージョンと更新されたバージョンの間に競合はありません。このライフサイクルは、ドメインに対してアクティブにできるサービスワーカーは 1 つだけであるため、サービスワーカーのバージョンを切り替えるときに一貫性を維持するのにも役立ちます。[37]
Webアセンブリ
WebAssemblyは、プリコンパイルされたコードをWebブラウザでネイティブに近い速度で実行することを可能にします。[38]そのため、 C言語などの言語で書かれたライブラリをWebアプリに追加することができます。2015年に発表され、2017年3月に初めてリリースされたWebAssemblyは、2019年12月5日にW3C勧告となり[39] [40] [41]、2021年にACM SIGPLANからプログラミング言語ソフトウェア賞を受賞しました。 [42]
データストレージ
プログレッシブ ウェブ アプリの実行コンテキストは可能な限りアンロードされるため、プログレッシブ ウェブ アプリでは長期的な内部状態 (ユーザー データ、動的に読み込まれるアプリケーション リソース) の大部分を次のいずれかの方法で保存する必要があります。
- ウェブストレージ
- Web Storageは、最新のブラウザでキーと値のストレージを可能にするW3C標準APIです。このAPIは、sessionStorage(ブラウザセッションの終了時に消去されるセッションのみのストレージを可能にする)とlocalStorage(セッションを超えて保持されるストレージを可能にする)の2つのオブジェクトで構成されています。[43]
- インデックスデータベース API
- Indexed Database APIは、すべての主要ブラウザで利用可能なW3C標準データベースAPIです。このAPIは最新のブラウザでサポートされており、JSONオブジェクトや文字列として表現可能な構造を保存できます。[44] Indexed Database APIは、その周囲に追加の構造を提供するラッパーライブラリと一緒に使用できます。
ネイティブアプリとの比較
2017年、Twitterは公式のネイティブAndroidおよびiOSアプリに代わるPWAであるTwitter Liteをリリースしました。Twitterによると、Twitter Liteのサイズはネイティブアプリのわずか1~3%でした。[45] スターバックスは、同等のiOSアプリよりも99.84%小さいPWAを提供しています。PWAを導入した後、スターバックスはオンライン注文数を2倍にし、デスクトップユーザーの注文率はモバイルアプリユーザーとほぼ同じになりました。[46]
フォーブス誌が2018年に発表したレビューによると、 PinterestのPWAのユーザーは、以前のモバイルウェブサイトと比較して、サイトで40%長く時間を費やしていることがわかりました。広告収益率も44%増加し、コアエンゲージメントは60%増加しました。 [47] Flipkartでは、ネイティブアプリをアンインストールした顧客の60%がFlipkart PWAに戻ってきました。ランコムでは、ページがインタラクティブになるまでの時間が84%短縮され、PWAを使用したiOSでのコンバージョンが17%増加し、モバイルセッションが53%増加しました。[48]
アプリストア経由でリリース
PWAは異なるプラットフォーム向けに別々にバンドルしたり配布したりする必要がなく、ウェブ経由でユーザーが利用できるため、開発者はApple App Store、Google Play、Microsoft Store、Samsung Galaxy Storeなどのデジタル配信システムでリリースする必要はありません。主要なアプリストアは、程度の差はあれPWAの公開をサポートしています。[2] Google Play、Microsoft Store、[49] Samsung Galaxy StoreはPWAをサポートしていますが、Apple App Storeはサポートしていません。Microsoft Storeは、 Bingインデックス経由でPWAを発見した後、(アプリ作成者のリクエストがなくても)一部の適格なPWAを自動的に公開します。[50]
参照
- Googleが開発したPWA向けのオープンソース監査ツール、Google Lighthouse
参考文献
- ^ 「プログレッシブ ウェブ アプリとは? 初心者向け PWA ガイド」。freeCodeCamp.org 2024年 1 月 18 日。2024年 5 月 6 日閲覧。
- ^ abc 「プログレッシブ ウェブ アプリ | Software AG」。techradar.softwareag.com。2020年 9 月 25 日閲覧。
- ^ Ltd、Cybellium。フロントエンド開発のマスター。Cybellium Ltd。p. 273。ISBN 979-8-8668-4882-9。
- ^ 「pwa は使えますか?」CanIUse . 2021年1月27日閲覧。
- ^ 「Service Worker の準備はできていますか?」 Jake Archibald。
- ^ abcde Newman, Jared (2021-01-26). 「Firefox はオープンウェブの重要な部分から撤退した」Fast Company . 2021-01-27閲覧。
- ^ Jobs, Steve; Apple (2007 年 6 月 11 日)。「iPhone がサードパーティの Web 2.0 アプリケーションをサポート」。Apple。
- ^ ab Ritchie, Rene (2018年3月5日). 「App Storeゼロ年: 甘くないウェブアプリがiPhoneをSDKへと導いた」iMore . 2019年5月23日閲覧。
- ^ 「ジョブズ氏のiPhoneに対する当初のビジョン:サードパーティのネイティブアプリなし」9to5Mac、2011年10月21日。 2019年5月22日閲覧。
- ^ Marcotte, Ethan (2010 年 5 月 25 日)。「レスポンシブ Web デザイン」。A List Apart。2010年5 月 25 日閲覧。
- ^ 「Mozilla、商用Firefox OSの開発を終了 - gHacks Tech News」gHacks Technology News 2016年9月27日2022年5月5日閲覧。
- ^ Hoffman, Chris; PCWorld | (2016-09-28). 「Mozilla は Firefox OS のすべての商用開発を停止します」。PCWorld。2021年3 月 17 日閲覧。
- ^ 「KaiOS、Firefox OSの残骸の上に構築されたフィーチャーフォンプラットフォーム、Facebook、Twitter、Googleアプリを追加」TechCrunch 2018年2月26日2021年3月17日閲覧。
- ^ ラッセル、アレックス。「プログレッシブ ウェブ アプリ: 魂を失うことなくタブから脱出する」 。2015年6 月 15 日閲覧。
- ^ abc Evans, Jonny (2018年1月26日). 「Apple、ウェブアプリで未来へ回帰」. Computerworld . 2019年5月23日閲覧。
- ^ Ladage, Aaron (2018年4月17日). 「プログレッシブウェブアプリが登場し、すべてが変わる」. DEG . 2019年5月23日閲覧。
- ^ 「HTML5、CSS3などのテーブルをサポートできますか?」caniuse.com . 2021年5月16日閲覧。
- ^ ab 「Windows 上の Progressive Web Apps の概要」。Microsoft Edge ドキュメント。2021 年 3 月 13 日。2021 年3 月 13 日に閲覧。
- ^ LePage, Pete (2019 年 6 月 4 日)。「デスクトップ上の Progressive Web Apps」。Google Developers。2019年9 月 13 日閲覧。
- ^ agi90 (2020年12月19日). 「コメント」. Reddit .
私の知る限り、モバイルでPWAを廃止する予定はありません。
{{cite web}}: CS1 maint: 数値名: 著者リスト (リンク) - ^ 「PWA を導入しましょう」Vivaldi ブラウザ2021-10-07 . 2021-10-11閲覧。
- ^ Angle, Patrick; Avenard, Jean-Yves; Caceres, Marcos; Cannon, Ada Rose; Carlson, Eric; Davidson, Garrett; Davis, Jon; Dubost, Karl; Eidson, Brady (2023-06-06). 「WWDC23 からのニュース: Safari 17 ベータ版の WebKit 機能」。WebKit 。2023-06-14閲覧。
- ^ Angle, Patrick; Caceres, Marcos; Caliman, Razvan; Davis, Jon; Eidson, Brady; Hatcher, Timothy; Niwa, Ryosuke; Simmons, Jen (2023-03-27). 「Safari 16.4 の WebKit 機能」. WebKit . 2023-06-14閲覧。
- ^ 「App Shell モデル」。
- ^ Osmani, Addi. 「The App Shell Model | Web Fundamentals」 。Google Developers。2019年5 月 23 日閲覧。
- ^ Russell, Alex. 「What, Exactly, Makes a Progressive Web App」。2016 年10 月 18 日閲覧。
- ^ 「インストール可能にするには何が必要ですか?」web.dev 。2021年5月19日閲覧。
- ^ 「プログレッシブ ウェブ アプリ」。web.dev。2015年6月 15 日閲覧。
- ^ 「Service Worker キャッシュと HTTP キャッシュ」。web.dev。2021年 5 月 19 日閲覧。
- ^ ab W3C「Web App Manifest」、ワーキングドラフト、2016年9月12日取得。
- ^ 「Discoverable」。Mozilla Developer Network 。 2017年4月24日閲覧。
- ^ 「ネットワークに依存しない」。Mozilla Developer Network 。 2017年4月24日閲覧。
- ^ 「アプリケーション シェル アーキテクチャを使用した Web アプリの即時読み込み」。Google Developers。2017年 4 月 24 日閲覧。
- ^ 「MDN の Web マニフェスト ドキュメント」。MDN Web ドキュメント。
- ^ 「iOS 12.2 の Progressive Web Apps の新機能」。Medium。2019年 3 月 27 日。
- ^ 「Web アプリケーションの設定」。Safari Web コンテンツ ガイド。
- ^ ab 「Service Worker 入門 | Web」 。Google Developers。2019年 5 月 1 日。2019 年5 月 23 日閲覧。
- ^ 「WebAssembly の概念」。MDN。2018年8 月 14 日閲覧。
- ^ World Wide Web Consortium. 「WebAssembly Core 仕様」. World Wide Web Consortium (W3) . 2024 年 5 月 6 日閲覧。
- ^ 「WebAssembly 1.0 が W3C 勧告となり、ブラウザーでネイティブに実行できる 4 番目の言語に」。InfoQ。2024年 5 月 6 日閲覧。
- ^ Kantha Nguyen (2022-05-01). 「Home Nest」. 2024年5月6日閲覧。
- ^ 「プログラミング言語ソフトウェア賞」www.sigplan.org . 2024年5月6日閲覧。
- ^ 「Web Storage API」。MDN 。 2018年8月14日閲覧。
- ^ 「IndexedDB の背後にある概念」。MDN。2018年8 月 14 日閲覧。
- ^ Shankland, Stephen (2020年7月30日). 「Twitterのアプリは、携帯電話によるウェブの支配を阻止するのに役立っている」CNET 。 2023年2月11日閲覧。
- ^ 「2021 年のプログレッシブ ウェブ アプリ (PWA) のベスト例 12 選」SimiCart . 2021 年 2 月 22 日. 2021 年 5 月 16 日閲覧。
- ^ Osmani, Addy (2017 年 11 月 30 日). 「Pinterest プログレッシブ ウェブ アプリのパフォーマンス ケース スタディ」. ChromiumDev チーム. 2023 年2 月 10 日閲覧。
- ^ Gazdecki, Andrew (2018年3月9日). 「なぜプログレッシブウェブアプリがネイティブモバイルアプリに取って代わるのか」Forbes . 2023年2月10日閲覧。
- ^ MSEdgeTeam. 「プログレッシブ Web アプリを Microsoft Store に公開する - Microsoft Edge 開発」。docs.microsoft.com。2021年 5 月 16 日閲覧。
- ^ 「Windows 10 Progressive Web Apps の最初のバッチがリリースされました」。Windows Central 2018-04-07 。2021-05-16閲覧。
外部リンク
- Web アプリケーション ワーキング グループ標準索引
