納期遅延中のエステ予約システム案件を短期対応で構築(7日間)
概要
納期が迫る中、進捗が滞っていたエステサロン向け予約システム開発プロジェクトにサポートエンジニアとして参加しました。プロジェクトの中盤から参画し、フロントエンドおよびバックエンドの主要機能を約7日間で実装。短納期かつ品質を維持する形でプロジェクトをリカバリした実績です。
参画背景
- クライアント:個人サロン運営者
- 課題:開発初期メンバーのスケジュール遅延により、納期までに完成が見込めない状態
- 対応:進行状況を確認したうえで、実装済みコードの整理、仕様再確認、実装方針の明確化を行い、自身が主担当として開発を巻き取り
- 特徴的な内容:一般的な公開ではなく、エステサロン会員のみがアクセスする非公開エステ予約サイト
- 体制:2名
使用技術
- 言語・環境:Java(Servlet / JSP)、HTML / CSS、JavaScript(Bootstrap5)
- データベース:MySQL
- ツール:Eclipse、GitHub、Tomcat、Chrome DevTools
- フレームワーク/ライブラリ:JSTL未使用(標準Java構文で条件分岐・ループ処理)
- Ajax:未使用(画面遷移はすべて同期通信、モーダルはHTML取得型)
実装機能
◉ フロントエンド(ユーザー向け)
- 月間カレンダーUIからの予約選択(○△×表示)
- モーダル表示による予約フォーム・詳細画面
- バリデーション機能(validationEngine)
- 予約済み時間帯のリスト表示(モーダル遷移)
◉ バックエンド(管理者・予約処理)
- ロール(ROLE)による画面分岐と権限制御
- 予約検索(キーワード / 日付)機能
- CSV出力、削除、更新処理
- ユーザー管理(新規登録、編集、削除)
- ログイン認証(ID/PW照合、セッションによる権限保持)
各画面と役割
◆ Login.jsp(ログイン画面)

- ユーザーIDとパスワードを入力しログイン
- ロール(管理者/一般ユーザー)により画面遷移先を制御
- 認証失敗時はエラーメッセージ表示
- セッションでユーザー情報を保持
◆ Calendar.jsp(予約カレンダー)

- 月間カレンダー表示(曜日・日付・記号○△×)
- 「予約可否」記号は件数により動的に切り替え(Map)
- モーダルで予約登録・詳細を表示(JavaScript + Bootstrap)
- 当日以降、かつ定休日(水曜)以外に予約可
- サイドバーには自身の予約リストを表示(Map>)
- 満席(×)の日にはモーダルを開けないよう制御済み
◆ RsvList.jsp(予約一覧)

- 管理者専用画面
- キーワード検索(施術名・顧客名など)対応
- 削除/CSV出力機能あり
- 一覧は登録順に表示され、登録日・施術時間等も表示
◆ RsvFormModalBody.jsp(予約フォーム)

- カレンダーからのリンクでモーダル表示
- 日付は予約対象日として受け渡し、固定表示
- 時間帯ボタンは選択制、満席時は非活性
- サービスタイプ(ボディ/フェイシャル)選択も可
- バリデーションエンジンで必須チェック
◆ RsvDetailModalBody.jsp(予約詳細)
- カレンダーから予約済み時間帯をクリックしてモーダル表示
- ユーザー名・電話・メール・住所・登録日時などを表示
- ユーザー/管理者ともに削除ボタンを表示(ロールによる文言変更)
◆ RsvListCon.java(予約一覧コントローラ)
- GET:初期表示・本日予約表示に対応
- POST:検索・削除・CSV出力・編集・更新処理などを一括管理
- パラメータによって内部処理を分岐し、再利用性を高めた設計
◆ CalendarCon.java(カレンダー画面制御)
- 月の前後移動に対応(year / month をパラメータで制御)
- ユーザーの今後の予約(Map>)を取得しサイドバー・カレンダー表示に反映
- 予約件数はMap構造で取得し、日ごとの記号表示に活用
◆ RsvInformationCon.java(予約詳細表示)
- reservationIdがある場合はID優先、なければ日付+時間で検索
- 対応するEstheticBeanを取得してJSPにフォワード
- モーダル表示でも再利用できるようGET/POSTどちらでも対応
◆ EstRsvDao.java(DAOクラス)
- DBとのやりとりを担当(下記例)
- 予約取得:findReservationById / findReservationByDateTime(ユーザーIDあり/なし)
- 予約登録:insertReservation(時間帯重複チェックも可能)
- 集計:getDailyReservationCount / getReservationCountByDate
- 今後の予約一覧取得:getAllFutureReservations
苦労した点と工夫
- JSTL未使用だったため、全てJavaスクリプトレットで条件処理・ループ制御を実装
- セッション制御によるログイン管理や、ロール分岐の正確な表示調整
- カレンダー内での「○△×」記号ロジック、予約済み時間帯リストの正確な抽出(Map構造を活用)
実装期間と成果
- 作業期間:約7日間
- 実装ファイル数:20以上(JSP / Servlet / DAO / JavaBean)
- 不具合修正:複数のバリデーションエラーや重複登録問題を解消
結果
- 「短期間でここまで仕上げてもらえるとは思わなかった」と高評価
- 実務形式での実装・管理経験を得た貴重なプロジェクトとなり、ポートフォリオ案件として就職活動で活用予定
補足
- GitHub:現在非公開(※必要に応じて個別提出)
- デモ画面キャプチャ:面談等で提示可能

2009年那覇でホームレスになるも沖縄の方々に助けられ、2010年からNPOで地域密着で困窮支援。2016-2024年まで株式会社FM那覇代表取締役。沖縄の支援団体情報ポータルサイト「カケハシオキナワ」設立運営。防災士。コンサル・エンジニア。


