はじめに

DX開発事業部の北村です。

参画した案件でFirebaseを使用する機会があったので、Firebase × Next.jsの初期セットアップ方法をまとめたいと思います!

この記事1本で初期セットアップが完結する内容となっています!

Firebaseとは?

初めに、Firebaseの簡単な紹介です。

Firebaseとは、Googleが提供するMBaaS(Mobile Backend as a Service)/BaaS(Backend as a Service)に位置付けられるサービスです。モバイル・Webアプリケーションのバックエンドの機能を、クラウドサービスとして提供します。Firebaseを活用することで、バックエンドの処理を簡単に実装できるため、バックエンド開発の時間、運用の手間の省略、コスト節約につながるサービスです。

今回は、Firebaseの数多くあるサービスの中でも以下のサービスの初期セットアップの方法を紹介していきます!

Firebase Hosting

静的なWebページやWebアプリを、簡単な操作でスピーディーにデプロイできるサービスで、グローバル向けのCDNとして配信できます。高速な通信速度と安全性の高いホスティングサービスです。

Firebase Authentication

セキュリティに優れた安全な認証機能を簡単に実装できるサービスです。

メールとパスワードに基づく認証、SNSでの認証(Google、Microsoft、Facebook、X(旧Twitter)、GitHubなど)、電話番号認証、カスタム認証システムとの統合、匿名認証など、他にも多数の認証方法を使用することができます。

Cloud Firestore

ドキュメント型NoSQLのクラウドデータベースサービスです。フルマネージドサービスのため、データベース管理が不要です。セキュリティルールによるアクセス制御で、安全にデータ管理を行うことができます。

Firebaseプロジェクトの作成

セットアップ開始です!

Firebase Consoleにて、「プロジェクトを作成」を押下します。

任意のプロジェクト名を入力し、必要に応じて親リソースを選択し「続行」ボタンを押下します。

必要に応じてGoogleアナリティクスを有効にし、「続行」ボタンを押下します。

「続行」ボタンを押下します。

下記の画面に遷移すれば、プロジェクト作成は完了です!

Firebaseプロジェクトにアプリを追加

上記で作成したFirebaseプロジェクトにアプリを追加していきます。

Next.jsとFirebaseを連携するために必要となります。

「Webアプリを追加」ボタンを押下します。

任意のアプリ名を入力し、「アプリを登録」ボタンを押下します。

下記の画面に遷移し、アプリの設定情報が表示されているか確認します。

この情報は、Next.jsとの連携の際に必要になるので、コピーして保存しておきます。

「コンソールに進む」ボタンを押下します。

下記の画面に遷移したら、Firebaseプロジェクトへのアプリの追加は完了です!

Firebaseプロジェクトに追加したアプリは、下記の画面でも確認ができます。

「プロジェクトの設定」を押下します。

アプリの設定情報が確認できます。

Firebase Authenticationの設定

認証機能で使用するFirebase Authenticationの設定を行います。

コンソールのホームに戻り、「Authentication」ボタンを押下します。

「始める」ボタンを押下します。

使用したい認証方法を選択します。(今回は、Microsoft認証を選択)

Microsoft側(Azure)で登録したアプリのアプリケーションID、アプリケーションシークレットを入力し、「有効にする」を選択後「保存」ボタンを押下します。

下記の画像のようになっていれば、Firebase Authenticationの設定は完了です!

Cloud Firestoreの設定

データベースとして使用するCloud Firestoreの設定を行います。

コンソールのホームに戻り、「Cloud Firestore」ボタンを押下します。

「データベースを作成」ボタンを押下します。

ロケーションを「asia-northeast1(Tokyo)」に設定し、「次へ」ボタンを押下します。

任意のモードを選択し、「作成」ボタンを押下します。(今回は、「本番環境モード」を選択)

「本番環境モード」と「テストモード」の違いは、セキュリティルール(データベースへのアクセス制御)の初期状態の違いになります。

「本番環境モード」は、初期状態で全アクセス禁止、「テストモード」は、初期状態で全アクセス許可(30日限定)で設定されています。

「テストモード」は、30日経過すると自動的に「本番環境モード」に移行します。

データベースの作成が完了すると、下記の画面に遷移します。

「ルール」タブを押下し、任意のセキュリティルールを設定します。(「本番環境モード」のみ)

全アクセスを許可する場合は、以下のセキュリティルールを設定します。

allow read, write: if true;

以上で、Cloud Firestoreの設定は完了です!

FirebaseとNext.jsを連携

任意のNext.jsプロジェクトにて下記のコマンドを実行し、Firebase Javascript SDKを導入します。

npm install firebase

任意のディレクトリに「.env」ファイルを作成し、「Firebaseプロジェクトにアプリを追加」の章で確認したアプリの設定情報を記載します。

.env

// 「sample」部分に設定値を入力
NEXT_PUBLIC_FIREBASE_API_KEY="sample"
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN="sample"
NEXT_PUBLIC_FIREBASE_PROJECT_ID="sample"
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET="sample"
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID="sample"
NEXT_PUBLIC_FIREBASE_APP_ID="sample"

任意のディレクトリに「firebase.ts」ファイルを作成し、アプリの設定情報を記載します。

その際、それぞれの設定値は、「.env」ファイルから読み込むようにします。

src/firebase/firebase.ts

// Import the functions you need from the SDKs you need
import { getApp, getApps, initializeApp } from "firebase/app";
import { getAuth } from "firebase/auth";
import { getFirestore } from "firebase/firestore";
// https://firebase.google.com/docs/web/setup#available-libraries

// 設定値は、「.env」ファイルから読み込み
const firebaseConfig = {
  apiKey: process.env.NEXT_PUBLIC_FIREBASE_API_KEY,
  authDomain: process.env.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN,
  projectId: process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID,
  storageBucket: process.env.NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET,
  messagingSenderId: process.env.NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID,
  appId: process.env.NEXT_PUBLIC_FIREBASE_APP_ID,
};

// アプリを初期化
const app = initializeApp(firebaseConfig);
export const initializeFirebaseApp = () =>
  !getApps().length ? initializeApp(firebaseConfig) : getApp();
// Firebase Authenticationを初期化
export const auth = getAuth(app);
// Cloud Firestoreを初期化
export const db = getFirestore(app);

任意のページでFirebaseと連携できているか確認します。

src/app/page.tsx

import { initializeFirebaseApp } from "@/firebase/firebase";
import { getApps } from "firebase/app";

// Firebaseを初期化
initializeFirebaseApp()

export default function Home() {
  // Firebaseのアプリ情報をコンソールに出力
  console.log(getApps());
  return (
    <div>Hellow World</div>
  );
}

ターミナルにFirebaseのアプリ情報が出力されていたら連携完了です!

Firebase Hostingの設定・デプロイ

最後に、Firebase Hostingの設定を行い、アプリをデプロイします。

下記のコマンドを実行し、Firebase CLIをインストールします。

npm install -g firebase-tools

下記コマンドを実行し、Googleにログインします。

firebase login

下記のコマンドを実行し、Firebaseプロジェクトを初期化します。

firebase init

Hostingを選択します。

「Use an existing project」で既存プロジェクトを選択します。

その後の対話は、任意の選択肢を選択します。

下記が出力がされ、「firebase.json」ファイルが作成されていれば、Firebaseプロジェクトの初期化は完了です!

最後に、下記コマンドを実行し、デプロイします。

firebase deploy

Firebaseコンソールに戻り、「Hosting」ボタンを押下します。

「始める」ボタンを押下します。

「次へ」ボタンを押下していき、「コンソールに進む」ボタンを押下します。

下記の画像のように、デプロイが確認できたらFirebase Hostingの設定・デプロイは完了です!

以上で、Firebase × Next.jsの初期セットアップは全て完了です!

まとめ

今回は、Firebase × Next.jsの初期セットアップの手順を紹介しました。この記事が初期セットアップの参考になれば幸いです!

また、Firebaseには今回紹介できなかったサービスがまだまだ多くあります。この記事でFirebase活用の一歩を踏み出していただき、その他のサービスもぜひ活用してみてください!