タイマー管理システムをFirebaseとNext.jsで構築してみた

IT全般
スポンサーリンク

こんにちは!スタッフのやまさきです。

今回は久しぶりにコードを触ってWebアプリを作成しました。
めっちゃ楽しかったです!
知識ゼロから作成して、4時間ほどかかりましたー

デジタルスタジオでは、これまでキッチンタイマーを使ってPCやゲーム機の利用時間を管理していましたが、運用上いくつかの課題がありました。

本記事では、その課題解決のために開発した「タイマー管理Webアプリ」について、設計からデプロイまでの流れをまとめます。

プロジェクトの背景

スタジオ内では複数のPC・Xboxを時間制で利用していますが、従来のキッチンタイマー運用には以下の問題がありました。

  • 利用者がタイマーを誤って停止してしまう
  • スタッフが利用者の近くに行かないと残り時間が把握できない
  • 複数端末の同時管理が困難

これらを解決するため、Webアプリによる一元管理システムの開発を行うことにしました。

今回のシステムの目的

  • PC / Xboxの利用時間をリアルタイムで管理
  • 大型モニタに残り時間を表示
  • 管理画面と表示画面を分離
  • Firestoreによるリアルタイム同期
  • 現場でそのまま使える運用レベルの実現

技術スタック

  • Next.js(フロントエンド)
  • Firebase Hosting(公開環境)
  • Firestore(リアルタイムデータベース)
  • React(UI構築)

特にFirebaseを採用した理由は、サーバー管理不要でリアルタイム同期が実現できる点です。

Firebaseプロジェクトの初体験

今回初めてFirebaseプロジェクトを本格的に利用しました。
Firestoreを使うことで、サーバーを構築せずにデータ同期ができる点は非常に強力でした。

devicesコレクションに各機器の状態(開始時間・終了時間・ステータス)を保存し、リアルタイムで更新される仕組みを構築しました。

アプリ構成

管理画面(admin)

  • 利用開始
  • 延長
  • 一時停止
  • 再開
  • 終了処理

表示画面(display)

  • 残り時間の表示
  • 状態の色分け表示
  • 終了時のアラート表示

■ ローカル開発とテスト

まずはローカル環境でNext.jsとFirestoreを接続し、UIの動作確認を行いました。

この段階で、リアルタイム更新やタイマー表示の基本動作を検証しました。

Firebase Hostingへのデプロイ

本番環境はFirebase Hostingを利用しました。 静的ファイルとしてNext.jsをビルドし、outフォルダをそのままデプロイしています。

基本手順は以下の通りです。

  • Next.jsをbuild
  • next exportで静的化
  • Firebase Hostingへデプロイ

つまずいたポイント

開発中はいくつかの問題に直面しました。

  • Vercelの初期テンプレート画面が表示される
  • display画面が正しくルーティングされない
  • Firebase Hostingへの反映遅延
  • outフォルダの生成ミス

特に「どの環境を見ているのか分からなくなる」という問題は非常に重要な学びでした。

生成AIとの開発

今回の開発では、設計・実装・デバッグのほぼ全工程で生成AIを活用しました。

特に以下の用途で有効でした。

  • アーキテクチャ設計の相談
  • Firestore構造の設計
  • UI構成の改善
  • エラー原因の特定

AIは単なるコード生成ツールではなく、設計パートナーとして機能しました。

完成したシステム

  • admin画面:操作用UI
  • display画面:表示専用UI
  • Firestore:リアルタイム同期
  • タイマー制御(開始・延長・停止・再開)

現場でそのまま運用できるレベルまで完成しました。

得られた学び

  • Firebaseは構造設計が最重要
  • 静的ホスティングの理解が必要
  • 状態設計がUI品質を決める
  • 小さく作って検証する重要性
  • AIを使った開発は設計スピードを大きく向上させる

今後の改善

  • 利用履歴の保存
  • 音・通知の強化
  • UIの改善
  • 認証機能の追加

まとめ

今回のプロジェクトは、小さな現場課題から始まりましたが、結果としてFirebaseとNext.jsを活用した実用的なシステムに発展しました。

特に、生成AIと組み合わせた開発は、試行錯誤のスピードを大きく改善し、実装のハードルを下げる効果がありました。

今後も現場改善と連動したシステム開発を継続していきます。

Firebaseの使い方メモはこちらの投稿から

タイトルとURLをコピーしました