見出し画像

【WS】小規模な対戦会に簡易的な勝敗の報告システムを提供した話

 doit様の以下のnoteを拝読し、「こういう記事も需要あるのかなー」と軽い気持ちで書き下します。

1. はじめに

 私は一応データサイエンス的な勉強をしているので、データの収集や集計に興味があり、いろいろとプログラムを書いたりしてます。
 で。先日某所の対戦会に参加させていただいた際、主催者様が「当日の運営何かいい方法ないかなー」的なことを呟いていたので、私の趣味趣向ゲージが振り切れ、前日夜7時ごろに「こんなの作っていいですか?」と連絡、8時ごろにOKをいただき作成をはじめ、10時ごろに「こんなのどうでしょう?」と出したのが、今回の表題にあるシステムになります。
 ヴァイスシュヴァルツ対戦だけではなく色々な場所に応用できる方法だと思うので「こんな方法もあるんだなー」程度に読み流していただければと思います。

2. システムの紹介

2.1. 利用したサービス・ソフトウェア

 わざわざ小規模な会のために全員がスマホのアプリを導入し、登録し、使い方を覚えるのも、短期的に見てあまり効率の良い方法ではないなぁ、と思い、参加者側はURL踏んでいくつか項目を選択して送信すればよいだけのものを目指しました。そのために使用したのが以下の3つです。

  • Google フォーム
     無料のアンケート作成サービスです。こちらで対戦会前のプレイヤー名やデッキ構築の登録、対戦会中の結果報告をしてもらいます。

  • Google スプレッドシート
     Googleフォームの回答結果が記録されます。これに以下のソフトウェアでアクセスし、回答集計を行い、欲しい情報として出力します。

  • RRStudio
     統計計算に強いと言われる、無料のプログラミングソフトです。データサイエンスの強い味方です。スプレッドシートの記録の取得・集計・グラフ化などを行います。

2.2. システム利用の流れ

① まず各参加者に、Googleフォーム①より対戦会開始前までにプレイヤー名とデッキ構築について登録をしてもらいます。
 タイトルはヴァイス公式の「ネオスタンダード区分一覧」にあるものを全てリストで選択できるようにし、入力の手間や、人によってタイトルの呼称がブレるのを防止しました。
 クライマックスの内容については、まあ私の興味本位です(笑)。例えば「カムバックアイコン」を「カムバック」「扉」…など人によって呼称が異なる可能性があるので、記入例を併記し多少の記入方法の誘導をしつつ、「カムバック」と入力いただいた場合も、最終的には「扉」と統一されるようプログラムの方で修正をしています。
 何度か同じプレイヤー名で回答があった場合は一番最後の回答を使用するよう、集計の方のプログラムを作成したため、「やっぱりデッキ変えよう」みたいな要望には直前まで応えられますが、Googleフォームを使用する際の注意点として「万一同じプレイヤー名が別々の参加者から回答された際をケアできない」というのがあります。あくまで小規模でそういった確認・ケアができる人数で運用可能なシステムという感じです。

図1. 参加者情報を登録してもらうGoogleフォーム

② 対戦会開始後はGoogleフォーム②より対戦結果を報告してもらうのみです。今回は「先攻プレイヤー名・後攻プレイヤー名・どちらが勝利したか・勝利プレイヤーのレベル&クロックはいくつだったか」の4つの回答をお願いし、報告の手間を少なくするため、すべて選択式にしました。
 先攻・後攻のプレイヤー名は対戦開始前にフォーム①の登録内容から、あらかじめリストを作成し選択式にしました。(スプレッドシートからコピペ)

図2. 対戦結果報告用のGoogleフォーム

③ あとは実行ボタンを押すだけでRStudioが全部やってくれるようにプログラムを書きました。プレイヤーごと、タイトルごとの対戦結果のサマリになります。収集したデータは色々と使いようなので、これ以外にももっと計算・可視化したら面白いデータがあるのかもしれません。私にはこれくらいしか思いつきませんでしたが…。なにかアイデアなどありましたらお聞かせください。
 ※Opp … 対戦相手の平均勝率 (ブシナビより)
 ※Opp2 … 対戦相手の対戦相手の平均勝率 (ブシナビより)

図3. 対戦結果のサマリ (使用デッキは隠すver.)
図4. 対戦結果のサマリ (使用デッキも表示するver.)
図5. タイトルごとの勝敗分布
図6. タイトル・クライマックス内容ごとの勝敗分布

3. まとめ

 Tonamelなどのアプリを実際に触ってみたことがないので蓋を開けてみればこんなシステムより簡単に、より便利に管理・集計できるかもしれません。私も機会があれば是非利用してみたいものですが、今回紹介した一連が、それのお手軽版くらいにはなっていればいいな、と思います。
 ちなみに紹介した内容は全て当日のものではなく、当日運用し「こういうものがあればばいいな」というものを継ぎ足したものだったりするので、実際に使用していただいた方がもしこのnoteを読んでいただいた場合は「お前こんなんちゃうかったやん」となってるかもしれません。えらいすんまへん。自作の環境だと使用感や要望によってもっと単純にしたり、もっと詳細にするなど需要に応えられるのは良い点だと思います。
 課題はマッチングの生成ですかねー。大規模な集まりとなると勝率の近い人たちでマッチングする、という方法で特に問題なく比較的簡単にマッチングを実装できるのですが、小規模な集まりでリーグ戦状態の場合、最後まで重複無く全試合を消化する組み合わせを作成するのは凄く難しく……。ちなみに当日は主催の方のくじ引きでマッチングを決定していました。
 最後になりますが、貴重な機会をくださった主催の方々、システム運用に協力いただいた参加者の方々に御礼申し上げます。

4. あとづけ(有料箇所)

 以下、Rのスクリプトべた張りになります。興味のない方には全く価値がなく、ある方にはもしかしたら価値があるかもしれない、その程度のもので1万字以上のスペースを使うのもアレなので、有料にして折りたたもうと思います。ご購入いただいてもスクリプトが見えるだけで、導入のサポートやバグフィクスを行うつもりはありませんので、ご了承の上ご覧ください。

ここから先は

12,604字

¥ 100