Firebase と Next.js の統合手順
Firebase Hosting を利用して Next.js アプリケーションをデプロイし、Firebase CLIのフレームワークアウェアネス 機能を活用して SSR(サーバーサイドレンダリング) や ISR(インクリメンタルスタティックリジェネレーション) を実現します。
以下に、詳細な手順を提供します。このガイドでは、Firebase Hosting と Cloud Functions を連携させて Next.js アプリケーションをデプロイする方法を説明します。
前提条件
- Node.js がインストールされていること(推奨バージョン: 14.x 以上)
- Firebase CLI がインストールされていること
- Google Cloud Platform(GCP) プロジェクトが設定されていること
ステップ 0: Firebaseプロジェクトの作成
1. Firebaseプロジェクトのセットアップ
-
Firebaseコンソールにアクセス:
- Firebaseコンソールにアクセスして、新しいプロジェクトを作成します。
- プロジェクト名を入力し、その他の設定(Googleアナリティクスの設定など)を完了します。
- **Blazeプランにアップグレード
支払方法の設定を行います。念の為予算額の上限を設定しておくと安心です。
ステップ 1: Firebase CLI のインストール
まだインストールしていない場合は、Firebase CLI をグローバルにインストールします。
npm install -g firebase-tools
ステップ 2: Firebase にログイン
Firebase CLI を使用して Firebase にログインします。
firebase login
ブラウザが開き、Google アカウントでログインするように求められます。
ステップ 3: Next.js プロジェクトの作成
Next.js プロジェクトをまだ作成していない場合は、以下のコマンドで新規作成します。
npx create-next-app@latest my-next-firebase-app
cd my-next-firebase-app
既にプロジェクトは存在している場合は、飛ばしても構いません。
ステップ 4: Firebase プロジェクトの初期化
プロジェクトのルートディレクトリで Firebase プロジェクトを初期化します。
firebase init
初期化プロセスの選択
-
選択する機能の選択:
- Hosting を選択します。
- Functions も選択します(SSR を実現するために必要)。
- スペースキーを押して選択し、Enter キーで進めます。
この2つが必要になります。
-
プロジェクトの選択:
- 既存の Firebase プロジェクトを選択するか、新しく作成します。
-
Functions の設定:
- JavaScript または TypeScript を選択します(ここでは JavaScript を例にします)。
- ESLint の設定や依存関係のインストールはプロジェクトに応じて選択してください。
ステップ 5: 必要なパッケージのインストール
Next.js と Firebase フレームワークアウェアネスのために必要なパッケージをインストールします。
npm install --save-dev firebase-tools firebase-frameworks
ステップ 6: フレームワークアウェアネスの有効化
Firebase CLI のフレームワークアウェアネス機能を有効にします。
firebase experiments:enable webframeworks
これにより、フレームワークアウェアネスのプレビュー機能が有効化されます。
next.config.js
の設定
ステップ 7: プロジェクトのルートに next.config.js
を作成または編集し、Firebase フレームワークアウェアネスがフレームワークを検知できるようにします。
/** @type {import('next').NextConfig} */
const nextConfig = {
reactStrictMode: true,
}
module.exports = nextConfig
ステップ 8: Firebase Frameworks のビルド
Firebase Frameworks を使用してプロジェクトをビルドします。以下のコマンドを実行すると、firebase-frameworks
がプロジェクト構造を解析し、必要な設定を行います。
npx firebase emulators:exec "exit 0"
このコマンドはビルドフックを実行し、.firebase/
ディレクトリにビルド成果物を出力します。
ステップ 9: ローカルでの動作確認
ローカル環境でアプリケーションを起動し、正しく動作することを確認します。
npx firebase serve
出力例:
i hosting[my-next-firebase-app]: Serving hosting files from: .firebase/my-next-firebase-app/hosting
✔ hosting[my-next-firebase-app]: Local server: http://localhost:5000
✔ functions: Loaded functions definitions from source: functions.
✔ functions[us-central1-mynextfirebaseapp]: http function initialized (http://localhost:5001/myproject/us-central1/mynextfirebaseapp).
ブラウザで http://localhost:5000
にアクセスして、アプリケーションが正しく表示されることを確認します。
ステップ 10: デプロイ
ローカルでの動作確認が完了したら、Firebase にデプロイします。
npx firebase deploy
デプロイが成功すると、ホスティング URL が表示されます。
ビルドのキャッシュを消す
rm -rf .next
参考
Discussion