Next.jsでPWAを作る
初心者向けガイド

こんにちは!今回は、Progressive Web App(PWA)について、その概要からNext.jsでの作成方法から確認方法まで、初心者の方にも分かりやすく解説していきます。
1. PWAの概要
Progressive Web App(PWA)とは、Webテクノロジーを使って作られたアプリケーションで、ネイティブアプリのような使い心地を提供します。PWAの主な特徴は:
- オフライン動作が可能
- ホーム画面にインストール可能
- プッシュ通知の送信が可能
- 高速で信頼性が高い
PWAは、Webの利点(アクセスの容易さ、更新の簡便さ)とネイティブアプリの利点(オフライン動作、デバイス機能へのアクセス)を組み合わせたものです。
2. Next.jsでのPWA作成方法
Next.jsを使ってPWAを作成する手順を、ステップバイステップで説明します。
2.1 Next.jsプロジェクトのセットアップ
まず、新しいNext.jsプロジェクトを作成します:
npx create-next-app@latest my-pwa-app cd my-pwa-app
2.2 next-pwaパッケージのインストール
PWA機能を簡単に実装できるnext-pwa
パッケージをインストールします:
npm install next-pwa
2.3 next.config.jsの設定
プロジェクトのルートディレクトリにnext.config.js
ファイルを作成または編集し、以下の内容を追加します:
const withPWA = require("next-pwa")({ dest: "public", disable: process.env.NODE_ENV === "development", register: true, skipWaiting: true, }); module.exports = withPWA({ // 他のNext.jsの設定をここに記述 });
この設定により、本番環境でのみPWAが有効になり、開発中は無効化されます。
2.4 manifest.jsonの作成
public
ディレクトリにmanifest.json
ファイルを作成します。この内容については、後ほど詳しく解説します。
2.5 アイコンの追加
public
ディレクトリに、アプリのアイコン画像(例:icon-192x192.png
、icon-512x512.png
)を追加します。
2.6 _document.jsの作成
pages
ディレクトリに_document.js
ファイルを作成します。この内容についても、後ほど詳しく解説します。
3. manifest.jsonとdocument.jsの解説
3.1 manifest.json
manifest.json
は、PWAの基本的な情報を定義するファイルです。以下は典型的な例です:
{ "name": "My Next.js PWA", "short_name": "Next PWA", "description": "A Progressive Web App built with Next.js", "start_url": "/", "display": "standalone", "background_color": "#ffffff", "theme_color": "#000000", "icons": [ { "src": "/icon-192x192.png", "sizes": "192x192", "type": "image/png" }, { "src": "/icon-512x512.png", "sizes": "512x512", "type": "image/png" } ] }
各項目の説明:
name
: アプリの完全な名前short_name
: スペースが限られている場合に使用される短い名前description
: アプリの簡単な説明start_url
: アプリが起動する際の開始URLdisplay
: アプリの表示モード("standalone"はブラウザUIを非表示に)background_color
: アプリ起動時の背景色theme_color
: ブラウザのテーマカラーicons
: アプリのアイコン情報(異なるサイズを指定)
3.2 _document.js
_document.js
は、HTMLドキュメントの構造をカスタマイズし、PWAに必要なメタデータやリンクを追加するために使用されます:
import { Html, Head, Main, NextScript } from "next/document"; export default function Document() { return ( <Html> <Head> <link rel="manifest" href="/manifest.json" /> <link rel="apple-touch-icon" href="/icon-192x192.png" /> <meta name="theme-color" content="#000000" /> </Head> <body> <Main /> <NextScript /> </body> </Html> ); }
主要な部分の説明:
<link rel="manifest" href="/manifest.json" />
: PWAのマニフェストファイルを指定<link rel="apple-touch-icon" href="/icon-192x192.png" />
: iOS端末用のアイコンを指定<meta name="theme-color" content="#000000" />
: ブラウザのテーマカラーを設定
4. PWAアプリの確認・テスト方法
PWAが正しく実装されているか確認するには、以下の手順を踏みます:
- アプリケーションをビルドし、本番モードで起動:
npm run build npm run start
-
Google Chromeで開発者ツールを開き、「Application」タブを選択
-
左側のサイドバーで「Manifest」を確認:
- マニフェストファイルが正しく読み込まれているか
- アイコンが表示されているか
-
「Service Workers」を確認:
- Service Workerが正しく登録されているか
-
アプリケーションのパフォーマンスをチェック:
- 「Lighthouse」タブを使用してPWAスコアを確認
-
オフライン動作のテスト:
- 開発者ツールの「Network」タブで「Offline」にチェックを入れる
- ページをリロードし、オフラインでも動作するか確認
-
インストール機能のテスト:
- ブラウザのアドレスバーの右側に表示される「インストール」アイコンをクリック
- デスクトップにインストールされ、スタンドアロンモードで起動するか確認
以上の手順で、あなたのNext.jsアプリケーションがPWAとして正しく機能しているかを確認できます。
PWAの開発は、Webアプリケーションにネイティブアプリのような機能を追加する素晴らしい方法です。Next.jsとPWAを組み合わせることで、高性能で使いやすいアプリケーションを効率的に開発できます。
ぜひ、この記事を参考にして、あなただけのPWAを作ってみてください!質問があれば、いつでもお聞きしますよ。頑張ってください!