概要

Next.jsを使った予約システムの開発は、サーバーサイドとクライアントサイドを効率よく組み合わせることで、柔軟かつパフォーマンスに優れたアプリケーションを構築できます。今回は、PrismaやFirebaseを活用し、ユーザー認証や予約管理、通知機能を含むシステムの実装方法を解説します。

予約システムに必要な機能

  1. ユーザー認証
    予約システムにおけるユーザー認証は必須です。ユーザーが予約を管理できるようにするため、NextAuth.jsを使って、LINEログインやGoogleログインなどのOAuthプロバイダを簡単に実装できます。
  2. 予約カレンダーと日時選択
    カレンダーを用いて予約日時を選択する機能は、ユーザーフレンドリーなUIを提供する上で重要です。Reactカレンダーコンポーネントを使い、日時選択とそのデータを管理する仕組みを実装します。
  3. 予約管理とデータベース操作
    Prismaを使用して、予約情報をデータベースに保存し、予約の追加やキャンセルの操作を行います。APIルートを使って、予約の作成、削除、更新などを行うRESTful APIを提供します。
  4. リアルタイム更新と通知
    予約内容が更新されたときにリアルタイムでユーザーに通知する機能を、FirebaseやSupabaseを使用して実装できます。これにより、ユーザーに予約内容やリマインダーをLINEで通知することができます。
  5. リマインダー機能
    予約日時の前日にリマインダー通知を自動的に送信する機能を追加し、予約忘れを防止します。Firebase Cloud Functionsを使用して、LINE APIと連携し、指定した日時に自動通知を送ることが可能です。

実装の流れ

プロジェクトセットアップ

npx create-next-app reservation-system
cd reservation-system
npm install @prisma/client firebase

Prismaで予約データベースを管理

Prismaを使って、予約データを管理するためのモデルを作成します。

model Reservation {
  id        Int      @id @default(autoincrement())
  name      String
  date      DateTime
  createdAt DateTime @default(now())
}

Firebaseによる通知機能

Firebaseのリアルタイムデータベースを使って予約情報を保存し、予約の変更やキャンセルがあった際にCloud Functionsで通知を行います。LINE APIと連携して、リッチメッセージやリマインダーを送信します。

const docRef = await addDoc(collection(db, "appointments"), {
  name: userName,
  date: appointmentDate,
  timestamp: serverTimestamp()
});

まとめ

Next.jsとPrisma、Firebaseを組み合わせることで、効率的かつスケーラブルな予約システムを簡単に構築できます。ユーザー認証やリアルタイムの通知機能も、これらのツールを活用すれば柔軟に実装可能です。予約システムのようなビジネスクリティカルなアプリケーションでは、これらの機能を組み合わせることで、ユーザーエクスペリエンスを向上させることができます。