スイス方式トーナメントを管理するためのシステムです。主にポケモンカードバトル大会を対象としています。Google Apps Script (GAS) とスプレッドシートで動作します。
スイス方式は、トーナメント形式の一種で、以下の特徴があります:
- ラウンド制: 全プレイヤーが同時に対戦を開始・終了
- 同勝点マッチング: 同じ勝点のプレイヤー同士がマッチング
- 再戦回避: 過去に対戦した相手とは原則として再戦しない
- 脱落なし: 敗北してもトーナメントから脱落せず、全ラウンドに参加可能
- 公平性: 全員がほぼ同じ試合数を消化し、実力が近い相手と対戦
-
プレイヤー管理
- プレイヤー登録処理
- プレイヤードロップアウト処理
-
ラウンド管理
- 新ラウンドの自動開始
- ラウンド進行状況の確認
-
スイス方式マッチング(再戦回避機能付き)
- 同勝点プレイヤー同士の自動マッチング
- 過去対戦相手の自動記録と再戦回避
- 奇数人数時の自動バイ(不戦勝)処理
- 卓番号の自動管理
-
対戦結果記録
- 勝敗・引き分けの記録
- 勝点の自動計算(勝利3点、引分0点(両者敗北扱い)、敗北0点、バイ3点)
- 統計の自動更新(勝点・勝数・敗数・試合数)
- 対戦履歴の完全な記録
-
順位表示
- 勝点順の順位表を表示
- タイブレーク(勝率、自己勝率、試合数)による順位付け
- 勝率(対戦相手の平均勝率)を自動計算
- 参加中: トーナメントに参加中
- 終了: ドロップアウト済み(以降のラウンドに参加しない)
- 勝点が同じプレイヤー同士を優先的にマッチング
- 勝点内での順位: 勝率 → 自己勝率 → 試合数(少ない方が優先)
- 過去に対戦した相手との再戦を自動回避
- 対戦相手の平均勝率を計算してタイブレークに使用
- MTGルールに準拠し、最低勝率は33.3%として計算
- 同じ勝点のプレイヤー間で、より強い相手と戦ったプレイヤーが上位
- 奇数人数の場合、勝点が最も低いプレイヤーに自動的にバイを付与
- バイを受けたプレイヤーは勝利扱いで3勝点を獲得
- 全プレイヤーが同時に対戦を開始
- すべての対戦結果が記録されるまで次のラウンドは開始できない
- 現在のラウンド状況をリアルタイムで確認可能
- 各ラウンドで卓番号を自動割り当て
- 最大卓数は1~200の範囲で動的に設定可能(デフォルト: 50卓)
- 物理的な卓配置と連動した運用が可能
- 勝点・勝数・敗数・試合数を自動集計
- 引き分けは両者敗北扱い(0勝点)
- 対戦履歴の完全な記録(ラウンド番号付き)
- 最終対戦日時の自動更新
- Google スプレッドシートを新規作成
- 「拡張機能」→「Apps Script」を開く
- 本リポジトリの各
.jsファイルをスクリプトエディタにコピーconstants.jsshared.jsapp.jsplayer-domain.jsmatch-domain.jsround-manager.jstest-utils.js(テスト用)
- スクリプトを保存してスプレッドシートに戻る
- ページを更新すると「� スイス方式トーナメント」メニューが表示される
- カスタムメニューから「⚙️ シートの初期設定」を実行
- 3つのシート(プレイヤー、対戦履歴、現在のラウンド)が自動作成される
- カスタムメニューから「➕ プレイヤーを追加する」でプレイヤーを登録
- すべてのプレイヤーの登録が完了するまで繰り返す
- ラウンド開始: 「🎯 新ラウンド開始」を実行
- 同勝点のプレイヤー同士が自動的にマッチング
- 奇数人数の場合、1名にバイが付与される
- 対戦実施: プレイヤーが対戦を行う
- 結果記録: 「✅ 対戦結果の記録」で各対戦の結果を記録
- 勝敗または引き分けを選択
- プレイヤーIDを入力
- 次ラウンド: すべての対戦結果が記録されたら、次のラウンドを開始
- 「🏅 順位表示」で最終順位を確認
- 🎯 新ラウンド開始: 新しいラウンドを開始してマッチングを実行
- 🏅 順位表示: 現在の勝点順の順位表を表示(上位20名)
- ➕ プレイヤーを追加する: 新しいプレイヤーを追加(自動ID採番)
- ❌ プレイヤーをドロップアウトさせる: 大会から退出(以降のラウンドに参加しない)
- ✅ 対戦結果の記録: 対戦結果を記録(勝敗または引き分け)
- 🔧 対戦結果の修正: 誤って記録した対戦結果を修正
- ⚙️ 最大卓数の設定: 使用する卓の最大数を設定(1~200、デフォルト: 50)
システムは以下の3つのシートを使用します:
-
プレイヤーシート: プレイヤーマスタ
- プレイヤーID、名前、勝点、勝数、敗数、試合数、勝率、参加状況、最終対戦日時
-
対戦履歴シート: 完了した対戦の記録
- 対戦ID、ラウンド、日時、卓番号、両プレイヤーID・名前、勝者名、結果
-
現在のラウンドシート: 現在進行中のラウンドの対戦
- ラウンド、卓番号、両プレイヤーID・名前、結果
A. プレイヤー数に制限はありませんが、50人以上での運用を想定した最適化を行っています。
A. 一般的にスイス方式では、参加人数に応じて以下のラウンド数が推奨されます:
- 8人以下: 3~4ラウンド
- 9~16人: 4~5ラウンド
- 17~32人: 5~6ラウンド
- 33~64人: 6~7ラウンド
A. 自動的に勝点が最も低いプレイヤーに「バイ(不戦勝)」が付与され、3勝点を獲得します。
A. 対戦相手の平均勝率です。同じ勝点の場合、より強い相手と戦ったプレイヤーが上位になります。MTGのルールに準拠し、最低勝率は33.3%として計算されます。
A. 引き分けは両者敗北と同じ扱いで、両プレイヤーとも0勝点となります。敗数にカウントされます。
A. カスタムメニューの「⚙️ 最大卓数の設定」から1~200の範囲で設定可能です(デフォルト: 50卓)。
A. カスタムメニューの「🔧 対戦結果の修正」から修正できます。対戦IDを指定して新しい勝者を入力してください。
A. 次のラウンド開始前であれば「➕ プレイヤーを追加する」で追加できます。追加プレイヤーは次のラウンドから参加します。
A. .github/copilot-instructions.md に開発者向けの詳細情報があります。Pull Requestも歓迎します!
springOK
MIT License
Copyright (c) 2025 springOK
このソフトウェアはMITライセンスの下で公開されています。 詳細は LICENSE ファイルを参照してください。