spread sheet を活用したVCT JPまとめ(失敗編)


VALORANT Champions Tour stage1の日本予選が終了しました。

大学のサークルにて大会に出る機会が増え、日本のメタを追うために個人的なまとめをしていました。
しかし、今まで使用していた表ではとても効率が悪いため、記述方法を一新。
今回の記事では、過去に使用していたプログラムと、その問題点をまとめます。

これは去年作成したspreadsheetで
1行をイベント名
2行を対戦相手
3行をMap名
4~21行をキャラクター名とし
ピックされたキャラは1 
ピックしていないキャラは0
と手動で入力しました。

前回の記事で紹介した方法を用いて、pythonに読み込んだ後以下のプログラムでピック率の計算を行いました。

worksheet_len = [ pd.DataFrame((workbook.get_worksheet(j)).get_all_values()) for j in range( len( worksheet_list ) ) ]
list_len = [worksheet_len[p].iloc[1].to_list() for p in range( len( worksheet_list ))]
#ilocのところに求めたい行を入れる
ave = 0
for j in list_len :#すべてのワークシートの1行目がJに入る
    int_list = [ int(k) for k in j ]#jの中身をk
    ave += np.mean( int_list )#シートの枚数分回して合計の平均値
ave_fin = ave/ len( list_len )
print(ave_fin)

その後、別のスプレッドシートに書き出す。

workbook = gc.open_by_key('')#スプレッドシートのトークン
worksheet = workbook.get_worksheet(0)
worksheet.update_cell(19, 2, ave_fin)#入力セル指定

もちろん、同じシートに書き出すことも可能

出力結果は以下のようになります。

生じた問題点
1.入力が面倒な上に効率が悪い
2.Mapやキャラの絞り込みが難しい
3.キャラが追加された際、プログラムの大幅修正が必要
4.これ以上の情報を得られない

1 について
 行がずれたことを確認しにくい。
 プログラムをキャラの回数だけ実行しなければならない。
 連続で実行しようとしてもspreadsheet側にはじかれる。
 1列目に文字を入れているとエラーが出て計算ができないために、計算段階で1列目を消す必要がある。
2について
 キャラのピック率を計算することとマップを絞り込むことの両立が技術的に不可能だった。
 このマップだけについて見たい!を簡単に作れない。
3について
VALORANTは2~3か月に1回ほどのペースでキャラ(エージェント)が追加されるが、そうなった際に以前使っていたシートを利用することができない。
入力ミスを防ぐためにロールごと分けていたが、もしデュエリストが追加されると後の行が1段ずつずれる。

補足
ここにおけるロールは
デュエリスト,センチネル,イニシエーター,コントローラー
であり、順に上からまとめていた。

4について
この表では、だれが何を使ったのかが記述されておらず、競技シーンの一番大事(だと勝手に思っている)な個性を生かしたピックが一切読み取れない。
拡張性もなく、何か追加で知りたい情報があったとしても同一のシート上で計算する要素を増やせない。

以上のように、一度作ってみたはいいものの、実用性もなく、没となった。
この程度の情報であれば、すでにインターネットにもっとわかりやすい形で情報があるので、
そちらを利用したほうがよいだろう。