Next.jsによるプログレッシブウェブアプリ(PWA)開発

目次

  1. はじめに
  2. インストールと環境準備
  3. PWA対応デザインの考慮点
  4. サービスワーカーの設定
  5. Web App マニフェストの設定
  6. ロゴ画像とスプラッシュ画面の設定
  7. LighthouseでPWA評価
  8. まとめ

1. はじめに

この記事では、Next.jsを利用したプログレッシブウェブアプリ(PWA)開発の基本的な手順やポイントを解説します。 PWAは、速度やオフライン対応が可能であり、デスクトップ、モバイル対応を実現し、高いユーザーエクスペリエンスを提供します。

2. インストールと環境準備

まずは、Next.jsと必要なパッケージをインストールします。

$ npx create-next-app your-app-name
$ cd your-app-name
$ npm install next-pwa

3. PWA対応デザインの考慮点

  • レスポンシブデザイン: デバイスに応じた適切なレイアウトやサイズを提供
  • タッチ操作: スワイプやピンチ操作に対応
  • オフライン対応: ネットワークが不安定な場合でもコンテンツを表示

4. サービスワーカーの設定

next.config.js にnext-pwaプラグインを追加します。

const withPWA = require('next-pwa')

module.exports = withPWA({
  pwa: {
    dest: 'public',
  },
})

5. Web App マニフェストの設定

public/manifest.json ファイルを作成し、基本設定を行います。

{
  "name": "Your App Name",
  "short_name": "App",
  "description": "A description of your app",
  "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"
    }
  ]
}

_app.jsマニフェストへのリンクを追加します。

import Head from 'next/head'

function MyApp({ Component, pageProps }) {
  return (
    <>
      <Head>
        <link rel="manifest" href="/manifest.json" />
      </Head>
      <Component {...pageProps} />
    </>
  )
}

export default MyApp

6. ロゴ画像とスプラッシュ画面の設定

public/icon-192x192.pngpublic/icon-512x512.png を用意し、マニフェストで設定したサイズに合わせます。

7. LighthouseでPWA評価

Google ChromeのLighthouse機能を使って、PWAとしての評価を行います。結果や改善点を確認し、対応を行いましょう。

8. まとめ

この記事では、Next.jsを使ったPWA開発の基本的な手順を紹介しました。これらの手順を踏まえて、優れたPWAを作成してください。