PWA(Progressive Web Apps)とは?
PWA(Progressive Web Apps)/プログレッシブウェブアプリは、Web技術を使用してネイティブアプリのような動作を実現することができるアプリです。
PWAは、以下の手順で作成することができます。
サービスワーカー(Service Worker)を登録する
サービスワーカーを登録する:PWAを実現するためには、サービスワーカーを登録する必要があります。
サービスワーカーは、Webページとは別にバックグラウンドで動作するスクリプトで、オフライン時やネットワークが不安定な状況でも動作するアプリを実現するために必要です。
サービスワーカーを登録するには、まずJavaScriptファイルを作成します。このJavaScriptファイルには、サービスワーカーを登録するためのコードを記述します。例えば、以下のようなコードです。
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/sw.js')
.then(function(registration) {
console.log('ServiceWorker registration successful with scope: ', registration.scope);
})
.catch(function(err) {
console.log('ServiceWorker registration failed: ', err);
});
}
サービスワーカーは、基本的にウェブアプリケーション、ブラウザー、そして(もし繋がっていれば)ネットワークの間に介在するプロキシサーバーのように振る舞います。
https://developer.mozilla.org/ja/docs/Web/API/Service_Worker_API
マニフェストファイル(manifest.json)を作成する
マニフェストファイルを作成する:マニフェストファイル(manifest.json)は、PWAの設定ファイルです。アイコン画像やアプリ名、スタートURLなどを指定することができます。
マニフェストファイルはJSON形式で記述します。例えば、以下のような内容になります。
{
"name": "PWA Sample",
"short_name": "PWA",
"icons": [
{
"src": "/images/icons/icon-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/images/icons/icon-512x512.png",
"sizes": "512x512",
"type": "image/png"
}
],
"start_url": "/",
"display": "standalone",
"background_color": "#ffffff",
"theme_color": "#ffffff"
}
この例では、アプリ名やアイコン画像、スタートURL、テーマカラーなどを指定しています。
オフライン対応を実装する
オフライン対応を実装する:サービスワーカーを使用することで、オフライン時でもアプリを動作させることができます。オフライン時の表示内容を作成し、サービスワーカーでそれを制御することで実現します。
オフライン対応を実装するためには、サービスワーカーでキャッシュを制御する必要があります。例えば、以下のようなコードを記述します。
self.addEventListener('fetch', function(event) {
event.respondWith(
caches.match(event.request)
.then(function(response) {
if (response) {
return response;
}
return fetch(event.request);
})
);
});
[rml_read_more]
このコードでは、fetchイベントが発生した場合に、キャッシュを検索して該当するリソースがあればそれを返し、なければネットワークからリソースを取得します。
キャッシュ(cache)を実装する
キャッシュを実装する:PWAでは、リソースをキャッシュすることで高速な表示を実現します。サービスワーカーでキャッシュを制御し、リソースを取得する際にキャッシュから取得するようにすることで実現します。
キャッシュを実装するためには、サービスワーカーでキャッシュを制御する必要があります。例えば、以下のようなコードを記述します。
self.addEventListener('install', function(event) {
event.waitUntil(
caches.open('cache-v1').then(function(cache) {
return cache.addAll([
'/',
'/index.html',
'/styles.css',
'/script.js',
'/images/logo.png'
]);
})
);
});
このコードでは、install
イベントが発生した場合に、キャッシュストレージを開き、必要なリソースをキャッシュに追加する処理を記述しています。
ホーム画面に追加する
PWAは、ホーム画面に追加してアプリのように使用することができます。そのためには、以下のようなコードをHTMLに記述します。
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="manifest" href="/manifest.json">
<meta name="theme-color" content="#ffffff">
このコードでは、ホーム画面に追加するために必要なメタ情報を設定しています。また、manifest.json
ファイルを指定しています。
まとめ
以上が、PWAを作成するための基本的な手順になります。
実際には、それぞれの手順にさまざまな実装方法がありますので、より詳しい情報を得るためには、公式ドキュメントや書籍などを参考にすることをおすすめします。