しずかなインターネット

日記やエッセイにちょうどいい
文章書き散らしサービス

ログイン

大阪・関西万博の予約システムに関する考察

hayatosc
·
公開:2025/9/7

みんな大好き?予約システム

実際の評判はめっちゃ悪いし、俺もクソだなとは思う

  • 万博のチケット予約サイトはNext.jsで作られている

    • ただし、HTMLだけ読んでもbodyタグ内に何も埋め込まれていないことやAWSのS3+CloudFrontから配信されていることを踏まえると完全なるSPAとして構築されているように見える

    • 余談だが、万博の公式サイト自体はNuxt+WordPressの構成っぽい

  • ということは、バックエンド側のAPIをクライアント側がコールしているということになる

    • 実際にサイトを確認すると、ticket.expo2025.or.jp/api以下を何度も叩いていることが分かる

    • APIのエンドポイントの位置をユーザー側が把握できるので、理論上正しいセッションを渡すことができればブラウザを開かずともパビリオンを確保することは可能?

      • なおBANされる模様

      • 賢い大人は分かっててもやらないよね

  • API側の負荷軽減やデータベースのトランザクション確保のため、チケット予約サイトにはqueue-itによる仮想待合室が利用されている

    • 最初の頃は1段階だけだったが、これでは予約部分の過多がちゃんと守られないことが発覚したため(要出典)、「サイトのログイン時」と「予約検索用のAPIを呼び出すとき」の2段階で待合を作っているっぽい

      • いくらなんでもゴリ押しすぎでは・・・?UX死んでますよ

      • 9/16追記: 待合室は「サイト予約時」「予約検索API呼び出し時」「来場予約時」で確定。それぞれの待機列は同時に並ぶことが可能。

      • 予約待ち中でもタイムアウトするのでこまめなリロード必須。最悪の場合、予約待合室通過したのにログイン待ちに引っかかって時間を無駄にする。

    • この仮想待合室、どうやらURLだけで判定しているらしく(万博のシステム設計者がそうしたのか、それともqueue-it側の制限なのかは知らない)、実際にはそのURLの中身にアクセスできない状態であったとしてもURLを叩いて待合に並ぶことは可能らしい

  • CSSとJSはクライアント側の描画の問題でしかないので、当然スキップする便利ツールみたいなのが出回っている

まぁSPAにしてユーザーが大量にAPI叩けるようにしたのはまずそう。自分だったらAPIのエンドポイントは露出させないように色々組むかなぁ。

とはいえ毎時MAX20万のユーザーが常時アクセスして予約を奪い合うサービスなんか人類史上あまり類がないと思うし、大変そうだなぁって。自分はやりたくない。