マガジン

再接続の裏側:切れた接続を見つけて戻る処理

遊びを見つける

執筆にClaudeを使用しています。

窓の先にチェス・パズル・レース・潮だまりの小さな島が広がる切り絵
記事のテーマをもとに制作したAI生成イラスト。

オンラインでオセロを打っている最中に、電車がトンネルに入って通信が途切れる場面を考えてみます。画面は固まり、相手の石が置かれたかどうかも分かりません。ブラウザを再読み込みしたとき、対局は消えるのか、続きから戻れるのか。これが「再接続」の問いです。 この問いには二つの部分があります。一つは、切れたことを誰がどうやって見つけるのかです。もう一つは、見つけた後にどうやって同じ部屋へ戻るのかです。アソバースの対戦機能について、公式に確認できていることは限られています。この記事では確認済みの事実だけを土台にします。そこから「設計から読み取れること」を整理し、確認できない部分は読者が自分で確かめる手順にします。 結論を先に言うと、確認できる範囲では「戻れる作り」になっています。ただし、切断の検知がどんな仕組みなのかは公開情報にありません。そこは推測で埋めず、観察して確かめる形にします。

この記事の目次
  1. 通信の切断は「静かに」起こる
  2. 確認できている事実を並べる
  3. 「手番・合法手・勝敗をサーバーで確認」から読み取れること
  4. 戻る手順を3段階に分けて考える
  5. 自分で確かめる観察シート
  6. 切れている間の扱いと、期限のこと
  7. 次の行動

通信の切断は「静かに」起こる

ブラウザ同士が遊ぶ対戦では、切れた側が「切れました」と知らせてくれるとは限りません。トンネルや電波の弱い場所では、通信が途絶えただけで、画面は何も変わらないことがあります。相手から見れば、自分が考え込んでいるのか、接続が切れたのかを区別できません。

一般的なオンラインゲームでは、この区別のために次のような方法が使われます。

  • 一定間隔で「生きていますか」という小さな信号を送り合い、返事が途絶えたら切断とみなす
  • ブラウザが通信路の切断を検知したときに出す通知を受け取る
  • 次に操作したとき、通信の失敗で初めて切断に気づく

どれを使うかは作品や基盤ごとに異なります。アソバースの対戦機能がどの方法を使っているかは、確認済み事項にありません。この部分は作品を開いて挙動を観察するか、現在の案内で確認することになります。

確認できている事実を並べる

オンライン対戦が使えるのは「潮目のオセロ」と「灯りのチェス」の2作品だけです。確認済みの内容は次のとおりです。

  • 確認済みアカウントで部屋を作り、リンクで友達を1人招待する
  • 手番、合法手、勝敗はサーバーで確認される
  • 再接続、投了、対戦履歴がある
  • 潮目のオセロは、再読み込みで同じ部屋へ復帰できる
  • 灯りのチェスは、黒側の盤面が反転して表示される
  • 部屋は24時間、部屋と対戦履歴は作成から7日後に削除対象になる

フレンド機能とチャット機能は未提供です。投稿作品向けの共通対戦APIもありません。投稿作品の「最大参加人数」は作者の申告にすぎず、対戦機能を有効にするものではありません。ここで説明する再接続は、この2作品に限った話です。

「手番・合法手・勝敗をサーバーで確認」から読み取れること

再接続の設計を考えるうえで鍵になるのは、手番・合法手・勝敗をサーバーで確認するという点です。これは、盤面の正しい状態をサーバーが持っていることを示唆します。

もし各自の画面だけが盤面を持っていたら、切れた後にどちらの盤面が正しいのか決められません。サーバーが基準を持っていれば、画面は「その時点の盤面を映したもの」になります。この前提なら、戻る処理の中心は、再び部屋につながって最新の盤面を受け取り直すことだと考えられます。これは確認済みの事実からの読み取りであり、内部実装の説明ではありません。

もう一つ読み取れるのは、復帰の手がかりが招待リンクの部屋にあるらしいことです。再読み込みで「同じ部屋へ」復帰すると書かれているので、画面のメモリだけに頼る作りではないと考えられます。ただし、部屋を見分ける材料がURLなのか、アカウントなのか、その両方なのかは確認済み事項にありません。ここも観察で確かめる項目になります。

戻る手順を3段階に分けて考える

一般的な再接続は、次の3段階に分けて考えると整理しやすくなります。

  1. 気づく:通信が使えない状態になったことを、画面側かサーバー側が把握する
  2. つなぎ直す:通信が回復した、または再読み込みされたとき、部屋に再び参加する
  3. 状態をそろえる:サーバーの盤面と手番を受け取り、画面を更新する

確認済みの事実は、2と3の結果である「同じ部屋へ復帰する」の部分に当たります。1の「気づく」がどう行われるかは、確認済み事項にありません。

3段階に分けると、トラブルの原因も切り分けられます。たとえば、戻ったのに盤面が古いままに見えるなら、3の問題か、単に回線が回復していないかのどちらかです。

自分で確かめる観察シート

ここからは、読者が自分で行える確かめ方です。結果は書きません。同じ手順で、環境ごとに答えを出してください。

準備するもの

  • 確認済みのアカウントを2つ(部屋を作る側と、招待を受ける側)
  • 端末またはブラウザを2つ(同じ端末でブラウザを2種類使っても構いません)
  • 記録用のメモ

オンライン対戦は、ヒントと「一手戻す」が使えないひとり対局とは別物です。観察中にそれらを混同しないでください。

手順と記録

  • 自分の手番でページを再読み込み、見るもの:同じ部屋に戻るか。盤面と手番は元のままか、記録のしかた:戻る/戻らない、盤面の一致を3回分
  • タブを閉じて、閲覧履歴から開き直す、見るもの:部屋に戻るか。ログイン状態は保たれるか、記録のしかた:3回分
  • 通信をオフにして、一手打つ、見るもの:打てたように見えるか。エラー表示は出るか、記録のしかた:表示の文言をそのまま書き写す
  • 通信を戻してしばらく待つ、見るもの:盤面が自動で更新されるか。再読み込みが必要か、記録のしかた:待った秒数と、操作が必要だったか
  • 相手側から見る、見るもの:こちらが切れている間、相手の画面に表示が出るか、記録のしかた:相手の画面に出た変化と、出るまでの時間
  • 灯りのチェスで黒側として復帰、見るもの:盤面の反転が復帰後も保たれるか、記録のしかた:反転している/していない

通信のオフは、ブラウザの開発者ツールのネットワーク設定にある「オフライン」で再現できます。機内モードでも構いません。いずれも自分の端末だけで行い、他人の回線や機器には触れないでください。

結果の読み方

  • 再読み込みで毎回同じ部屋に戻り、盤面が一致するなら、サーバー側の状態で復帰していると読み取れます。
  • 通信オフ中に打った手が、通信を戻した後にどう扱われるかを見てください。取り消される、または確認待ちになるなら、サーバーが手を確認していることと整合します。
  • 盤面が食い違うときは、まず回線の回復を待って再読み込みし、それでも食い違う場合に問題として整理してください。

起こりやすい誤り

  • 1回だけ試して結論を出すこと。回線の状態で結果が揺れるので、最低3回は繰り返してください。
  • 相手が実際に手を打った場合と、再接続による更新を取り違えること。相手側の操作ログも一緒に記録します。
  • 24時間の期限を忘れること。放置した部屋は戻れなくなるはずなので、観察は短時間で行ってください。

切れている間の扱いと、期限のこと

切断中の扱いには、確認済み事項で埋まっていない点があります。たとえば、自分の手番のまま長く戻らなかった場合に、持ち時間の扱いや自動の決着があるのかは、確認済み事項にありません。置けない手番が自動でパスになるのはオセロのルールであり、切断の扱いとは別です。この点は現在の案内で確認してください。

確認できているのは、期限と終わり方です。部屋は24時間で、部屋と対戦履歴は作成から7日後に削除対象になります。復帰できるのは、部屋が残っている間に限られると考えるのが自然です。対局を終えたいときは、投了という明示的な手段があります。接続が不安定で続けられないときは、放置するより投了で区切るほうが、相手にも状況が伝わります。

履歴を残したいかどうかも判断の材料になります。対戦履歴の保持期間には上限があるので、残しておきたい対局は、早めに内容を自分で控えておくのが無難です。

次の行動

まず、観察シートの最初の2行(再読み込みと、タブを閉じて開き直す)を、潮目のオセロで3回ずつ確かめてみてください。その後、灯りのチェスで黒側として同じ手順を行い、盤面の反転が保たれるかを見ます。切断中の手番や持ち時間の扱いなど、観察で分からない点は、現在の案内で確認してください。