Skip to content
概要 ブログ 学習する 探検 パターン Case studies
このページ内
  • オフラインで実行可能
  • オフラインコンテンツが利用可能で、メディアが再生可能
  • プロアクティブなバックグラウンドダウンロード
  • 他のアプリケーションとの共有と連携
  • バックグラウンドアプリ更新
  • クラウド上で同期された状態
  • ハードウェアメディアキーコントロール
  • マルチタスクとアプリショートカット
  • コンテキストメニューのクイックアクション
  • デフォルトのアプリとして機能する
  • ローカルファイルシステムの統合
  • プラットフォームのルックアンドフィール
  • カスタマイズされたタイトルバー
  • 軽快なアニメーション
  • アプリの外部に表示されたコンテンツ
  • ロック画面のメディアコントロールウィジェット
  • プッシュ通知
  • アプリアイコンのバッジ
  • メディアの再生は省エネ設定よりも優先される
  • アプリストアでのアプリの検索
  • 機能の概要
  • まとめ
  • 謝辞

PWAをアプリのように動作させる

プログレッシブWebアプリをWebサイトのように動作させるのではなく、「実際の」アプリのように動作させる

Jun 15, 2020 — 更新済み Jul 23, 2020
Available in: English、Español、Português、Русский、中文、한국어
Appears in: プログレッシブウェブアプリ
Thomas Steiner
Thomas Steiner
TwitterGitHubGlitchHomepage
このページ内
  • オフラインで実行可能
  • オフラインコンテンツが利用可能で、メディアが再生可能
  • プロアクティブなバックグラウンドダウンロード
  • 他のアプリケーションとの共有と連携
  • バックグラウンドアプリ更新
  • クラウド上で同期された状態
  • ハードウェアメディアキーコントロール
  • マルチタスクとアプリショートカット
  • コンテキストメニューのクイックアクション
  • デフォルトのアプリとして機能する
  • ローカルファイルシステムの統合
  • プラットフォームのルックアンドフィール
  • カスタマイズされたタイトルバー
  • 軽快なアニメーション
  • アプリの外部に表示されたコンテンツ
  • ロック画面のメディアコントロールウィジェット
  • プッシュ通知
  • アプリアイコンのバッジ
  • メディアの再生は省エネ設定よりも優先される
  • アプリストアでのアプリの検索
  • 機能の概要
  • まとめ
  • 謝辞

プログレッシブWebアプリは、「PWAは単なるWebサイト」と言っても良いでしょう。 MicrosoftのPWAドキュメントでは、そのことに同意しており、PWAの提唱者であるFrances Berriman氏とAlex Russell氏さえもそのように述べています。まさにPWAは単なるWebサイトですが、それだけではありません。正しく実行された場合、PWAはWebサイトのように動作するのではなく、「実際の」アプリのように感じられます。では、実際のアプリのような動作とは何を意味するでしょうか。

この質問に答えるために、Apple Podcastsアプリの例を取り上げます。これはデスクトップのmacOSとモバイルのiOS (およびiPadOS) で利用できます。Podcastsはメディアアプリケーションですが、これから説明する中心的な概念は、他のカテゴリのアプリにも当てはまります。

iPhoneとMacBookをサイドバイサイドで実行し、両方ともPodcastsアプリケーションを実行しています。
iPhoneおよびmacOS上のApple Podcasts (出典)。

注意

次の一覧のiOS/Android/デスクトップアプリの各機能には、詳細が表示されるWebコンポーネントでこれを実行する方法があります。さまざまなオペレーティングシステムのすべてのブラウザが、一覧のすべてのAPIまたは機能をサポートしているわけではないのでご注意ください。リンクされた記事の互換性に関する注意事項をよく確認してください。

オフラインで実行可能 #

一歩下がって、携帯電話やデスクトップコンピュータにインストールされているプラットフォーム固有のアプリケーションのいくつかを考えると、明らかに際立っていることが1つあります。それは常に何か情報が得られるということです。Podcastsアプリでは、オフラインであっても常に何らかの動作が行われます。ネットワークに接続していない場合でも、当然アプリは起動しきます。[トップチャート] セクションにコンテンツは表示されませんが、「現在接続できません」メッセージと [再試行] ボタンがペアになって表示されます。これは期待していた経験ではないかもしれませんが、少なくとも何らかの情報を得ることはできます。

ネットワーク接続が利用できない場合の情報メッセージ「現在接続できません」を表示するPodcastsアプリ。
ネットワーク接続のないPodcastsアプリ。
Webでこれを実行する方法Podcastsアプリは、いわゆるアプリシェルモデルに従っています。左側のメニューアイコンやコアプレーヤーのUIアイコンなどの装飾画像を含め、コアアプリを表示するために必要なすべての静的コンテンツはローカルキャッシュに保存されます。トップチャートデータなどの動的コンテンツはオンデマンドでのみ読み込まれ、読み込みに失敗した場合はローカルキャッシュに保存されたフォールバックコンテンツが表示されます。このアーキテクチャモデルをWebアプリに適用する方法については、アプリシェルモデルの記事を参照してください。

オフラインコンテンツが利用可能で、メディアが再生可能 #

オフラインでも、左側のドロワーから[ダウンロード済み] セクションに移動して、ダウンロードしたポッドキャストエピソードを楽しむことができます。これらのエピソードは、すぐに再生でき、アートワークや説明などのすべてのメタデータとともに表示されます。

ポッドキャスト再生のエピソードをダウンロードしたPodcastsアプリ。
ダウンロードしたポッドキャストのエピソードは、ネットワークがなくても再生できます。
Webでこれを実行する方法以前にダウンロードしたメディアコンテンツは、たとえばWorkboxライブラリのキャッシュに保存された音声と動画の再生レシピを使用して、キャッシュから再生できます。その他のコンテンツは、常にキャッシュまたはIndexedDBに保存できます。詳細については、Webのストレージの記事を読み、どのストレージテクノロジーをいつ使用するかを確認してください。使用可能なメモリ量が少なくなっても、消去されずに永続的に保存する必要があるデータの場合には、永続ストレージAPIを使用できます。

プロアクティブなバックグラウンドダウンロード #

オンライン接続されたときには、http 203などのクエリでコンテンツを検索できます。また、検索結果HTTP 203ポッドキャストを購読することを決めたときには、シリーズの最新エピソードがすぐにダウンロードされ、問い合わせはありません。

購読直後にポッドキャストの最新エピソードをダウンロードするPodcastsアプリ。
ポッドキャストを購読すると、最新のエピソードがすぐにダウンロードされます。
Webでこれを実行する方法ポッドキャストエピソードのダウンロードには、時間がかかる場合があります。Background Fetch APIを使用すると、ダウンロードをブラウザに委任できます。ブラウザは、ダウンロードをバックグラウンドで処理します。 Androidでは、さらにブラウザがこれらのダウンロードをオペレーティングシステムに委任することもできるため、ブラウザを継続的に実行する必要はありません。ダウンロードが完了すると、アプリのサービスワーカーが起動し、応答の処理方法を決定できます。

他のアプリケーションとの共有と連携 #

Podcastsアプリは、他のアプリケーションと自然に統合されます。たとえば、好きなエピソードを右クリックすると、メッセージアプリなど、デバイス上の他のアプリと共有できます。また、システムクリップボードとも自然に統合されます。任意のエピソードを右クリックして、そのエピソードへのリンクをコピーできます。

[エピソードの共有] > [メッセージ] オプションが選択されたポッドキャストエピソードで呼び出されたPodcastsアプリのコンテキストメニュー。
ポッドキャストエピソードをメッセージアプリに共有する。
Webでこれを実行する方法 Web Share APIとWeb Share Target APIを使用すると、デバイスの他のアプリケーションとの間でテキスト、ファイル、リンクをアプリで共有および受信できます。Webアプリがオペレーティングシステムに組み込まれた右クリックメニューにメニュー項目を追加することはまだできませんが、デバイスの他のアプリとリンクする方法は他にもたくさんあります。Async Clipboard APIを使用すると、テキストおよび画像データ (PNG画像) をプログラムで読み取り、システムクリップボードに書き込むことができます。Androidでは、Contact Picker APIを使用して、デバイスの連絡先管理からエントリを選択できます。プラットフォーム固有のアプリとPWAの両方を提供している場合は、Get Installed Related Apps APIを使用して、プラットフォーム固有のアプリがインストールされているかどうかを確認できます。インストールされている場合は、ユーザーにPWAのインストールや承認、Webプッシュ通知の承諾を促す必要はありません。

バックグラウンドアプリ更新 #

Podcastsアプリの設定で、新しいエピソードを自動的にダウンロードするようにアプリを構成できます。そのことを考える必要さえありません。更新されたコンテンツが常に提供されているのです。

[Podcastsの更新] オプションが [毎時] に設定されている [一般] セクションのPodcastsアプリの設定メニュー。
1時間ごとに新しいポッドキャストエピソードをチェックするように構成されたPodcasts。
Webでこれを実行する方法 Periodic Background Sync APIを使用すると、アプリを実行しなくても、バックグラウンドでコンテンツを定期的に更新できます。つまり、新しいコンテンツがプロアクティブに利用可能であるため、ユーザーはいつでもすぐにコンテンツを掘り下げることができます。

クラウド上で同期された状態 #

同時に、サブスクリプションは、所有しているすべてのデバイス間で同期されます。シームレスな世界では、ポッドキャストのサブスクリプションを手動で同期することを気にする必要はありません。同様に、モバイルデバイスのメモリが、デスクトップですでに聴いたエピソードによって消費されることを心配する必要もありません。逆も同様です。再生状態は同期されたままで、聴いたエピソードは自動的に削除されます。

[デバイス間でサブスクリプションを同期する] オプションがアクティブになっている [詳細] セクションのPodcastsの設定メニュー。
状態はクラウド上で同期されます。
Webでこれを実行する方法アプリ状態データの同期タスクは、Background Sync APIに委任できます。同期処理自体は、ユーザーがアプリを再度閉じた場合を含め最終的に実行されれば、即時実行する必要はありません。

ハードウェアメディアキーコントロール #

Chromeブラウザでニュースページを読んでいるときなど、別のアプリケーションで忙しいときでも、ノートPCのメディアキーを使用してPodcastsアプリを制御できます。前後にスキップするためだけにアプリに切り替える必要はありません。

Apple MacBook Pro Magic Keyboardと注釈付きメディアキー。
メディアキーを使用すると、Podcastsアプリ (出典) を制御できます。
Webでこれを実行する方法メディアキーはMedia Session APIでサポートされています。このように、ユーザーは物理キーボードやヘッドフォンのハードウェアメディアキーを利用したり、スマートウォッチのソフトウェアメディアキーからWebアプリを制御したりすることもできます。さらにシーク操作をスムーズにするには、オープニングクレジットやチャプターの境界を通過するなど、ユーザーがコンテンツの重要な部分をシークするときに振動パターンを送信することができます。

マルチタスクとアプリショートカット #

もちろん、いつでもどこからでもPodcastsアプリにマルチタスクで戻ることができます。アプリには明確に識別できるアイコンがあり、デスクトップやアプリケーションドックに配置することもできるので、好きなときにPodcastsをすぐに起動できます。

いくつかのアプリアイコンから選択できるmacOSタスクスイッチャー。そのうちの1つはPodcastsアプリです。
Podcastsアプリに戻るマルチタスク。
Webでこれを実行する方法デスクトップとモバイルの両方のプログレッシブWebアプリを、ホーム画面、スタートメニュー、またはアプリケーションドックにインストールできます。インストールは、プロアクティブなプロンプトに基づいて行うことも、アプリ開発者が完全に制御することもできます。基本的な情報については、What does it take to be installable?記事をお読みください。マルチタスクの場合、PWAはブラウザから独立して表示されます。

コンテキストメニューのクイックアクション #

最も一般的なアプリのアクションである [新しいコンテンツの検索] と [新しいエピソードの確認] は、Dockのアプリのコンテキストメニューから直接利用できます。ログイン時に [オプション] メニューからアプリを開くこともできます。

[検索] および [新しいエピソードの確認] オプションを表示するPodcastsアプリアイコンのコンテキストメニュー。
クイックアクションは、アプリアイコンからすぐに利用できます。
Webでこれを実行する方法 PWAのWebアプリマニフェストでアプリアイコンのショートカットを指定することにより、ユーザーがアプリアイコンから直接アクセスできる一般的なタスクへのクイックルートを登録できます。macOSなどのオペレーティングシステムでは、ユーザーが、ログイン時にアプリアイコンを右クリックしてアプリを起動するように設定することもできます。ログイン時に実行するための提案は現在作業中です。

デフォルトのアプリとして機能する #

他のiOSアプリケーション、さらにはWebサイトや電子メールでさえ、 podcasts:// URLスキームを活用することでPodcastsアプリと統合できます。ブラウザでpodcasts://podcasts.apple.com/podcast/the-css-podcast/id1042283903などのリンクをたどると、Podcastsアプリが表示され、ポッドキャストを購読するか聴くかを決めることができます。

ポッドキャストアプリを開くかどうかをユーザーに確認するダイアログを表示するChromeブラウザ。
Podcastsアプリはブラウザから直接開くことができます。
Webでこれを実行する方法完全にカスタムのURLスキームを処理することはまだ可能ではありませんが、PWAのURLプロトコル処理の提案は現在作業中です。現在では、registerProtocolHandler()とweb+スキームプレフィックスが最善の代替手段です。

ローカルファイルシステムの統合 #

すぐには思いつかないかもしれませんが、Podcastsアプリは自然にローカルファイルシステムと統合されます。ポッドキャストエピソードをダウンロードすると、ノートPCでは~/Library/Group Containers/243LU875E5.groups.com.apple.podcasts/Library/Cacheに保存されます。ただし、~/Documentsとは異なり、このディレクトリは当然標準のユーザーが直接アクセスすることを意図したものではありません。ファイル以外の保存メカニズムは、オフラインコンテンツセクションを参照してください。

macOS FinderがPodcastsアプリのシステムディレクトリに移動しました。
ポッドキャストのエピソードは、特別なシステムアプリフォルダに保存されます。
Webでこれを実行する方法File System Access API{/a0を使用すると、開発者はデバイスのローカルファイルシステムにアクセスできます。直接使用することも、APIをサポートしていないブラウザのフォールバックを透過的に提供するbrowser-fs-accessサポートライブラリ経由で使用することもできます。セキュリティ上の理由から、システムディレクトリはWebアクセスできません。

プラットフォームのルックアンドフィール #

PodcastsなどのiOSアプリケーションには自明なより微妙なことがあります。つまり、どのテキストラベルも選択できず、すべてのテキストがコンピュータのシステムフォントと融合されています。また、システムカラーテーマ (ダークモード) の選択も優先されます。

ダークモードのPodcastsアプリ。
Podcastsアプリは、ライトモードとダークモードをサポートしています。
ライトモードのPodcastsアプリ。
アプリはデフォルトのシステムフォントを使用します。
Webでこれを実行する方法user-select CSSプロパティと値noneを利用することで、UI要素が誤って選択されるのを防ぐことができます。ただし、アプリのコンテンツを選択不能にする目的でこのプロパティをむやみに使用しないでください。ボタンのテキストなどのUI要素でのみ使用してください。font-family CSSプロパティの値system-uiでは、アプリに使用するシステムのデフォルトUIフォントを指定することができます。prefers-color-scheme選択を優先し、オプションのダークモードトグルでそれをオーバーライドすることで、アプリはユーザーの配色設定に従うことができます。決定するもう1つの点は、スクロール領域の境界に達したときにブラウザでどのような処理を実行すべきかということかもしれません。たとえば、カスタムプルを実装して更新します。これは、overscroll-behaviorプロパティで可能です。

カスタマイズされたタイトルバー #

Podcastsアプリウィンドウを見ると、Safariブラウザウィンドウなどの従来の統合されたタイトルバーとツールバーがなく、メインプレーヤーウィンドウにドッキングされたサイドバーのようなカスタマイズされたエクスペリエンスになっていることがわかります。

Safariブラウザの統合されたタイルバーとツールバー。
Podcastsアプリの分割されたカスタムタイトルバー。
SafariとPodcastsのカスタマイズされたタイトルバー。
Webでこれを実行する方法 現在は不可能ですが、現在、タイトルバーのカスタマイズに取り組んでいます。ただし、Webアプリマニフェストの displayおよびtheme-colorプロパティを指定して、アプリケーションウィンドウの外観を決定し、どのデフォルトブラウザコントロールが表示されるのか (または何も表示されないのか) を決定することができ (推奨され) ます。

軽快なアニメーション #

Podcastsでは、アプリ内アニメーションは軽快でスムーズです。たとえば、右側のエピソードノートドロワーを開くと、スマートにスライドします。ダウンロードから1つのエピソードを削除すると、残りのエピソードが浮き上がり、削除されたエピソードによって解放された画面領域を使用します。

[エピソードノート] ドロワーが展開されたPodcastsアプリ。
ドロワーを開くときのようなアプリ内アニメーションは軽快です。

Webでこれを実行する方法アニメーションとパフォーマンスの記事で概説されている多数のベストプラクティスを考慮すると、Webでの高パフォーマンスアニメーションは確かに可能です。ページ制御されたコンテンツやメディアカルーセルで一般的に見られるスクロールアニメーションは、CSSスクロールスナップ機能を使用することで大幅に改善できます。完全に制御するには、Web Animations APIを使用できます。

アプリの外部に表示されたコンテンツ #

iOSのPodcastsアプリは、実際のアプリケーション以外の場所、たとえば、システムのウィジェットビューや、Siri提案の形式でコンテンツを表示できます。タップするだけで操作できるプロアクティブな使用状況ベースの注意喚起があると、Podcastsなどのアプリの再エンゲージメント率が大幅に向上する可能性があります。

ポッドキャストの新しいエピソードを提案するPodcastsアプリを表示するiOSウィジェットビュー。
アプリのコンテンツはメインのPodcastsアプリの外部に表示されます。
Webでこれを実行する方法 Content Index APIを使用すると、アプリケーションはPWAのどのコンテンツがオフラインで利用できるかをブラウザに通知できます。これにより、ブラウザはこのコンテンツをメインアプリの外部に表示できます。アプリで関心のあるコンテンツを読み上げ可能な音声再生に適したものとしてマークアップし、一般的に構造化マークアップを使用することで、検索エンジンやGoogleアシスタントなどの仮想アシスタントが製品を最適な形で提示できるようになります。

ロック画面のメディアコントロールウィジェット #

ポッドキャストエピソードの再生中、Podcastsアプリは、エピソードのアートワーク、エピソードのタイトル、ポッドキャスト名などのメタデータを備えた美しいコントロールウィジェットをロック画面に表示します。

豊富なメタデータを含むポッドキャストエピソードを表示するロック画面のiOSメディア再生ウィジェット。
アプリで再生するメディアはロック画面から制御できます。
Webでこれを実行する方法 Media Session APIを使用すると、アートワーク、トラックタイトルなどのメタデータを指定して、ロック画面、スマートウォッチ、またはブラウザの他のメディアウィジェットに表示できます。

プッシュ通知 #

プッシュ通知は、Web上で少し煩わしいものになっています (通知プロンプトは今ではかなり静かになっていますが)。しかし、適切に使用すれば、多くの価値を付加できます。たとえば、iOS Podcastsアプリは、オプションで、購読しているポッドキャストの新しいエピソードを通知したり、新しいエピソードを推奨したり、新しいアプリの機能を通知したりできます。

[通知] 設定画面のiOS Podcastsアプリ。[新しいエピソード] の通知トグルがアクティブになっています。
アプリはプッシュ通知を送信して、新しいコンテンツをユーザーに通知できます。
Webでこれを実行する方法Push APIを使用すると、アプリがプッシュ通知を受信できるため、PWAに関する注目すべきイベントについてユーザーに通知できます。将来の確認済みの時間に発生し、ネットワーク接続を必要としない通知の場合は、Notification Triggers APIを使用できます。

アプリアイコンのバッジ #

私が購読しているポッドキャストの1つでは、新しいエピソードが利用可能になるといつでも、Podcastsのホーム画面アイコンにアプリアイコンバッジが表示され、アプリを確認するように邪魔にならない方法で通知します。

[バッジ] トグルがアクティブになっていることを示すiOS設定画面。
バッジは、アプリケーションが新しいコンテンツについてユーザーに通知するためのスマートな方法です。
Webでこれを実行する方法Badging APIを使用してアプリアイコンバッジを設定できます。これは、PWAに「未読」アイテムという概念がある場合、または目立たないようにユーザーの注意をアプリに向ける手段が必要な場合に特に役立ちます。

メディアの再生は省エネ設定よりも優先される #

ポッドキャストメディアの再生中は、画面がオフになることがありますが、システムはスタンバイモードになりません。アプリは、たとえば歌詞やキャプションを表示するために、オプションで画面を起動状態に保つこともできます。

[Energy Saver] セクションのmacOS設定。
アプリは画面を起動状態に保つことができます。
Webでこれを実行する方法 Screen Wake Lock APIを使用すると、画面がオフになるのを防ぐことができます。Webでのメディア再生は、システムがスタンバイモードに切り替わるのを自動的に防ぎます。

アプリストアでのアプリの検索 #

PodcastsアプリはmacOSデスクトップエクスペリエンスの一部ですが、iOSではAppStoreからインストールする必要があります。podcast、podcasts、またはapple podcastsを検索すると、すぐにAppStoreでアプリが表示されます。

iOS App Storeで「podcasts」を検索するとPodcastsアプリが表示されます。
ユーザーはアプリストアでアプリを検索することを学びました。
Webでこれを実行する方法 AppleはAppStoreでのPWAを許可していませんが、Androidでは、信頼できるWebアクティビティにラップされたPWAを送信できます。 bubblewrapスクリプトにより、これは簡単な操作になります。このスクリプトは、コマンドラインを実行せずに使用できるPWABuilderのAndroidアプリのエクスポート機能を内部的に強化するものでもあります。

機能の概要 #

以下の表は、すべての機能の概要を簡潔に説明し、Webで実現するために役立つリソースの一覧を示します。

機能Webで実行するために役立つリソース
オフラインで実行可能
  • アプリシェルモデル
オフラインコンテンツが利用可能、メディア再生可能
  • キャッシュに保存された音声と動画を再生
  • ワークボックスライブラリ
  • ストレージAPI
  • 永続ストレージAPI
プロアクティブなバックグラウンドダウンロード
  • Background Fetch API
他のアプリケーションとの共有と連携
  • Web Share API
  • Web Share Target API
  • Async Clipboard API
  • Contact Picker API
  • Get Installed Related Apps API
さわやかな背景アプリ
  • Periodic Background Sync API
クラウド上で同期された状態
  • Background Sync API
ハードウェアメディアキーコントロール
  • Media Session API
マルチタスクとアプリのショートカット
  • インストール可能性の基準
コンテキストメニューのクイックアクション
  • アプリアイコンのショートカット
  • ログイン時に実行 (初期段階)
デフォルトのアプリとして機能する
  • URLプロトコル処理 (初期段階)
  • registerProtocolHandler()
ローカルファイルシステムの統合
  • File System Access API
  • browser-fs-accessライブラリ
プラットフォームのルックアンドフィール
  • user-select: none
  • font-family: system-ui
  • prefers-color-scheme
  • ダークモードトグル
カスタマイズされたタイトルバー
  • タイトルバーのカスタマイズ (初期段階)
  • 表示モード
  • テーマカラー
きびきびとしたアニメーション
  • アニメーションとパフォーマンスのヒント
  • CSSスクロールスナップ
  • Web Animations API
アプリの外部に表示されたコンテンツ
  • Content Index API
  • 読み上げ可能コンテンツ
  • 構造化されたマークアップ
ロック画面メディアコントロールウィジェット
  • Media Session API
プッシュ通知
  • Push API
  • Notification Triggers API
アプリアイコンのバッジ
  • Badging API
メディアの再生は省エネ設定よりも優先される
  • Screen Wake Lock API
アプリストアでのアプリの検索
  • 信頼できるWebアクティビティ
  • bubblewrapライブラリ
  • PWABuilderツール

まとめ #

PWAは、2015年の導入以来、長い道のりを歩んできました。ProjectFugu🐡のコンテキストでは、会社横断的なChromiumチームが最後に残ったギャップを埋めるために取り組んでいます。この記事のアドバイスの一部だけに従うことで、アプリのような感覚に少しずつ近づき、ユーザーに「単なるWebサイト」を扱っていることを忘れさせることができます。正直なところ、ほとんどの人にとって実際のアプリのように感じられる限り、アプリがどのように構築されているか (そしてなぜそれらが必要なのか) は気にしないはずです。

謝辞 #

この記事は、Kayce Basques氏、Joe Medley氏、Joshua Bell氏、Dion Almaer氏、Ade Oshineye氏、Pete LePage氏、Sam Thorogood氏、Reilly Grant氏、Jeffrey Yasskin氏によってレビューされました。

Capabilities
最終更新: Jul 23, 2020 — 記事を改善する
Return to all articles
共有する
サブスクライブする

Contribute

  • バグを報告する
  • ソースを表示する

関連性のあるコンテンツ

  • developer.chrome.com
  • Chrome のアップデート
  • ケーススタディ
  • ポッドキャスト
  • ショー

接続する

  • Twitter
  • YouTube
  • Google Developers
  • Chrome
  • Firebase
  • Google Cloud Platform
  • すべての製品
  • 利用規約とプライバシーポリシー
  • コミュニティガイドライン

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies.