相手が切断した終わり方:オンライン対局の中断の扱い
遊びを見つける執筆にClaudeを使用しています。

オンライン対局の途中で、相手の石が置かれなくなった場面を考えてみます。画面には自分の手番を終えた盤面が残っていて、相手が考えているのか、通信が切れたのか、見分けがつきません。しばらく待つべきか、閉じてよいのか、どこにも書かれていなければ、遊ぶ側は判断の材料を持てません。 この記事の問いは「相手が切断したとき、対局はどう終わるのか」です。ただし答えを先に述べることはしません。確認すべきは二つです。一つは再接続を待つ画面が、何を見せて何を待っているかです。もう一つは、その対局が終わったかどうかを誰が、どの時点で決めるかです。この二つは別の仕組みで、画面が待っていても判定は終わっていないことがあり、画面が閉じても判定は残ることがあります。 ここでは、アソバースのオンライン対戦で、読者が自分で切断を起こして記録し、集計する手順を示します。結果の数値は書きません。手元で記録を取れば、答えが出る形にします。
「切断」の終わり方を先に分けておく
アソバースのオンライン対戦は「潮目のオセロ」と「灯りのチェス」の2作品だけです。確認済みアカウントで部屋を作り、リンクで友達を1人招待します。手番・合法手・勝敗はサーバーで確認されます。再接続、投了、対戦履歴があり、部屋は24時間、部屋と対戦履歴は作成から7日後に削除対象になります。潮目のオセロでは、再読み込みで同じ部屋へ復帰できます。
ここから、中断の終わり方を次の4つに分けて考えられます。
- 復帰して続く:再接続や再読み込みで同じ対局に戻る。
- 投了で終わる:切断した側、または残った側が自分から終わらせる。
- 期限で消える:部屋が24時間で、履歴が7日で削除対象になる。
- それ以外:相手が戻らないまま放置された場合の扱い。
1〜3は、上の確認済みの機能から読み取れます。4は、切断から何秒・何分で何が起こるのか、切断した側の負けとして記録されるのか、といった細部が確認済み事項にありません。そのためこの記事では推測で埋めず、「作品を開いて、現在の案内で確かめる」項目として扱います。以降の手順は、この4を実際に観察して埋めるためのものです。
準備するもの
必要なものは次のとおりです。
- 確認済みアカウントを持つ2人分の環境(友達に頼むのが確実です)。1人で2つのアカウントを使う場合は、利用案内で扱いを確認してください。
- 別々の端末か、別々のブラウザ。同じブラウザの2つのタブでは、片方の切断の影響が混ざりやすくなります。
- ストップウォッチ(スマートフォンので十分です)。
- 記録用の表(次の節)。紙でも表計算でも構いません。
- 対象は「潮目のオセロ」と「灯りのチェス」の両方。2作品で同じ形になるかも比較項目です。
ヒントと一手戻すは、潮目のオセロではひとり対局のみの機能です。オンライン対局では使えないため、盤面をやり直して試験を整える手は使えません。1回の切断試験には1局が必要だと考えておきます。
切断を4種類つくって記録する
切断のやり方を揃えないと、結果を比べられません。次の4種類を、作品ごとに各3回ずつ行うと、集計に足る量になります。1回は「1局の中で1回切断を起こしてから、結末まで観察すること」を指します。
- A 再読み込み:切断する側がページを再読み込みし、すぐ同じ部屋に戻る。
- B タブを閉じる:切断する側がタブを閉じ、一定時間を置いてから、招待リンクまたは履歴から戻る。待つ時間は「30秒」「3分」のように、自分で決めて固定します。
- C 通信を切る:切断する側が機内モードなどで通信を切り、一定時間後に戻す。
- D 投了:どちらかが投了する。切断ではありませんが、「終わり」の基準点として比べます。
切断を起こすタイミングも固定します。自分の手番の直前、相手の手番の最中、局の序盤・終盤の4通りに散らすと、「手番の位置で扱いが変わるか」も見えますが、まずは「相手の手番の最中」だけに絞り、変数を増やさないほうが読みやすくなります。
1回の切断ごとに記録すること
1回の切断を1行として、次の項目を書き留めます。
- 作品、記録の仕方:オセロ/チェス
- 切断の種類、記録の仕方:A/B/C/D
- 切断した側の手番、記録の仕方:黒(先手)/白、チェスなら側
- 切断から復帰までの秒数、記録の仕方:ストップウォッチ。復帰しない場合は観察を打ち切った時点
- 残った側の画面、記録の仕方:表示された文言を、そのまま書き写す
- 切断した側の復帰後の画面、記録の仕方:同上
- 盤面の一致、記録の仕方:両者の盤面が同じか。オセロは石の数と最後に置かれた位置、チェスは棋譜
- 手番の一致、記録の仕方:次に打つ側が両画面で同じか
- 結末、記録の仕方:続行/終了(勝敗あり)/終了(勝敗なし)/不明
- 履歴、記録の仕方:対戦履歴にその局が残っているか、どう表示されるか
チェスは取った駒と全棋譜の表示があるので、棋譜の比較が使えます。ただしオンライン対局で同じ表示が出るかは、作品を開いて確かめる部分です。表示がなければ、駒の配置を言葉で書き留めておき、復帰後と比べます。
画面の文言は要約せず、そのまま写してください。「待機中」と「相手が切断しました」では、見せている情報がまったく違うからです。
結果の読み方:待つ画面と終了判定を分けて見る
記録が集まったら、行ごとに2つの問いを立てます。
問い1:待つ画面は、何を見せていたか。残った側の画面について、次の3点があるかを見ます。
- 相手が切断している(または応答がない)ことが分かるか。
- 待つ状態にあることが分かるか。単に画面が止まっているだけではないか。
- 待つのをやめて自分で終わらせる手段(投了など)が、その画面から届く位置にあるか。
3点とも満たす画面なら、遊ぶ側は「待つ」「終わらせる」を自分で選べます。1点目がなければ、通信不良と相手の長考が区別できません。3点目がなければ、待ち続けるしかなくなります。
問い2:終了を決めたのは誰か。手番・合法手・勝敗はサーバーで確認される、というのが確認済みの範囲です。つまり、切断した側の端末が閉じても、対局の状態はサーバー側に残るはずです。この点は盤面の一致で確かめられます。復帰後の盤面と手番が、残った側と一致していれば、状態は端末ではなくサーバーが持っていたと読めます。一致しない行があれば、そこが調べる価値のある場所です。
2つの問いの組み合わせで、行を分類できます。
- 切断が分かる、結末:復帰して続行、読み方:想定どおりの復帰。盤面の一致を確認する
- 切断が分かる、結末:投了で終了、読み方:待つ側が終わらせられる設計。終了の理由の表示を確かめる
- 分からない、結末:復帰して続行、読み方:復帰はできるが、待つ側は状況を知らなかった
- 分からない、結末:不明のまま、読み方:最も確認が必要。時間を延ばして観察を続ける
「結末」が「終了(勝敗なし)」の行があれば、履歴にどう残るかを見ます。勝敗のない終わり方は、集計や振り返りの面では扱いにくくなるためです。
集計の単位
集計の単位は「1回の切断」です。1局に複数回切断した場合は、その回数分の行になります。作品×切断の種類で並べ、各セルに「続行」「終了」「不明」の件数を数えます。各セルは3件程度なので、割合ではなく件数で読みます。
記録が表計算に入っているなら、次のような小さなスクリプトで集計できます。ブラウザの開発者コンソールに貼り付けて動かせる最小構成です。
// rows: 1回の切断=1行。自分の記録に置き換えてください。
const rows = [
{ game: "othello", type: "A", result: "続行" },
{ game: "othello", type: "B", result: "不明" },
{ game: "chess", type: "A", result: "続行" },
// ...記録した分だけ追加
];
const tally = {};
for (const r of rows) {
const key = `${r.game}/${r.type}`;
tally[key] ??= {};
tally[key][r.result] = (tally[key][r.result] ?? 0) + 1;
}
console.table(tally);出力された表で、同じ種類の切断なのに作品間で結末が違うセルがあれば、2作品の扱いの違いを調べる手がかりになります。件数が少ないので、断定せず「この条件ではこう見えた」という程度にとどめます。
起こりやすい誤り
片方の画面しか見ない。 切断した側だけを見ていると、残った側が何を見せられていたかが分かりません。必ず2人で、両方の画面を同時に書き留めます。
意図しない切断が混ざる。 スマートフォンの画面ロック、ブラウザの省電力、使っていないタブの自動停止などで、通信が静かに途切れることがあります。試験中は画面を点けたままにし、記録に「意図した切断」と「意図しない切断」を分けて書いておきます。
待ち時間を決めずに観察する。 「しばらく」では比べられません。30秒、3分など、あらかじめ決めた時間で復帰させます。長く放置する観察は別枠の1回として扱います。
部屋の期限を見落とす。 部屋は24時間、部屋と対戦履歴は作成から7日後に削除対象です。日をまたぐ観察をすると、切断の扱いではなく期限による消滅を見ていることになります。長時間の観察は、この期限と切り分けて記録してください。
ログイン状態の違い。 復帰の際にログインが切れていると、中断の扱いではなく認証の問題に見えます。復帰前に、どのアカウントで入っているかを確認しておきます。
勝敗の有無を推測で書く。 画面に勝敗が出なかったのに、「切断した側の負け」と書き込むのは誤りです。画面と履歴に出ていた文言だけを根拠にします。
作る人が持ち帰る観点
アソバースでは、投稿作品向けの共通対戦APIは未提供です。投稿作品の「遊び方・最大参加人数」は任意の作者申告で、共通対戦を有効にするものではありません。そのため、自作で対戦風の遊びを作る場合は、この記事の記録表を「自作の中断の設計チェック」として読み替えるのが現実的です。
見るのは同じ2点です。待つ画面は、中断を伝えているか。終わりは、誰がどの条件で決めるのか。たとえば同じ画面で交代して遊ぶ形式なら、「相手が離席した」状態に対して、一時停止や途中終了の手段を用意しておくかどうかが、同じ問いになります。
次の行動
友達と2人で、潮目のオセロから始めます。「相手の手番の最中に、再読み込みで切断する」を3回行い、残った側の画面の文言と、復帰後の盤面の一致を記録してください。そのあと同じ手順を灯りのチェスで行い、2作品の行を並べて比べます。切断後の待ち時間や勝敗の扱いなど、記録から読み取れない点は、現在の案内で確認します。

