VTuberがポケモンランクマ配信すると対戦環境に変化があるのかをmetabaseで確認する。

今のガラルの状況

端的に説明されてるツイートがあったので引用します。

前置き

2020/11/6現在のシングル環境トップは大方の予想通りれいじゅうランドロスです。ただでさえダイジェット最強の現環境でこんな化け物きたらトップになるに決まってるだろ。

私はあまりゲームの配信は見ないのですが、特定の配信者の方の動画は例外的に見ています。私の好きなガラルがアローラになっていく中、以下の動画が話題になりました。

話題になってるのでここで改めて説明する必要はないと思いますが、一応概要を書くとこんな感じです。

  1. ゾロアークにねらいのまとをもたせてレジエレキに化ける
  2. レジエレキ(実際はゾロアーク)を見た相手がランドロスを出してくる or 初手ランドロスならランドロスで居座る
  3. そのままゾロアークのトリックで相手のランドロスにねらいのまとを押し付ける
  4. ねらいのまとの効果で、本来電気無効のランドロスに電気が効果抜群で入るようになる
  5. 電気が一貫するためレジエレキで全員倒す

ランドロスにねらいのまとを押し付ける戦法は以前からあったようなのですが、トリック役にゾロアークを採用したのは本当に天才だと思いました。
(この動画を投稿されてる方、毎回戦術が狂っていてめちゃめちゃ面白いので、対人戦をしていない方にも視聴をお勧めしたいのですが、トークの内容がセンシティブすぎて人を選ぶのでなかなかそうはいかないのがつらいです。)

今回の戦術は非常に強力で話題になっていたので、実際に環境にも影響があったのでは?と思いmetabaseで確認することにしました。

ゾロアークの持ち物に変化があるかを確認する

ランクマ実況の配信開始が2020/11/02 22:00なので、配信開始から2020-11-03 23時台までのデータで変化を確認してみます。
ポケモンホームのデータ配信時刻の取得に失敗して、何時間分かデータが欠損しているのですがそこは目をつむってください。

import json
import urllib.request
import sqlite3
import datetime
from contextlib import closing

# ポケモンホームのデータ配信時刻の配列
ts2 = [
    1604323178,
    1604326778,
    1604330378,
    1604333978,
    1604337577,
    1604341178,
    1604344778,
    1604348380,
    1604355578,
    1604359179,
    1604373579,
    1604377179,
    1604380780,
    1604384379,
    1604387979,
    1604395179,
    1604398780,
    1604405980,
    1604413180,
]

pokedex = ''
#  https://resource.pokemon-home.com/battledata/js/bundle.js の図鑑と持ち物情報を抜き出してjsonにしたものを読み込む
with open('./bundle.json', 'r') as json_open:
    pokedex = json.load(json_open)

user_agent = 'Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Mobile Safari/537.36'
headers = {
    'User-Agent': user_agent,
    'countrycode': '304',
    'authorization': 'Bearer',
    'langcode': '1',
    'accept': 'application/json, text/javascript, */*; q=0.01',
}

with closing(sqlite3.connect("zoroark.db")) as conn:
    c = conn.cursor()
    create_table = '''create table item (time text, item text, adoption_rate real)'''
    c.execute(create_table)

    for item in ts2:
        # シーズン12のシングルのID:10121
        url = f"https://resource.pokemon-home.com/battledata/ranking/10121/0/{item}/pdetail-3"
        pdetail = ""
        req = urllib.request.Request(url, headers=headers)
        with urllib.request.urlopen(req) as res:
            pdetail = json.load(res)
        dt = datetime.datetime.fromtimestamp(item)
        # ゾロアークの図鑑番号は571で単フォルム
        zoroark = pdetail["571"]["0"]["temoti"]["motimono"]
        for pokeitem in zoroark:
            sql = 'insert into item (time, item, adoption_rate) values (?,?,?)'
            c.execute(sql, (dt.strftime('%Y-%m-%d %H:%M:%S'),
                            pokedex['item'][pokeitem['id']], pokeitem['val']))
    conn.commit()

metabaseでテーブルを読み込ませます。v0.37.0.2を使いました。
VisualizationからLineを選ぶだけでグラフが表示されます。さすが簡単すぎる。

ほんとに使用率上がってて笑いました。すごいですね。

ゾロアークの使用率に変化があるかを確認する

使用率の順位を取得します。

import json
import urllib.request
import sqlite3
import datetime
from contextlib import closing

ts2 = [
    1604323178,
    1604326778,
    1604330378,
    1604333978,
    1604337577,
    1604341178,
    1604344778,
    1604348380,
    1604355578,
    1604359179,
    1604373579,
    1604377179,
    1604380780,
    1604384379,
    1604387979,
    1604395179,
    1604398780,
    1604405980,
    1604413180,
]

pokedex = ''
#  https://resource.pokemon-home.com/battledata/js/bundle.js の図鑑と持ち物情報を抜き出してjsonにしたものを読み込む
with open('./bundle.json', 'r') as json_open:
    pokedex = json.load(json_open)

user_agent = 'Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Mobile Safari/537.36'
headers = {
    'User-Agent': user_agent,
    'countrycode': '304',
    'authorization': 'Bearer',
    'langcode': '1',
    'accept': 'application/json, text/javascript, */*; q=0.01',
}

with closing(sqlite3.connect("rank.db")) as conn:
    c = conn.cursor()
    create_table = '''create table pokemon (time text, pokemon text, rank integer)'''
    c.execute(create_table)

    for item in ts2:
        url = f"https://resource.pokemon-home.com/battledata/ranking/10121/0/{item}/pokemon"
        pokemon = ""
        req = urllib.request.Request(url, headers=headers)
        with urllib.request.urlopen(req) as res:
            pokemon = json.load(res)
        dt = datetime.datetime.fromtimestamp(item)
        rank = 1
        for poke in pokemon:
            sql = 'insert into pokemon (time, pokemon, rank) values (?,?,?)'
            c.execute(sql, (dt.strftime('%Y-%m-%d %H:%M:%S'),
                            pokedex['poke'][int(poke['id']) - 1], rank))
            rank += 1
    conn.commit()

metabaseでy軸を昇順ではなく降順で表示する方法がわからなかったので、ちょっとわかりにくいグラフになっています。順位でプロットしているので、0に近づくほど使用率が高いです。
ゾロアーク自体は配信直後で大幅に使用率が変わったわけではないんですね。

シーズン12は刑期が終わったサッカーうさぎと準伝説とUBが跋扈するとんでも環境なので、7世代やってないし剣盾から対戦始めた人間には非常につらいです。地獄かな?