車両レンタル予約システムを開発しました

記事
IT・テクノロジー
この度、レンタカー店舗向けの車両予約管理システムをフルスタックで開発しましたので、開発記録として残します。

FireShot Capture 014 - Car Reservation - [car-reservation.tanaka-system.app].png


概要 お客様からの車両予約受付から、管理者による予約管理・車両情報管理まで一貫して行えるWebアプリケーションです。

FireShot Capture 015 - Car Reservation - [car-reservation.tanaka-system.app].png


実際の店舗運用を想定し、管理機能や在庫管理まで含めた本格的なシステムを目指しました。

使用技術 バックエンドはGo 1.23とGinフレームワークを採用しました。軽量で高速な動作が必要な予約システムに適していると判断しました。
データベースはTurso(SQLite)を使用し、クラウドネイティブな構成としています。

フロントエンドはReact 19とTypeScript、Vite、TailwindCSS v4の組み合わせです。型安全性を重視し、メンテナンス性の高いコードベースを目指しました。

インフラはDocker Composeで構成し、Nginxをリバースプロキシとして配置。

本番環境も含めて完全なコンテナ化を実現しています。
実装機能 ユーザー向け機能として、車両一覧表示、詳細確認、日付指定による空き状況確認、予約フォーム(顧客情報入力・期間指定・自動料金計算)を実装しました。

管理者向け機能として、JWTトークンによる認証機能、ダッシュボードでの予約一覧管理、予約ステータス管理(確認中・確定・キャンセル)、車両情報のCRUD操作(画像アップロード含む)を実装しました。

FireShot Capture 016 - Car Reservation - [car-reservation.tanaka-system.app].png


技術的なポイント SPAによる快適なユーザー体験を重視し、ページ遷移なく予約フローを完結できるようにしました。また、レスポンシブデザインを徹底し、スマートフォンからの予約も想定したUI設計としています。

認証にはJWTを採用し、ステートレスなセッション管理を実現。管理者権限によるアクセス制御も適切に実装しました。

データベース設計では、予約情報と車両在庫の整合性を保つためのテーブル設計に注力。同じ車両の重複予約を防ぐ仕組みを実装しています。

開発期間と振り返り 設計から実装、デプロイまで2週間程度で完了しました。GoとReactの組み合わせは初めてでしたが、型の厳密さが逆に開発を加速させてくれました。

特に工夫した点はDockerによる本番環境構築です。開発環境と本番環境の差異を最小限に抑え、スムーズなデプロイを実現しました。

今後の改善点 現在はデモ用のデータ表示に留まっているため、実際の決済処理(Stripe等)の連携、メール送信機能の実装、さらに詳細なレポート機能の追加を検討しています。

また、管理者画面のUX改善や、車両検索機能の強化も今後の課題です。

まとめ 
実運用を意識したシステム開発を通じて、フロントエンドからバックエンド、インフラまで一貫した設計・実装力を身につけることができました。特にDockerを用いた環境構築と、GoによるAPI設計は大きな学びとなりました。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す ココナラコンテンツマーケット ノウハウ記事・テンプレート・デザイン素材はこちら