
予約システムの確定機能を作ったあと、公開前に別々の観点でレビューを3つ並行して頼んだら、テストでは見つからなかった穴が出てきた話。何を直して何を残すか、判断した記録。
2026-10-05

今日、予約システムに「確定ボタン」を作った。お客さんが仮の予約日を3つ送ってくれて、その中から1つを選んで確定すると、残りの候補日は自動でカレンダーから消える。それだけの機能だ。
AIと一緒に作って、テストも通った。送信して、メールが届いて、確定を押して、カレンダーが変わる。ここまでは問題なかった。ただ、公開する前に、別の観点から3つレビューを並行して頼んでみた。コード全体、データの型、セキュリティ。それぞれ別の目で見てもらうつもりだった。
返ってきた指摘で一番ひやっとしたのは、確定したあとの動きだった。確定したあとに、古い画面から「どれも合わない」を押すと、確定したはずの予定そのものが消えてしまう。しかも、画面を2回押しただけでも起こりうる。
僕が試していたのは「正しい順番で押す」ことだけだった。確定を押す。終わり。そのあとに、もう一度別のボタンを押す人がいる、という発想が抜けていた。
もう1つ、実際のブラウザだと送信が必ず拒否される、という指摘もあった。セキュリティのために設定した項目が、ブラウザの仕様と組み合わさると、正規の操作まで止めてしまう。テストでは出なかった。実機のブラウザで通してみて、初めて「たしかに動く」と確認できた。
全部の指摘を直したわけではない。たとえば、確定する日に別の予約が入っていないかの再チェックは、今回は入れなかった。確定する人が目で見て決める前提の機能だし、作り込むほど複雑になるからだ。何を直して、何を今回は残すか。そこを決めるのは、結局こちら側の仕事だと思う。
自分で作ったものは、どうしても「正しく使われる」前提で確認してしまう。だから、作った本人とは別の目に「間違った順番で触ったらどうなる?」と聞くのが効く、というのが今日の学びだった。
冒頭の写真は、壁のスイッチを1つだけ逆に倒したものにした。確定したあとに、別のボタンを押す人がいる。そのイメージだ。