GPシーダモにおける不具合調査報告
コメント
まだコメントはありません。
まだコメントはありません。
10月4日に開催したGPシーダモでは、開始前の着席から大会終了まで、複数の不具合により進行に大きな混乱が生じました。参加者・リザーバーの皆さんに、多くの待機や確認、移動、再入力をお願いすることになりました。ご迷惑をおかけしたことを、深くお詫びします。
この記事では、最初に調査結果の概略をお伝えし、そのあと、2026年10月4日朝の一次募集終了から翌5日未明の大会終了までに起きたことを、時系列に沿って詳しく報告します。
今回の原因調査を受けて、現在、必要な修正対応を進めています。修正が完了しましたら、対応した内容と確認結果を改めてお知らせします。
今回の大会では、一次選考の結果がデータベースに保存されていた一方で、本選出場者・リザーバーになったことを本人へ直接伝える通知を確認できませんでした。また、リザーバーマッチの選外者にも、選外となった結果や理由を個別に知らせる仕組みが不足していました。
開始直前には、別のリーグ戦の結果確定を待っている間、GPへ着席できない問題が発生しました。21時の開始時刻には準決勝とリザーバーマッチの卓生成が遅れ、その後は大会ページや卓を開けない、500・502・503などのエラーが表示される、主催タブが表示されないといった複数の問題が重なりました。
高負荷の調査では、リーグ全体の大きな順位資料が大会の進行状態へ重複して保存され、約172万バイトまで膨らんだ大会情報を、ページやチャットの更新確認で繰り返し読み込む構造になっていたことが分かっています。このほか、リザーバー卓のURL、チャット権限、結果登録通知、銅賞戦の参加希望、決勝の開始処理にも、それぞれ別の問題が見つかっています。
緊急対応として参加者の皆さんにDiscordへ移動していただき、大会は最後まで行われました。しかし、大会が終了したことによって、そこに至るまでの混乱や負担がなくなるわけではありません。現在も、確認できた事実と、残された記録だけでは確定できない部分を分けながら、個々の問題を調査しています。
この記事では、2026年10月4日朝の一次募集終了から、翌5日未明の大会終了までに起きたことを説明します。時刻はすべて日本時間です。
調査では、大会チャット、各卓のチャット、Discordの記録、データベース、サーバーログ、プログラムの処理を照合しています。参加者の発言から分かることと、システムの記録で確認できることは区別しています。原因調査が完了していない部分や、現在の資料からは確定できない部分については、その範囲を明記します。
今回確認された問題は、一つの障害だけで説明できるものではありません。選考結果の伝達、着席条件、卓生成、高負荷、URL、権限、通知、参加希望、開始処理など、別々の問題が連続して起きたことで、参加者が現在の状況や必要な操作を把握しにくくなりました。
10月4日04:00に一次募集が終了し、04:00:23に一次選考が適用されました。保存された選考記録では、候補17名のうち16名が本選出場者、1名がリザーバーになっています。
ここでは、「選考を行ったこと」と「その結果を本人へ知らせたこと」を分けて考える必要があります。データベースには選考結果が保存されていますが、一次選考終了時に、各申込者へ「あなたは本選に選出されました」「あなたはリザーバーです」と個別に伝える通知は、今回確認した記録と通知処理からは確認できませんでした。
これは、参加者が誰も選考結果を知らなかったという意味ではありません。本人が大会ページやルールを確認した可能性はあります。しかし、システムが本人へ直接結果を伝えたこと、その伝達によって本人が自分の状態を認識できたことは、選考結果が保存されているだけでは証明できません。
一次募集終了後には、追加のリザーバー申込がありました。当日の有効なリザーバー登録者は、次の6名です。
別に、きゅろぶさんの申込もありましたが、20:13に取り消されています。
選考の優先順は、一次募集内のリザーバーと、一次募集終了後の追加リザーバーで異なっていました。外鴨なきくさんは一次募集内の選考によるリザーバーで、追加申込者より先になります。追加申込者同士は申込順です。着席した順番が、そのままリザーバーマッチの選考順になる仕組みではありませんでした。
20:30から開始直前にかけて、後に発生したサーバー高負荷とは別に、他の対戦とGPの着席条件が重なる問題がありました。
セプコさんはGPの前に、リーグ4「シーダモの港」の卓342で対戦していました。この卓の結果が登録されたのは20:49:30です。しかし、結果の正式な確定に関係する更新は20:59:44でした。結果登録から確定まで、約10分の間隔があります。
この間、システム上ではリーグの対戦がまだ確定しておらず、別の対戦へ着席する際の制約にかかっていました。ゲームを終えて結果を入力していても、結果が確定するまでは、次のイベントへの着席が認められない状態でした。
GPの着席受付時間は20:50から21:00までです。そのため、リーグの結果確定を待つ時間と、GPの着席受付時間がほぼ重なりました。
アクセスログでは、セプコさんの発言時刻と着席成功時刻に対応する同じアクセス群から、20:51:29以降、着席要求が繰り返されています。
このアクセス群は、通信情報を匿名化してまとめたものです。85回すべてを、認証済みの本人IDで直接特定した記録ではありません。ただし、大会チャットの発言と保存された着席時刻との対応は確認できます。
20:55:55には、セプコさん自身が大会チャットで「います。前の対戦が確定してなくて着席できません。あと4分お待ちください。すみません」と説明しています。20:59:44にリーグ結果の確定に関係する更新があり、20:59:47にGPの着席が保存されました。21:00には「ひええ着席しました」と発言しています。
結果としてセプコさんはGPへ参加できました。しかし、リーグの結果登録や確定がもう少し遅ければ、GPの受付終了に間に合わなかった可能性があります。
問題は、単に二つの対戦時間が重なったことではありません。
リーグに参加する時点で、「対戦終了後も結果確定までは別の大会に着席できないことがある」「結果確定がGPの受付終了を過ぎると、GPへ参加できない可能性がある」という条件が、本人が参加可否を判断するための情報として十分に伝えられていませんでした。
GPを優先してリーグを軽く扱うべきだった、という話ではありません。複数のイベントに参加するとき、時間の重なりによって何が起きるかを、本人が把握できる状態だったかという問題です。
セプコさんが事前にどこまで理解していたかは、保存記録だけから断定できません。一方で、システムから明確に知らせる経路が不足していたことは、今回の調査対象になっています。
なお、この20:50台の着席拒否は、後に発生したサーバー高負荷による応答不能とは区別しています。着席要求は比較的短い時間で拒否されており、対戦状態と参加条件によって拒否されていた問題です。
20:50以降、大会チャットでは、出場者とリザーバーが着席すること、21:00時点で着席していない人は不在として扱うこと、本選出場者が欠けていた場合はリザーバーが入ることが案内されました。
20:52には、本選の準決勝4卓を作ったあと、残ったリザーバーの中にリザーバーマッチへの参加を認める人が4名以上いれば、リザーバーマッチを作るという説明がありました。20:53には、リザーバーマッチが成立しない場合や、銅賞戦の希望者が4人に達しない場合は、銅賞戦を行わないという説明もありました。
一方で、ルールや全体向けの説明が存在することと、選考後に本人へ自分の結果と理由が伝わることは別です。この違いは、リザーバーの選考で明確になりました。
有効な6名のうち、森陽さんには着席記録がありませんでした。残る5名には着席記録がありましたが、リザーバーマッチは4人単位で作るため、優先順に従って4名が選ばれました。
森陽さんについては「着席が確認できず選出対象にならなかった」、うぃ漏さんについては「着席済みだったが、優先順と4人単位の条件によって選外になった」という異なる事情があります。しかし、その結果と理由をシステムが直接本人へ知らせた通知は確認できませんでした。
21:00には準決勝の卓が表示され、対戦を開始できる予定でした。しかし、その時刻に卓を確認できない状態になりました。
21:00:45には運営から「準決勝の皆さん、卓見えてますかね? こっちから見えん」と発言があり、その後も参加者から「みえません」「確認できず」「見えてないです」と報告が続きました。21:03には、集まっている16名の準決勝進出を維持する旨が案内されています。
卓生成の遅れについては、単に「処理がタイムアウトした」という結果だけでなく、なぜ処理時間が伸びたのかを調べています。
調査では、卓を生成する処理が20人分の参加者を登録し、その過程でロックの取得、状態の読み直し、参加に関係する更新などを繰り返し、それらを一つのデータベーストランザクションで処理していたことが分かっています。この処理構造と、処理時間の上限や再試行の仕組みとの組み合わせが適切だったかが問題になっています。
ただし、生成開始時の旧backendコンテナのログがすべて残っているわけではありません。21:00の最初の生成処理について、どのSQLが何秒かかり、どの順序で失敗したかまで完全に復元できたとはしていません。現在は、プログラム上の処理構造、残されたログ、最終的に保存されたデータを照合しています。
21:06には、準決勝4卓とリザーバーA卓が生成されました。
その後にページを開けなくなった時点でも、卓そのものが一切生成されていなかったわけではありません。卓は保存されていましたが、参加者がそれを正常に参照して対戦を進められない状態が続きました。
卓生成後、大会関連の応答が遅くなり、500、502、503などのエラーも発生しました。
21:09の画像には、GPシーダモのトップページで「500 Server Error」「一時的な不具合が発生しました」と表示されている様子が残っています。このほか、「backend is temporarily busy」という表示や、各卓を開けないという報告もありました。
高負荷の調査では、大会の進行状態を保存するJSONに、リーグ全体の順位資料が重複して取り込まれていたことを確認しています。
順位資料のsnapshotは、選考の根拠となる時点の情報を保存したものです。しかし、GPの候補者について必要な情報だけでなく、リーグ全体の大きなpayloadが、朝と夕方の資料などとして含まれていました。
その結果、大会の保存データは約172万バイトに膨らんでいました。大会ページやチャットが定期的に状態を取得するポーリングの経路でも、この大きなデータを含む大会情報を繰り返し読み込む構造になっていました。
つまり、参加者が通常どおり大会ページを開いたり、チャットの更新を受け取ったりするだけで、サーバー側では大きな大会データの読み取りを反復する状態でした。参加者が特別な操作をしたから起きた、という説明にはなりません。
障害後の測定でも、大きなデータの読み取りが、小さな項目だけの読み取りより重いことは確認されています。ただし、その測定値を障害発生時の各要求へそのまま当てはめることはできません。各処理が高負荷へどの程度寄与したかという厳密な内訳については、引き続き記録との照合が必要です。
同じ時間帯には、主催タブが表示されない問題も報告されています。
調査では、運営操作を認める権限と、主催タブを表示するための判定が一致していない経路が見つかっています。
これは、ページ全体の高負荷とは別に、表示と権限判定の問題が重なっていたものです。
主催タブは、大会でトラブルが起きた際に、主催者が進行状況を確認し、必要な手動対応を行うための入口でもあります。このタブが表示されなかったことで、トラブル発生時に主催者が状況を確認し、素早く対応することができない状態になっていました。
自動進行だけでは解決できない問題が起きたとき、主催者が手動で対応できる機能は必要です。その機能が用意されていても、正規の主催者が実際に利用できる状態になっていなかったこと自体が、大会運営上の不備です。
大会関連ページが利用できず、サイトの他の機能を含めて負荷を抑える必要があったため、通常機能を停止し、Discordへの集合案内だけを表示する緊急運用へ移りました。
参加者から見ると、大会トップや卓だけでなく、普段利用しているサイトの機能も使えなくなる事態でした。
21:18以降、参加者がDiscordの「オンライン大会」チャンネルへ集まり始めました。Iruasさんは「ページがひらけなくなりました」、かめさんは「大会ページが激重になったので、こちらに案内されました」、セプコさんは「部のサーバー落ちちゃった?」と発言しています。
この時点では、サイト上で参加者の集合状態や卓への移動を確認できませんでした。そのため、Discord上で各卓の4人がそろっているかを確認しました。
21:21から21:24にかけて、はーじーさん、テレコムさん、HEROさん、かよさん、リザーバーの参加者などについて所在確認が行われています。Twitterを通じてDiscordへの案内を送ったという発言もあります。
参加者がすでに大会へ集まっていたにもかかわらず、サイトから別の連絡先へ移動し、改めて自分の卓や対戦相手を確認する負担が生じました。
21:24以降、参加者は準決勝A・B・C・Dとリザーバーの各テキストチャンネルに分かれ、ゲームの部屋IDを共有しました。
この移行では、ブック登録についても混乱がありました。外鴨なきくさんは「ブック登録なしでゲーム開始で問題ないですか?」と質問し、はーじーさんは「ブック変えれなかったんですが登録したのと違うの使っていいですか?」と確認しています。
運営は21:26に、4人そろったら対戦を開始してよいこと、ブック登録は後回しにすることを案内しました。21:27には、準決勝の登録ブックを気にせず対戦するよう伝えています。通常の大会ルールにある条件と、障害中の運用条件を、参加者がその場で確認しなければならない状態になっていました。
Discordに残っている開始報告は、次のとおりです。
B卓の21:35は報告時刻です。21:35ちょうどにゲームを開始したとまでは断定できません。
一方、サイトに現在保存されている準決勝とリザーバーマッチの開始時刻は、すべて21:30です。これは大会中の正常化で設定した統一の基準時刻であり、Discordに記録された各卓の実際の開始報告とは別のものです。
リザーバーA卓のページには、サイトの負荷が収まれば自動的に解消するとは限らない、別の不具合がありました。
卓を作る側は「reserve-a-1」という公開キーを生成していました。しかし、そのキーを受け付ける側の形式判定と一致していませんでした。
システム自身が作り、大会チャットにも案内するURLが、そのままでは参照できない組み合わせになっていました。これは、大きなデータの読み取りによる高負荷とは異なる、URLの生成と受付の不整合です。
リザーバーの選外者については、大会チャットの書き込み権限にも問題が見つかっています。
卓生成後、選考に使っていたassignmentが「released」になり、選出された人だけが別の参加状態へ更新されます。一方、大会チャットの許可判定は、選外になったリザーバーの状態を継続して認める条件になっていませんでした。
この組み合わせにより、うぃ漏さんや森陽さんのように卓へ選出されなかった人は、大会チャットの書き込み許可から外れる状態になっていました。
選外の結果や理由を個別に知らせる経路が確認できないことに加えて、その大会チャットで問い合わせるための権限にも欠落があったという問題です。
ただし、保持されたアクセスログでは、この2人が実際に投稿を試みてHTTP 403を受けた記録まで確認できたわけではありません。ここで確認しているのは、保存された状態と、プログラムの許可条件の組み合わせです。
また、外鴨なきくさんやファルクローさんには、卓生成後の大会チャット発言があります。「リザーバー全員が大会チャットを書けなかった」とは説明できません。
21:46には、Discordでサイトを修正中であることが案内されました。対戦終了後は念のためDiscordにも結果を書き、その上でサイトの各卓にも結果を登録するよう依頼しています。参加者には、結果を二か所へ報告する負担が生じました。
21:59の投稿では、大会ページが復旧したはずであること、各卓へ結果を入力すること、決勝進出者と銅賞戦希望者は大会チャットへ集まることが案内されています。
この投稿には「編集済み」の表示があります。現在画像で読める本文の全内容が、21:59の投稿時点から存在したとは確定できません。
各卓への案内は、A卓が22:03、B卓が22:06、C卓が22:07、D卓が22:08、リザーバーA卓が22:09にも行われています。
22:03には、D卓でIruasさんが「分裂しましたので落ちました」と申告しました。22:05には、他の3人は正常に動いており、自分だけが分裂したようだと説明しています。運営は、残る3人で対戦を続けるよう案内しました。
このゲーム中の分裂について、今回の記録だけから、サイト障害と因果関係があるとは言えません。大会中に発生した事象として記録していますが、サイトの高負荷によるものと一括して扱ってはいません。
22:09以降、対戦終了や結果登録の報告が続きました。
ちゃおらんさんは22:09に「A卓終わりましたが、結果入力どうしましょう」と質問し、案内を受けて22:10に「登録できました」と報告しています。外鴨なきくさんも、22:11にリザーバーA卓の結果登録を報告しました。
データベースに保存された結果登録時刻は、次のとおりです。
結果を登録した時刻と、正式に確定した時刻は異なります。各卓の確定に関係する更新は、その後およそ5分を置いて記録されています。
結果を登録できても、その案内が大会チャットへ出ない問題がありました。
調査では、GP用の新しい進行処理が、以前からある結果登録通知の処理を通る前に戻る分岐になっていたことを確認しています。結果の保存と、大会チャットへの通知がつながっていなかったためです。
そのため、参加者や運営は、どの卓が終了したか、何卓がまだ対戦中か、次の集合がいつになりそうかを、大会チャットだけでは把握しにくくなっていました。
現在保存されている大会チャットには、結果登録や次戦の目安を知らせるシステムメッセージがあります。ただし、後から補われた通知もあります。保存されたメッセージの時刻だけを見て、その時点で参加者の画面へ通知が表示されていたと判断することはできません。
復旧案内後にも、参加者側から問題が報告されています。
22:15には、ファルクローさんがDiscordで、リザーバーマッチは終了し、外鴨なきくさんが勝ったことを報告した上で、「サイト復帰しましたがチャットが出来ないですね」と発言しています。
22:23にはヨシさんから、B卓のページが見つからないと表示されるという報告がありました。同じ分に「今度は見つかった」と続いています。22:26には、はーじーさんが「なぜか卓チャットで記入欄が出てきません」と報告しています。
これらの発言から、復旧を案内した後も、全員がすべての機能を問題なく使えていたとは言えません。
特に、実際に卓へ出場した人の卓チャットの問題は、選外リザーバーの大会チャット権限とは別に検証する必要があります。現在の記録では、各報告時点の画面、認証状態、卓の状態を完全には再現できていません。同じ原因によるものだったとは断定していません。
22:30台には、最後のC卓の結果を待ちながら、決勝と銅賞戦の集合に関する案内が行われました。
C卓の結果は22:34:42に登録され、確定に関係する更新が22:40:02にあります。その後、決勝・銅賞戦の開始予定は22:50、集合はその10分前からと案内されました。
この集合では、銅賞戦に参加する意思と、その意思をシステムへ登録する操作の関係が分かりにくくなっていました。
大会チャットには、「リザーバーマッチは希望だしましたけど、これが銅賞戦もってことかな」という質問があります。リザーバーマッチへの参加希望と、銅賞戦への参加希望が別であることを、その場で確認しなければならない状態でした。
外鴨なきくさんは22:40に、着席ボタンがまだ出ていないと報告し、その後、ボタンが出たことを伝えています。22:41には「私は着席ボタン押してよろしいでしょうか」と質問し、22:42には「とりあえず着席ボタン押してみます」と発言しています。
保存された希望では、外鴨なきくさんの銅賞戦希望は「false」です。しかし、この保存値だけから、「銅賞戦への参加を望まなかった」「条件を理解した上で辞退した」と断定することはできません。
画面の参加希望は初期値が「false」で、着席後は希望を変更できず、選択項目も隠れる挙動になっていました。そのため、希望の選択と着席の順序を理解しないまま操作すると、本人が銅賞戦に出たいと思っていても、希望なしの値が保存される可能性がありました。
セプコさんについても、保存値が「false」であることと、本人が説明を理解して参加を辞退したことは同一ではありません。
一方、明示的な辞退も記録されています。
稲村さんはDiscordで22:24に「私は銅賞戦には出ません」と発言しています。ゆどもさんについても辞退の申告があり、大会の設定へ反映されています。
これらの明示的な辞退と、チェックされていない保存値は区別しなければなりません。
22:50時点で、システムに銅賞戦希望ありとして保存され、着席していたのは、ファルクローさん、テレコムさん、シービーアイさんの3名でした。4名に達していなかったため、銅賞戦は生成されませんでした。
ここで確認できるのは、「システムに登録された希望者が3名だった」という事実です。「実際に参加したい人が全体で3名しかいなかった」とまでは、現在の記録から断定できません。
22:51:16には、「銅賞戦は、希望者が4名に達しなかったので開催されませんでした」というシステムメッセージが大会チャットへ出ています。
ただし、この案内は運営からの要請を受けて出されたものです。通常の不開催判定だけで、自動的に十分な説明が行われていたわけではありません。
22:50には、準決勝を勝った、ちゃおらんさん、はーじーさん、ひろよしさん、機械科ボイラーズさんの4名による決勝卓が生成されました。
しかし、決勝の予定時刻、卓が生成された時刻、サイト上で対戦開始として記録された時刻は一致していません。
調査では、大会側で予定時刻を決めて卓を生成する処理と、卓を実際に開始状態へ移す共通の処理条件が一致していなかったことが問題になっています。時刻に達して卓が作られても、そのまま同じ時刻に開始状態になるとは限らない構造でした。
ただし、今回提供されたDiscord画像には、決勝の実ゲーム開始時刻を直接示す記録はありません。23:10:17はサイトの保存記録であり、Switch上でその秒にゲームを開始したとまでは説明できません。
決勝の結果は10月5日00:07:24に登録されました。00:12:40に確定に関係する更新があり、00:12:55に大会終了が保存されています。優勝は機械科ボイラーズさんです。
大会は最後まで行われました。しかし、参加者の皆さんに生じた待機、移動、確認、登録、連絡の負担が、大会を完了できたことによってなくなるわけではありません。
現在の原因調査では、画面に出たエラーや処理の失敗を列挙するだけでなく、それを生んだ処理構造と、参加者へ情報を伝える仕組みの両方を確認しています。
事前の試験が一切なかったわけではありません。
16人の本選とリザーバーを含む卓生成、決勝・銅賞戦の進行を確認したローカル試験の記録は存在します。
ただし、その試験が、本番規模の順位資料、実際の処理時間、公開URL、選外者の権限、選考結果の個別通知、本番で同時に発生するページ・チャットの更新確認まで扱えていたかは、別の問題です。
「試験をした」という事実だけで、昨夜の利用条件を十分に確認できていたとは言えません。
今回の調査では、次の資料を収集しています。
一方で、21:00の初回卓生成時に動いていた旧backendコンテナの全ログ、各報告時点の参加者の画面・認証・表示状態、Switch上での正確な対戦開始時刻、参加者本人が各説明をどのように認識していたかなど、現在の資料では確定できない部分もあります。
確認できた事実を具体的に示すことと、まだ確認できていないことを確認済みとして扱わないことの両方が必要だと考えています。
大会が終了したという結果だけでなく、そこに至る間に何が起き、なぜ参加者が困る状態になったのかを、個々の問題ごとに引き続き確認します。
今回の原因調査を受けた修正対応が完了しましたら、その内容と確認結果を改めて報告します。