AIで美容室の予約サイトを作った。二重予約は防げるのか
AIで作った予約フォームに同じ時間の予約を2件送り、片方だけを受け付ける仕組みが動くか確かめました。
美容室の予約フォームは、見た目を作るだけならAIでかなり早くできます。ただし、入力できることと、予約を安全に管理できることは別です。
今回の問いは一つです。
別の画面から同じ日時・同じ担当へ予約が届いたとき、二重予約を防げるか。
架空の美容室「NICO HAIR」を作り、実際に予約データを保存する小さな仕組みまで用意しました。
先に結論
画面だけでは防げません。予約を共有する保存先と、「確認してから保存する」間を他の処理に割り込ませない仕組みが必要でした。
今回のデモでは、予約データのファイルをサーバー側でロックします。先に来た1件を保存し、その後に同じ枠へ来た予約には 409 Conflict を返します。
これは「レンタルサーバーなら何でも自動的に安全」という意味ではありません。サーバーを借りても、予約処理の設計が間違っていれば二重予約は起きます。
作ったもの
- 架空の美容室サイト
- メニュー・担当・日付・時間を選ぶ予約フォーム
- 予約済み枠を共有するサーバー側の保存処理
- 同じ担当・日付・時間の重複を止める排他処理
- テストデータを30分後に自動削除する処理
- CSRFトークンと入力値の検証
実在する店舗の予約ではないため、氏名・電話番号・メールアドレスは集めません。入力するのはニックネームだけです。
なぜ、画面だけでは足りないのか
ブラウザの入力チェックが知っているのは、その画面の中だけです。別のスマホや別タブで誰かが同じ枠を選んでいても分かりません。
危ないのは次の順番です。
- Aさんが「空き」を確認する
- Bさんも同じ枠を「空き」と確認する
- Aさんが保存する
- Bさんも保存する
確認と保存が別々なら、2人とも通ってしまいます。そこで今回は、予約データを読むところから保存するところまで、同じロックの中で実行しました。
検証方法
同じ担当・同じ日・同じ時間を指定した2件を、別々の画面から続けて送ります。
期待する結果は次の通りです。
| 送信 | 期待する応答 | 意味 |
|---|---|---|
| 1件目 | 201 Created | 予約を保存 |
| 2件目 | 409 Conflict | 同じ枠なので拒否 |
2026年9月5日、公開環境のXServerへ別セッションから同じ枠を2件同時送信しました。結果は片方が 201 Created、もう片方が 409 Conflict。保存された予約は1件だけでした。
なお、これは同じ担当・同じ日時という最小条件での確認です。負荷試験や長期間の運用検証まで終えたものではありません。
無料で済む範囲
デザインを作る、文章を整える、画面上だけで入力チェックをする。ここまでは、無料の静的ホスティングでもできます。
予約内容をメールや外部フォームへ送るだけなら、無料サービスを組み合わせる方法もあります。小さなお店で予約確定を人が行うなら、それで十分な場合もあります。
一方、複数の利用者が同じ予約状況を共有するなら、予約データをいつでも確認・更新できる仕組みがあると便利です。今回のデモでは、その仕組みをレンタルサーバー上で動かしました。無料サービスを組み合わせる方法も含め、必要な機能と管理のしやすさから選ぶのが妥当です。
今回あえて作らなかったもの
- 本物の顧客情報の保存
- 予約変更・キャンセル
- 店舗側の管理画面
- メールやLINEへの通知
- メニューの所要時間をまたぐ枠管理
- 複数店舗への対応
実店舗で使うには、これらに加えてバックアップ、アクセス権限、個人情報の保護、障害時の運用が必要です。このデモは予約システムの完成品ではなく、二重予約を防ぐ最小構成の検証です。
まとめ
AIは見た目の良い予約フォームを作れます。しかし、本当に価値が出るのは「送信ボタンの後」を作り、失敗条件まで検証したときでした。
今回役立ったのは、予約状況を利用者同士で共有し、同じ枠に2件入らない状態を保てることでした。サーバーはその便利さを実現する方法の一つであって、契約そのものが目的ではありません。
次は、予約変更やキャンセルなど、実店舗の運用に足りない機能を確認します。