PWA のベスト プラクティス
この記事では、PWA をユーザーに最適なアプリケーションにするためのベスト プラクティスを示します。 ユーザーがアプリケーションをインストールすると、オフラインで作業したり、オペレーティング システムに深く統合したり、簡単ではないコンピューティング タスクを実行したりするなど、これらのアプリケーションで何ができるかについて一定の期待があります。
PWA をユーザーが期待する外観にするためのベスト プラクティスについては、このページの記事を参照してください。
このページでは、既に PWA があることを前提としています。 最初に簡単な PWA を構築する方法の詳細については、「 PWA の概要」を参照してください。
カスタム インストールを提供する
「PWA の使用を開始する」の手順に従うと、ブラウザー アドレス バーの [使用可能なアプリ] ボタンを使用してアプリを既にインストールできます。
アプリ のユーザー インターフェイスでのカスタム インストール エクスペリエンスは、ユーザーに対してより明確になり、より多くのインストールにつながる可能性があります。
カスタム インストール エクスペリエンスを作成するには、 beforeinstallprompt イベントを使用し、アプリに独自のインストール ボタンを指定します。
beforeinstallprompt
イベントのコード例を確認するには、PWAmp デモ ソース コードをチェックします。 カスタム インストールをテストするには、 PWAmp デモを開き、[ その他のツール (...
)] >About>Install アプリ をアプリでクリックします。
アプリ ストアに送信する
多くのユーザーは、デバイスのアプリ ストアでアプリを探します。 公式アプリ ストアからダウンロードすると、ユーザーにとって信頼できる使い慣れたエクスペリエンスが提供されます。
PWA ビルダーを使用して、Windows 用 Microsoft Store、iOS 用アプリ ストア、または Android 用 Play ストアに PWA を発行できます。
PWA Builder を使用して Microsoft Store に発行する方法については、「Microsoft Store に PWA を発行する」を参照してください。
優れたアプリ アイコンを作成する
多くのユーザーは、自分のアイコンでデバイス上のアプリを見つけます。 ユーザーがアプリをより簡単に見つけられるように、認識可能なアイコンを選択し、目立っていることを確認し、アプリがインストールされているデバイスに適応していることを確認します。
Windows では、タスク バー、スタート メニュー、 Alt + Tab タスク スイッチャーなど、さまざまな場所にアプリ アイコンが表示されます。 複数の画像サイズを指定して、これらの場所でアプリ アイコンを簡単に認識できるようにします。
Windows で必要なイメージ サイズについては、「アイコンとテーマの色を定義する」の「アイコンイメージのサイズ」を参照してください。
スタンドアロン アプリ ウィンドウを使用する
ネイティブ アプリケーションには、独自の専用ウィンドウがあります。 PWA は、ホスト オペレーティング システムでの表示方法を定義できます。
ブラウザー ナビゲーション ユーザー インターフェイスのないスタンドアロン ウィンドウで PWA を表示するには、Web アプリ マニフェスト ファイルの 表示 メンバーを使用して、 standalone
に設定します。
アプリに複数の HTML ページがある場合は、ユーザーがアプリ内のボタンまたはリンクを使用してページ間を移動できることを確認します。
display
マニフェスト メンバーのminimal-ui
値を使用して、ユーザーがアプリ タイトル バーのブラウザーによってレンダリングされる前のボタンと次のボタンを使用してページ間を移動できるようにします。
よりイマーシブでネイティブに似たエクスペリエンスを作成するために、 デスクトップ PWA は既定のオペレーティング システム タイトル バーを非表示にして、代わりに独自のコンテンツを表示することもできます。 タイトル バーが通常どおり表示されるコンテンツを表示すると、PWA がネイティブ アプリのように感じるのに役立ちます。 Visual Studio Code、Microsoft Teams、Microsoft Edge などの多くのデスクトップ アプリケーションでは、既にこれを行っています。
タイトル バーを置き換えるには、「 ウィンドウ コントロール オーバーレイを使用してタイトル バー領域にコンテンツを表示する」を参照してください。
オペレーティング システムに統合する
ユーザーは、インストールされているアプリケーションが何らかの方法でホスト オペレーティング システムと統合することを期待しています。
アプリは、ショートカット、アプリ間の共有、badging、ファイル処理、リンク処理などのオペレーティング システム統合機能を使用することで、より使い慣れた魅力的でシームレスなエクスペリエンスを提供できます。
ショートカット
ショートカットを使用すると、アプリ アイコンを右クリックして、アプリ機能への直接リンクを定義できます。
「 アプリのショートカットを定義する (長押しメニューまたは右クリック メニュー)」を参照してください。
アプリ共有
PWA は、オペレーティング システムの共有ダイアログを使用して、他のアプリとコンテンツを共有したり、他のアプリからコンテンツを受信したりできます。
「 他のアプリとコンテンツを共有する」を参照してください。
アイコン バッジ
PWA は、アプリ アイコンに状態バッジを表示して、アプリに新しいコンテンツが存在することをユーザーに警告できます。
「バッジ、通知、プッシュ メッセージを使用してユーザーを再エンゲージメントする」の「アプリ アイコンにバッジを表示する」を参照してください。
ファイル処理
PWA を特定のファイルの種類のファイル ハンドラーとして登録できます。
PWA ファイル ハンドラー機能を使用して、オペレーティング システム内のユーザーが特定のファイルを開いたときにアプリを自動的に起動します。
「PWA でファイルを処理する」を参照してください。
リンクとプロトコルの処理
アプリの登録は、特定のリンクが他のアプリケーションで使用されている場合にアプリを自動的に起動するためのリンクまたはプロトコル ハンドラーです。
PWA での PWA へのリンクの処理とプロトコルの処理に関するページを参照してください。
ウィジェット
Windows 11 ウィジェット ボードなどのオペレーティング システム ウィジェット ダッシュボードに表示する独自のアプリ ウィジェットを作成します。
「Windows ウィジェット ボードに PWA ウィジェットを表示する」を参照してください。
オフライン シナリオをサポートする
低速または信頼性の低いネットワークに接続されている場合、またはインターネットにアクセスできない場合でも、通常、インストールされているアプリケーションを開いて使用できます。 インストールされているアプリケーションのユーザーは、これらの条件下で引き続き動作することを期待しています。 また、アプリケーションのネットワークに依存する部分が、カスタム メッセージとローカル キャッシュ機能との接続の欠如を適切に処理することを期待しています。
リテンション期間を向上させるには、PWA にサービス ワーカーを追加します。 サービス ワーカーの Fetch
API と Cache
API、ローカル データ ストレージ アクセスを使用して、ユーザーに優れたオフライン エクスペリエンスを提供できます。
いくつかの手順で優れたオフライン エクスペリエンスを提供できます。
- アプリを起動し、コンテンツを表示し、ユーザーが最も一般的なタスクを実行するために必要なすべての静的リソースをキャッシュします。
- キャッシュできないページのカスタム オフライン ページにリダイレクトします。
- インターネットアクセスなしでは使用できないアプリのタスクを適切に処理します。
- ユーザーがオフラインで表示するためにデータをダウンロードできるようにするなどの高度なシナリオを実装します。
関連項目:
- バックグラウンドで PWA を同期および更新します。
- MDN > リファレンス> Web API > Service Worker API > ガイドで Service Worker を使用する。
- MDN の Service Worker API> Web API > 参照。
- MDN の FetchEvent> Web API > Service Worker API > 参照。
- MDN > 参照> Web API > Service Worker API でキャッシュします。
データをローカルに格納する
ユーザーに豊富で高速なエクスペリエンスを提供するには、次のような PWA で使用できるさまざまな永続的なデータ ストレージ オプションを使用します。
- アプリの静的リソースを格納するために、ストレージをキャッシュします。
- 少量のユーザー データを格納するためのローカル ストレージとセッション ストレージ。
- IndexedDB:大規模で構造化されたユーザー データを格納します。
- ファイル システム アクセス API。ディスクにファイルを格納します。
詳細については、「 デバイスにデータを格納する」を参照してください。
高度な機能を使用する
通常、インストールされているアプリは、Web サイトが通常サポートしていない高度なコンピューティング シナリオを実行します。
アプリのようなエクスペリエンスを提供するには、次のような高度な Web 機能を使用します。
- Web Bluetooth API、USB (WebUSB API)、または Web NFC API を使用したハードウェア アクセス。
- クリップボード API を使用したクリップボード アクセス。
- デバイス連絡先と 連絡先ピッカー API の統合。
- Canvas API、WebGL: Web 用の 2D および 3D グラフィックス (WebGL API)、または Web Audio API を使用したリッチ メディア操作。
- WebAuthn API と Payment Request API を使用した安全で信頼された認証と支払い。
- WebAssembly を使用した簡単でないコンピューティング タスク。
- ファイル システム API を使用したファイルの読み取りと書き込み。
すべてのブラウザーとデバイスでアプリの最も重要なタスクを実行できることを確認します。 「複数のブラウザーとデバイスでテストする」を参照してください。
アプリを実際のアプリのように見せてみましょう
ユーザーは、特定のタスクを達成するためにデバイスにアプリをインストールし、これらのタスクをユーザー インターフェイスでどのように表示するか、ホスト オペレーティング システムに統合する方法について一定の期待を持っています。
ユーザーがアプリの最も重要なタスクを簡単かつ使い慣れた方法で達成できるようにするには、次のような設計の選択を行います。
- Web サイトのように、他のページへのナビゲーションに大きなヘッダー領域を使用しないでください。 代わりにメニューのメタファーを使用します。
- Web サイトのような大きなフッター領域を使用して、より多くのリンクや情報を得ないでください。
-
system-ui
フォントを使用して、コンテンツのネイティブ感を高め、読み込みを高速化します。 - より少ないリンクを使用し、より大きなヒットターゲットを好みます。
- prefers-color-scheme CSS メディア機能を使用して、オペレーティング システムの明るいテーマと暗いテーマをサポートします。
- Web アプリ マニフェストに
background-color
とtheme-color
を指定して、アプリケーション ウィンドウをカスタマイズします。 「Web アプリ マニフェスト」を参照してください。 - 最も重要なタスクに焦点を当て、コンテンツを整理し、ユーザー インターフェイスを合理化します。
- CSS グリッド レイアウト、CSS フレキシブル ボックス レイアウト (flexbox)、CSS メディア クエリ、およびレスポンシブ イメージを使用して、デバイスのフォーム ファクターに基づいてユーザー インターフェイスを再整理します。
- ユーザー操作をすぐに登録することで、認識されるパフォーマンスを向上させます。
- 次の画面のレンダリングに時間がかかる場合は、スケルトン画面の使用を検討してください。 CSS カスタム プロパティを使用したスケルトン 画面の構築に関するページを参照してください。
複数のブラウザーとデバイスでテストする
プログレッシブ Web Appsを使用すると、1 つのコードベースから、すべてのデバイス用のアプリを配信できます。 アプリがどこでも動作することを確認するには、複数のブラウザー、オペレーティング システム、デバイスでテストします。
アプリの最も重要なシナリオがどこでも機能することを確認し、サポート デバイスのエクスペリエンスを段階的に強化します。
複数の環境でアプリをテストするには、次の手法を検討してください。
- クロス ブラウザー テスト。
- DevTools を使用して、Microsoft Edge の他のブラウザーをエミュレートしてテストします。
- Windows または Android でリモート デバッグ セッションを作成します。
- Microsoft Edge でテストと自動化 を行い、テストを自動化します。
- 仮想マシンでテストします。
ディープ リンクのサポート
Web とソーシャル メディアを介したアプリの検出と共有を向上させるには、アプリの各ページを一意の URL にルーティングし、 ディープ リンクをサポートします。
関連項目
ローカル: PWA:
- アプリのショートカットを定義する (長押しまたは右クリックメニュー)
- アプリ アイコンのバッジを [ ユーザーにバッジ 、通知、プッシュ メッセージで再エンゲージメントする] に表示します。
- Windows ウィジェット ボードに PWA ウィジェットを表示する
- ウィンドウ コントロール オーバーレイを使用してタイトル バー領域にコンテンツを表示する
- PWA の概要
- PWA 内のファイルを処理する
- PWA へのリンクを処理する
- PWA でプロトコルを処理する
- [アイコンとテーマの色を定義する] のアイコン画像のサイズ。
- PWA を Microsoft Store に発行する
- 他のアプリとコンテンツを共有する
- デバイスにデータを格納する
- バックグラウンドで PWA を同期および更新する
- Microsoft Edge でのテストと自動化
ローカル: DevTools:
MDN:
- beforeinstallprompt at MDN > References > Web API > Window.
- MDN > 参照> Web API > Service Worker API でキャッシュします。
- MDN の Canvas API> Web API > 参照。
- MDN のクリップボード API> Web API > 参照。
- MDN の連絡先ピッカー API> Web API > 参照。
- MDN > ガイド > ツールとテストでのクロス ブラウザー テスト。
- MDN >参照> Web アプリ マニフェスト>メンバーに表示します。
- MDN の FetchEvent> Web API > Service Worker API > 参照。
- MDN のファイル システム API> Web API >参照。
- MDN の CSS フレキシブル ボックス レイアウト (flexbox) > CSS > 参照。
- MDN の CSS グリッド レイアウト> CSS > 参照。
- MDN > 参照> CSS での CSS メディア クエリ。
- MDN > REferences > Web API での支払い要求 API。
- MDN > リファレンス> CSS >@mediaの prefers-color-scheme。
- MDN > ガイド> HTML >マルチメディアと埋め込みの応答性の高い画像。
- MDN の Service Worker API> Web API > 参照。
- MDN > リファレンス> Web API > Service Worker API > ガイドで Service Worker を使用する。
- MDN > 参照の Web アプリ マニフェスト。
- MDN の Web Bluetooth API> Web API > 参照。
- MDN の Web NFC API> Web API >参照。
- MDN の USB> WebUSB API > Web API >参照。
- MDN での WebAssembly。
- MDN の Web Audio API> Web API >参照。
- WebGL: MDN > リファレンス > Web API の Web 用の 2D および 3D グラフィックス (WebGL API)。
ウィキペディア:
GitHub:
他: