自動でマッチング別勝率を算出するプログラムを作りました

お久しぶりです。 ゆづきです。 今回はタイトルの通りマッチング別勝率を自動で算出するプログラムを書いてみたので紹介したいと思います。

1. 開発背景

以前からゆづき式スイスドロー運営ツール1を使用して大会を開催すると手元に大会のデータが残るのでその活用をどのようにするかを考えていました。 ふとTwitterを見てるとぐうぐるい(@ggrui_Pokeka)さん、おすぎ(@osgggg)さんらがTwitterAPIを使用してポケモンカードプレイヤーがしたツイートから自動でシティリーグの分析を行っていることに衝撃を受けました。 また、ポケモンカード公式でもチャンピオンズリーグ終了後に大会の統計データとしてマッチング別勝率を公開するようになった2ことからプレイヤーからも大会開催後の分析データが求められていると感じたため作成に踏み切りました。

f:id:yuzuki-poke:20211025172034p:plain
図1 チャンピオンズリーグ2022京都マッチング別勝率

というのが建前で、以前からマッチング別勝率については興味があったがやる気が起きなくて放置していました。 ですが、ワクチン接種が進んだことからCOVID-19の影響が少なくなり、以前のように大会を開催できる可能性が高くなっていることやちょうど万代盛岡店で開催したBOX争奪戦をゆづき式スイスドロー運営ツールで行ったことため最近のデータが手に入ったため重い腰を上げて作ろうと決意しました。

2. プログラムの概要

ゆづき式スイスドロー運営ツールからスイスドローのマッチングと勝敗を取り込んでそれをもとにデッキ分布やマッチング勝率を算出します。 使用言語はGoogle Apps Scriptです。 ゆづき式スイスドロー運営ツールはGoogleスプレッドシートで作られているため、Google Apps Scriptを使用するとデータを抜き出ししやすい点と分析データをGoogleスプレッドシートで作ることによってGoogleドライブの共有機能で共有を容易にできるためです。

3. 万代盛岡店で開催したBOX争奪戦のデータに実行してみた

プログラムを実行するとデッキ分布とマッチング別勝率が作成されます。(図2および図3)

f:id:yuzuki-poke:20211025172304p:plain
図2 万代盛岡店BOX争奪戦デッキ分布
f:id:yuzuki-poke:20211025172340p:plain
図3 万代盛岡店BOX争奪戦マッチング勝率表
また、一覧でも見れるようにしました。(図4) フィルターをかけることで目的のデッキのデータが見れます。

f:id:yuzuki-poke:20211025172411j:plain
図4 万代盛岡店BOX争奪戦マッチング勝率一覧

4. 感想

意外と簡単にできたからもっと早くやればよかった。 このように感じたのはGoogle Apps ScriptやJavaScriptのプログラムを書くのに慣れたというのもありそうなので2019年の段階で作れたかは疑問かも。

今回は32人4回戦のデータを用いて分析を行いましたがもっと人数や試合数が多い大会で使用するとどのようなデータが得られるのかを検証していきたいと思います。