ビジター(非会員)予約の開発の裏側

published
published
author
authorDisplayName
Semba Taku
category
backend
mainImage
20251028_semba_KV.png
publishedAt
Oct 28, 2025
slug
visitor-booking-development
tags
backend
notion image

はじめに

こんにちは!令和トラベルでBackendエンジニアをしている仙波です。
 
私たちの開発している旅行アプリ『NEWT(ニュート)』では、2025年8月19日にビジター(非会員)予約機能をリリースし、さらに9月9日には決済方法として、銀行振込とプライスキープでもビジター予約ができるようになりました。
リリースから数ヶ月が経ち、多くのカスタマーに利用されるようになった今、改めて実装の裏側をお話ししたいと思います。
 

ビジター予約

NEWTでは、これまで海外ツアーを予約するには会員登録が必須でした。
 
カスタマーのツアー予約は以下のような流れ行われます。
💡
  1. 行きたい旅行を検索
  1. ツアー詳細ページで旅行内容を確認
  1. 非会員の場合は会員登録ページへ遷移
  1. 予約情報入力ページで、旅行に必要な情報(e.g, 旅行者情報、決済情報, etc)を入力
  1. 予約完了
 
様々なツアーの検索・閲覧を会員登録なしでできるものの、いざ予約しようと思うと、以前は会員登録が必要になり、ここで一定数の離脱が発生していることがカスタマーの行動分析から明らかになっていました。
せっかく魅力的な旅行を見つけたのにも関わらず、会員登録が離脱の要因になっていたため、この心理的なハードルを解消し、より多くのカスタマーにスムーズに旅行を予約していただくために、会員登録なしで予約できる「ビジター予約」の開発に着手することになりました。
 
一方で、会員登録なしでサービスを提供することは、いくつかの技術的なハードルがありました。
特に、会員登録なしでサービスを利用するにあたって、どうすれば非会員でも安全かつUI/UXを損なわずに予約機能を提供できるか、を考える必要がありました。
 
 
今回は、そのような技術課題に対して、私たちがどのように向き合って、どのように解決したのかについて紹介しようと思います。
 
notion image
 

ビジターのアクセス制御

ビジター予約を実装する上で重要だったのが、会員システムに依存しないあたらしい認証・認可の仕組みづくりでした。
 
まず私たちは、ビジターがツアーを見つけ、予約をしてから旅行を完了するまでの流れを大きく「予約前」と「予約後」の二つに分けて考えることにしました。
たとえば、予約前では旅行者情報の入力やツアーの支払い・予約を行う必要があります。一方で、予約後は本人の予約のみに対して、予約の閲覧や旅行者情報の変更を行う必要があるのです。
 
ビジター予約ではこれらの予約前と予約後の非会員を明確に区別し、それぞれに対して必要なAPI群にのみアクセスできるような設計を行いました。
これにより、予約前のビジターと予約後のビジターで、アクセス可能なAPIを厳密に分離することができました。アクセス権限を厳密に分離することで、たとえば、予約前のビジターが予約詳細にアクセスすることはできず、予約後のビジターが新規予約をすることもできない設計になっています。
操作を限定することで、意図しない操作やAPIの悪用を防止するようにしました。
 
notion image
 

認証コードの発行

予約を完了したビジター(予約後のビジター)は予約詳細などにアクセスすることができます。しかし、ビジターは会員情報がないため、どのようにカスタマーを特定するかを考える必要がありました。予約後は個人情報を含む旅行情報にアクセスできるため、慎重にカスタマーを認証する必要があります。
 
仕様検討の段階では、以下のいくつかの案がありました。
💡
  1. 予約詳細閲覧時に、予約番号と予約者のメールアドレスを入力して認証する。
  1. 予約詳細閲覧時に、毎回あたらしくワンタイムコード or ワンタイムリンク生成し、メールで送信する。
  1. 予約完了時に一度だけ発行される認証コードをメールで送信し、予約詳細閲覧時に予約番号と認証コードを入力する。
 
a 案は入力する二つの情報がオープンな情報であるため第三者が知り得る可能性がありました。一方で、 b 案は最も安全性が担保できる一方でステップ数が増えるためUI/UXを損なってしまう懸念がありました。検討した結果、最終的に利便性と安全性を担保するため c 案で実装することになりました。
 
notion image
 
この認証コードは、予約者本人のみが知り得る情報として管理しています。実装面では、認証コード自体はハッシュ化した状態で保存されており、ログを含めてシステムのどこにも平文として記録されないようにしています。
さらに、セキュリティをより強固にするために、一度認証した後も、一定時間経過すると認証の有効期限が切れるため、再度認証コードを入力して認証する必要があります。
これにより、認証されたセッションが長時間保持されることによる不正なアクセスリスクを低減しています。また、間違えたコード入力を複数回試行された場合、その予約に対するアクセスが一時的にロックされる仕様になっており、ブルートフォース攻撃を防いでいます。
これらの多層的な対策により、第三者による不正なアクセスを極限まで防ぎながら、カスタマーは簡単に予約情報にアクセスできる体験を実現しました。
 

結果どうだったか

リリース後はRedashでビジター予約のためのダッシュボードを作成し、機能による影響をチームで継続的にモニタリングしました。主に以下の指標に対してモニタリングを行いました。
 
💡
  • ビジター予約 / 会員予約における予約数の推移:
    • 両者の予約数トレンドを追跡し、ビジター予約導入後の全体への影響を把握
  • 会員登録数のトレンド:
    • 会員登録による離脱傾向に変化がないか、継続的に確認
  • ツアー詳細から予約までのファネル分析:
    • 会員とビジター、各セグメントにおけるコンバージョンの数値を比較分析
 
分析の結果、特に既存の会員予約数や会員登録数に対してネガティブな影響はありませんでした。同時に、ビジター予約の利用も好調であり、既存ユーザーの体験を損なわないかたちで、新たな顧客セグメントへのアプローチに成功することができました。
これにより、ビジター予約の導入が、会員登録による離脱を防ぎながらも、サービス全体の利用者拡大に貢献することができました。

おわりに

ビジター機能のリリースにより、より多くの方々にNEWTを利用してもらえることができました。今後も様々な機能を提供し、より快適な旅行体験を提供していきたいと考えています。
 
 

📣 12月のイベント開催のお知らせ

令和トラベルでは、毎月技術的な知識や知見・成果を共有するLT会を毎月実施しています。発表テーマや令和トラベルに興味をお持ちいただいた方は、誰でも気軽に参加いただけます。

【12/4開催!】2025年総決算!エンジニアリングマネージャーお悩み相談室 LIVE

2025年最後のイベントとなる「NEWT Tech Talk Vol.19」は エンジニアリングマネージャーお悩み相談室 を開催いたします!当日は、株式会社カケハシ・株式会社スマートバンク・株式会社LayerXを交えパネルディスカッションを開催。
2025年7月7日に発売された書籍『エンジニアリングマネージャーお悩み相談室』の著者と、書籍レビューに参加したEM実践者たちが集い、EMたちのさまざまな課題や悩み、またそれに対する解やアプローチについてここ限りのオフレコトークを語り合います!
 
そのほか、毎月開催している技術発信イベントについては、connpass にてメンバー登録して最新情報をお見逃しなく!
 

令和トラベルでは一緒に働く仲間を募集しています

この記事を読んで会社やプロダクトについて興味を持ってくれた方は、ぜひご連絡お待ちしています!お気軽にお問い合わせください!
フランクに話だけでも聞きたいという方は、カジュアル面談も実施できますので、お気軽にお声がけください。
それでは次回のブログもお楽しみに!Have a nice trip ✈️

# backend