- マニフェストファイルの追加: マニフェストファイルは、アプリのメタデータ(アプリ名、アイコン、テーマカラーなど)を定義するためのものです。publicフォルダにmanifest.jsonファイルを作成し、必要なメタデータを追加します。
{
"name": "My PWA",
"short_name": "PWA",
"start_url": ".",
"display": "standalone",
"theme_color": "#ffffff",
"background_color": "#ffffff",
"icons": [
{
"src": "icon.png",
"sizes": "192x192",
"type": "image/png"
}
]
}
- サービスワーカーの登録: サービスワーカーは、PWAの中心的なコンポーネントであり、オフラインキャッシュやプッシュ通知などの機能を提供します。srcフォルダにservice-worker.jsファイルを作成し、必要なキャッシュ戦略やリソースのインストールロジックを追加します。また、index.jsファイルでサービスワーカーを登録する必要があります。
// src/service-worker.js
self.addEventListener('install', event => {
event.waitUntil(
caches.open('my-cache').then(cache => {
return cache.addAll([
'/',
'/index.html',
'/manifest.json',
'/icon.png'
// 他の必要なリソースを追加
]);
})
);
});
// キャッシュからリソースを取得するロジックなどを追加
// index.js
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/service-worker.js')
.then(registration => {
console.log('Service Worker registered:', registration);
})
.catch(error => {
console.error('Service Worker registration failed:', error);
});
}
- オフライン対応の追加: PWAでは、オフライン時にもアプリが動作することが重要です。サービスワーカーを使用して、キャッシュされたリソースを取得することでオフライン対応を実現できます。また、オフライン時にユーザーに通知を表示することもできます。
// src/service-worker.js
self.addEventListener('fetch', event => {
event.respondWith(
caches.match(event.request).then(response => {
return response || fetch(event.request);
})
);
});
// オフライン時に通知を表示するロジックなどを追加
これらの手順に従ってReact.jsでPWAを構築することができます。これにより、アプリのインストール可能性、オフライン対応、高速な読み込み体験などの利点を得ることができます。PWAの最適化や他の機能の追加については、さらに詳細なドキュメンテーションやチュートリアルを参照することをおすすめします。