【S37 最終レート1826(792位)】スカーフブラックキュレム軸

Image

おくおくと申します。今回、かなりレアなスカーフブラックキュレムを軸とした構築で最終3桁到達したので構築記事を書きました。

意表をつけるポケモン探索をしていたところスカーフブラックキュレムの使用感が良いことがわかり、様々な伝説と組み合わせて試していました。結果、ザシアン、黒バド、カイオーガ、ミライドンで4桁帯で勝率7割近い構築ができたので、これらのうち最も環境に刺さりそうな構築で最終日潜ることに決定しました。

最終日ミライドンの構築で臨んでいたもののあまり勝てず、そこでカイオーガに切り替えたところ連勝して3桁乗れたという流れです。

ただ、カイオーガ構築については、強さをあまり理解できておらず、改良途中のものでしたので構築完成度は低いのですが、なぜか勝てたのでこちらで記事を書きます。

構築コンセプト

  • スカーフキュレムで意表をついて数的有利を取る
  • 特殊アタッカーを倒し、ヘイラッシャでTODする
  • 上記を実現するにあたり、スカーフキュレム+チョッキ伝説+ヘイラッシャを基本選出とする

後半で選出について記載していますが、7割キュレムカイオーガ、ヘイラッシャで選出していました。

個体紹介

ブラックキュレム

キュレム(ブラック) @ こだわりスカーフ
テラスタイプ: でんき
特性: テラボルテージ
性格: ようき
210(76)-222(252)-121(4)-126-111(4)-150(176)
げきりん / つららばり / クロスサンダー / シャドークロー

調整意図

S:スカーフ込みで最速黒バド+3、準速ウーラオス抜き

A:ぶっぱ

H,B,D:あまり

本構築の軸の1体。氷と電気の攻めの相性補完が良く、電気テラスを切ればヘイラッシャも確2。シャドークローは多くのメガネ黒バド、スカーフ黒バドを葬ってきた。襷黒バドもシャドークローでタスキまで削った後、裏のカイオーガ引きで相手がノマテラで突っ込んできた場合も、受けてきた場合(ノーマルアルセや、悪タイプや、物理受けへの引き)に有利をとることができた。切られた場合でもこだわりリセットでスカーフを残せているので大きな問題にはならなかった。

氷打点がつららばりのため、運ゲーになってしまうのが残念なポイントだった。

初手に出すことでミラコラのスカーフ判定ができるのが強みではあるのだが、相手視点でS判定されていることに気付いているケースと気付いていないケースがあるようで、安定しなかった。。

カイオーガ

カイオーガ @ とつげきチョッキ
テラスタイプ: フェアリー
特性: あめふらし
性格: ひかえめ
205(236)-108-110-209(156)-160-125(116)
しおふき / なみのり / かみなり / テラバースト

調整意図

S36の構築記事のチョッキカイオーガから適当に選択したのみ。

構築の軸の一体で特殊受け&特殊アタッカー。水タイプに体選出をする場合が非常に多いので基本はカイオーガにテラスを切っていた。

ミライドンにもカイオーガは選出するかつ、ミライドン入りが12戦あった内、10戦がミライドン初手で出てきており、こちらもカイオーガ初手で選出しフェアリーテラバを打つとアドが取れることが多かった。おそらくだが、地面テラスを読んで流星群を打ってくるケースが非常に多かった。

ステロ吹き飛ばしをしたいのか、ディンルーもちょいちょい選出されたが、カイオーガのおかげで選出された試合は100%勝利していた。

ヘイラッシャ

ヘイラッシャ @ たべのこし
テラスタイプ: ノーマル
特性: てんねん
性格: わんぱく
257(252)-120-176(196)-76-91(44)-57(12)
じわれ / あくび / まもる / ねむる

調整意図

前期最終1位の型の調整そのまま

本構築の軸の一体で物理受け&TOD要因。基本的には、キュレムカイオーガで特殊アタッカーを全滅させたうえで、数的有利を取り、あとはまもる、あくび、ねむるを適当に選択するポケモンTODを早く終わらせるために地割れを採用。地割れである必要はなかったが、過去使ったことなかったのでお試しで採用した。

1試合、ほぼ負け状態のところを交代際のミライドンに対して地割れが当たり勝ち確という試合があり、運でひっくり返すことができる技という点ではよい技だと思った。

ハッサム

ハッサム @ こだわりハチマキ
テラスタイプ: ノーマル
特性: テクニシャン
性格: いじっぱり
175(236)-200(252)-121(4)-67-101(4)-87(12)
バレットパンチ / とんぼがえり / はたきおとす / インファイト

調整意図

S36構築記事よりハチマキハッサムから選択

ごくまれに選出。基本選出が通らなさそうと判断した場合に、白バドがいる、毒びしが厳しそう、ハチマキバレパンでスイープできそう、とんぼがえりで削りを入れたいなどの条件を加味して選出した。

ランドロス

ランドロス(霊獣) @ ゴツゴツメット
テラスタイプ: みず
特性: いかく
性格: わんぱく
195(244)-167(12)-156(252)-112-100-111
じしん / とんぼがえり / ちょうはつ / ステルスロック

調整意図

通常のHBランド

ミライドン系統でヘイラッシャをどうしても出したくない場合にヘイラッシャの代わりに選出したり、特殊アタッカーを考慮する必要がない場合にカイオーガの代わりに選出した。

レジエレキ

レジエレキ @ きあいのタスキ
テラスタイプ: ノーマル
特性: トランジスタ
性格: ひかえめ
160(36)-108-92(172)-167(252)-71(4)-226(44)
10まんボルト / ボルトチェンジ / だいばくはつ / でんじは

調整意図

C:特化

S:本構築のスカーフキュレムのS+1

HB:陽気ウーラオスの水流連打確定耐え(陽気スカーフはスカーフキュレムもレジエレキも抜けていないため)

D:あまり

顔枠。ブラックキュレムと合わせて、壁展開と誤認させるためのポケモン。このポケモンのおかげで、初手スカーフポケモンが選出されることが多かった様子。水タイプの被選出率がヘイラッシャ22%、ウーラオス33%と低かったのでレジエレキの影響があったのかもしれない。

51戦中3戦選出し0勝なので、型は違う方が良かったかもしれない。

選出と勝率

全体の7割が初手:キュレムorカイオーガ、裏:←の片方、ヘイラッシャであった。

白バドの被選出率が8割近くあったが、勝率3割程度だったのでそこが大きな課題点であった。

選出分析

被選出分析

あとがき

今回初めて、1体のポケモン(&型)を固定して構築の開拓を進めるという取り組み方を実践しました。約2週間の期間で行ったのですが、知見が蓄積されてそこから構築をどんどん進化させていくことができたのが、とても良い経験となりました。(キュレム+ザシアン構築でのザシアンの相棒だったチョッキガチグマ+カイリューでの対戦経験から、スカーフキュレム+チョッキ特殊アタッカー+物理受けが強そうという仮説が立てられ、チョッキ特殊伝説+最強物理受けヘイラッシャが強いのではという発想まで落とし込めた)

これから少し仕事が忙しくなるのでレギュI潜るかは未定ですが、Championsのランクマは潜るので、これからも精進してまいります。

対戦ログをAI(ML)に食わせて、環境分析させてみた

ご無沙汰しております。おくおくです。
ポケモンSVになってから、これまでExcelで管理していた対戦ログを、Googleスプレッドシートにて取得・分析しながらポケモン対戦を進めています。

現状、伝説ポケモンが2体解禁された環境の1シーズン目ということで、強いポケモンが徐々に明らかになってきています。
そこで今回は、Googleスプレッドシートに記録した対戦ログデータをクラスタ分析で分類し、環境分析を試みた結果を共有します。

結論

対戦ログから、以下の情報を抽出・可視化することができました。

  • 存在する構築系統

  • 各構築系統における代表的なポケモン

  • 各構築系統のマッチング頻度

分類結果を見たい方は、「k=8の場合」の部分をご確認ください。

分析の前提条件

  • 分析対象:5月8日~5月15日の期間における、3桁前半~4桁前半の100戦分のデータ

  • データクレンジング:個体数の少ないポケモンを含むパーティ(例:ミュウツーなど)は除外

  • 分析手法:k-means法

    • クラスタ数(k)は2~10で出力し、目視で分類の妥当性を確認

分析結果

k=8の場合が最も妥当と判断しました。ここではクラスタ分析の概要説明を含めて、k=2の場合とk=8の場合の結果を報告します。

k=2の場合

この結果はあくまで一例です。100戦分の構築を2つにクラスタリングした結果は以下の通りです。(画質が不十分な部分があるかもしれませんが、ご了承ください。)
それぞれの構築群の中で、採用頻度の高いポケモンTOP10を列挙しました。

  • Cluster0:攻め主体構築

  • Cluster1:受け主体構築

攻め主体の構築内でもさらに細分化が可能であるため、クラスタ数を増やすことで、より詳細な分類ができると考えました。

構築を2つに分類

k=8の場合

同様に100個の構築を8つに分け、各構築群の中で採用頻度の高いポケモンTOP10を列挙しました。

各構築群の概要
  • A:受け回し構築(毒を含む)

  • B:対面構築(パオを中心、伝説枠として黒バドを採用)

  • C:バドザシ対面構築

    • ザシアンと相性補完が良いカイリュー、黒バドと相性補完が良いディンルーが高採用。

  • D:バドコライ構築

  • E:ミライザシ構築

  • F:ミライドン軸構築

  • G:白バド構築

    • 電気×氷の組み合わせでミライ白バド、白バドが攻めづらい、鋼、氷、に強く出れるカイオーガと組まれている。

  • H:ルナアーラ構築

    • 晴れ月光ができるコライドンと組まれることが多い。

構築を8つに分類part1

構築を8つに分類part2
Aに属する構築

Aと判断された構築を以下に示します。自分の構築と照らし合わせて、Aに対して有効な対策があるかを確認しましょう。
Aへの対策が不足している場合、さらにAを細分化して分析を深めるのも一つのアプローチです。

Aに該当する構築一覧

まとめ

直近の対戦結果を基に、構築を効率的に分類・可視化できました。これにより、対戦環境の傾向を客観的に把握できるようになりました。

あとがき

今回は機械学習(ML)を用いて、対戦ログを分析しました。文字だけの羅列では理解が難しいですが、クラスタ分析と可視化を組み合わせることで、データの特徴が一目でわかることを実感しました。

今回の分析に使用したPythonスクリプトは、ChatGPTに依頼して1時間程度で作成しました。今回の分析では、結果自体の精度よりも、素早くビジュアライズできることが重要です。出力結果を初期仮説として利用し、異議があれば再分類して検証する流れが効率的だと考えています。

この記事が皆さんの対戦環境分析の一助になれば幸いです。分析に使用したスクリプトや、対戦補助スプレッドシートに関する質問があれば、DMにてお気軽にご連絡ください。

対戦補助スプレッドシートokuokuch/pokemon_sv_vs_support: スプレッドシートで、ポケモン対戦の補助をするためのツールを作成

Xアカウントメイン垢:@okuokuch ←最近あまり利用していません2025/5/16

Xアカウントサブ垢:@okuoku_02

 

【S14最終レート1985(660位)】ガオカイサフゴ(レンタルあり)

どうも、おくおくです。 家事育児が忙しく記事の更新ができていなかったのですが、満足できる結果が残せたので、ポケモンランクバトルシングルのS14にて使った構築紹介をします。

また、剣盾時代にはエクセルを使って分析していましたが、SVではGoogleスプレッドシートを使って分析していますのでそのデータも掲載します。構築経緯等でスプレッドシートを参照しながら解説していますので、必要に応じてスプレッドシートを参照ください。

スプレッドシート

対戦補助スプレッドシート_第四版_S14おくおく公開用 - Google スプレッドシート

目次

使用構築、コンセプト

努力値、実数値
2月いっぱい公開しておく予定です。

コンセプト

構築経緯

基本軸の経緯

過去使用していたポケモンを含めつつ、新ポケモンを試していたところ、今まで通りBig6系統が強いと感じた(パーティ1~5)。前シーズンでHDランドロスが強かったので、威嚇持ちのガオガエンにチョッキを持たせたところ使用感が良かったので、前シーズン使っていた鉢巻カイリュー、ゴツメサフゴと合わせつつ、ガオガエンの補完枠を検討(パーティ6~14)。ガオガエンが重い水に対して強く出れる水タイプ・草タイプのポケモンを試していたが、草タイプは初手スカーフ水ウーラのとんぼ返り・水流連打の択がつらく、補完枠として不適であることが判明。また、全体的に足が遅かったので、高速アタッカーor先制技持ちポケモンの試行錯誤も実施し、ゴリランダー、スカーフラティオス、ブエナカミ、タケルライコ等を試したが良いポケモンが見つかっていなかった(パーティ6~16)。

ここまでで200戦ほどしていたが、ブリジュラス筆頭のステロ環境でガオガエンでサイクルするのは弱かったのかもしれないと感じ始めた。ただガオガエン、サフゴ、カイリューのタイプ相性の良さは実感していたので、対面的に動けるようにガオガエンをイーユイに変更(パーティ16,17)。パーティ17は勝率が低かったのだが、高速アタッカー枠にパオジアンを採用しており、パオジアンの圧でステロ撒きを呼ばないorステロ枠にテラスを強要できることがわかったので再度ガオガエンを採用しパオジアン、ガオガエンカイリュー、サーフゴーを軸にするパーティが完成した。

補完の経緯

受けルや毒菱展開に対して、強く出れる毒テラスうずしおアシレーヌを採用(パーティ14~)。相手視点はガオガエンの補完枠として見えるので、渦潮を警戒されにくかったのではないかと思っている。

また、構築単位でブリジュラスが重いので、ガチグマ暁を対策枠として活躍させることができた。地面枠としてとりあえず入れていただけだったのだが、ミラコ型に対するあくび、持久力ボディプレ型に対する毒テラス、頑丈型に対するしんくうは等、必要な技はそろっていると感じた。

個体解説

カイリュー

  • S:S4振りランドロス抜き
  • A:11n
  • HP:16n-1(ステロ被ダメ意識)

Sラインのみ調整意図あり。それ以外は、効率が良くなる数値があったのでそれを採用。ランドロスvsガオガエン対面でステルスロックを撒いてくるランドにカイリューを後出しし、アイススピナーで倒すという流れが頻繁にあった。

ゴースト、鋼がいない状態でのノマテラ神速が強かった。

サーフゴー

  • HP:奇数調整
  • B特化

HB特化。ガオガエンからの引き先、電磁波によりS操作(+しびれ)でスイーパー(主にカイリュー)の補助をする。初手の水ウーラをサーフゴーで受けるというのが最も多い使い方だった。スカーフが最も多かったので、水ウーラにはめっぽう強かった。ただし、初手とんぼ返りの場合に、炎オーガポンに引かれるケースが多く択+電磁波命中率の勝負になることがあった。水テラスをして電磁波を打つのだが、水テラス読みでパワーウィップを撃ち込まれることが何度かあった。ガオガエン引きもあり得るので、その選択は微妙なのではと思いつつ、水テラゴツメサフゴが重すぎてそれしか勝ち筋がなかったのだと思う。

ガオガエン

  • HP:奇数調整
  • A特化

対面性能高く、クッションや対面操作等も可能。叩き落とすでアイテム判定も可能と強い点が多かった。しんそくの通りが悪い、鋼、ゴーストに強いタイプなので、カイリューから入り、上記テラスを誘いガオガエンで倒すというケースも何度かあった。

ハバタクカミとの対面はすべて勝てたと思う。ブエナ型であればフレアドライブでワンパンできることがほとんど。メガネ型であれば叩き落とす→フレアドライブで倒せる。HPが1でも残っていたら、こだわり解除、ステロダメを耐えれるならいかくで利用できるのでなるべく残しておくのが良い。

とつげきチョッキ採用率は低いので、捨て台詞読み挑発をされることも多く、1ターンアドをとれるケースがあったのもよかった。

パオジアン

  • 意地っ張りAS。

ステロ撒きへの圧ポケモンガオガエンカイリューとステロの刺さりが良い構築なので、ステロ撒きが出てくることが多く、パオジアンが有利に動けるケースが多かった。聖なる剣はBの上がったブリジュラスへの打点として利用できるので採用していた。

草テラスは、ラグラージスイクン、水ウーラ、アシレーヌへの打点として利用できたのが良かった。

ガチグマ暁

  • こちらの記事の調整を採用。

【S13 最終22位(2135)】ツキとスッポン【ポケモンSV】 - ゆうがたのカルボナーラ教

特殊の高火力が欲しいとき、あくびで対面を流したいとき等に選出。毒菱改修もできるので、場合によっては改修枠として選出する場合もあり。

ブリジュラス、トドロクツキ、キラフロル等にだしていた。

アシレーヌ

渦潮でステロ撒き、毒菱要因をキャッチし、サイコノイズ(うるおいボイスで水タイプ)で回復を封じながら倒す。ディンルー、ドヒドイデコータスにはHPを削られることなく倒すことができた。晴れターンを枯らす目的もあるので、コータスをキャッチした場合は、バインドぎりぎりのターンで倒せるように気を付けた。

選出

選出一覧

選出数の多い選出について意図や動かし方の説明。具体的にどのようなパーティ時に選出しているかと勝敗に関してはスプレッドシートの「log」シートに記載があるのでそちらを確認ください。

パオジアンの刺さりが良いときに選出。格闘・鋼打点が飛んできそうな時の引き先にサフゴ、炎・鋼打点が飛んできそうなとき用にガエンを控える。ハバタクカミをパオ、サフゴ・ガオガエンで倒しつつほかのポケモンを削っておき、カイリューの神速圏内にいれてスイープというパターンが多かった。

添付図のパオ・サフゴ・カイリューで出した場合に炎打点が出された場合も、オーガポンであればつららで削ることが可能で、イーユイであれば素早さ判定後、聖なる剣で圧をかけられる。

  • ガエン・サフゴ・アタッカー(カイリューorパオorガチグマ)(緑色)

ガエン・サフゴでサイクルを回して、型判別、削りを入れた後にアタッカーを通す。添付図の通りガエン・サフゴは地面以外で相性補完が良い。アタッカーをカイリューにした場合、そこに飛んでくる地面技をカイリューで透かし、ガチグマ→けたぐり、ランドロス→アイススピナーでワンパンする。

  • 初手アシレ(青色)

ステルスロック、毒菱、晴れパ等で初手要因を渦潮でキャッチしたい場合に選出。ペリッパーやアロキュウはキャッチしてもトンボで逃げられたり、アンコール等されるのであまり有効ではないのは注意。

  • 初手サフゴ(紫色)

コノヨザル入り、グライオン入りの場合に選出。コノヨザルに対して初手電磁波で安定して型判別ができる。殴ってしまうと憤怒のこぶしの威力が上がるので、でんじは、じこさいせいで祟り目圏内まで入れ(かつ電磁波麻痺があればなおよし)、祟り目で倒す。

結果

最高レート1998から1敗したところで終了しました。

Special Thanks

  • 個体提供をしてくれたエキドナ様(A0色コレクレー)、ゼクス様(オシャボA0ガチグマ、C0パオジアン等)
  • 自動化スクリプトを提供してくださる自動化サーバーの皆様
  • 対戦補助スプレッドシート共同開発者のしゅみる様

あとがき

対戦補助スプレッドシートについて

記事中でも載せている対戦補助スプレッドシートは、下記ページの導入方法から誰でも導入可能です。使用方法については、2024年2月1日時点でマニュアル整理中ですのでお待ちください。テスター募集も近日中に行う予定で、テストしてくれる方には、導入補助、伝説準伝説ポケモンの提供をする予定です。

github.com

今期学んだこと

  • vanさんの記事

自分の構築の強さ、弱さの言語化をするためのフレームワークとして利用させていただきました。試しとして利用していただけなので、ダメージ層については未使用でしたが、今後努力値調整する際に、意識したいと思います。

note.com

  • おかのんさんのポケラジ

おかのんさんは、ポケモン対戦の言語化を丁寧に行なわれた実況動画をほぼ毎日投稿されている方です。半年前から視聴しているのですが、毎週月曜日は作業用BGMとしてラジオを公開されています。圧ポケと特殊な対策枠を1ポケモンに圧縮できるのがベスト、ミミズズみたいな1体で特定のポケモンを対策して枠を圧縮するのではなく、並びで対策して対応範囲が広いほうがベター等学びが多かったです。

www.youtube.com

【LINEBot】ポケモンの情報をLineで簡単に見れえるようにする

どうも、おくおくです。

Twitterにて報告して好評であったLINEBotに関してまとめた記事がなかったので作成しました。 LINEのQRコードと簡単な紹介を書いています。 用いた技術(Pythonのコードやサーバーの設定など)に関しても、後日記事にしたいと思っています。

1. ポケモンbot
こちらは、ポケモンの名前、タイプ、特性、種族値を出力してくれるbotです。
ポケモン名を入力すると情報一覧を返信してくれます。 登録名と異なる場合は、情報一覧を返してくれないのですが、クイックリプライという機能があり、似たポケモンの名前を出力してくれるのでそちらをクリックすることで情報一覧を返してくれます。

f:id:okuokuch:20220116144718p:plain
ポケモンbot使用例
f:id:okuokuch:20220116144341p:plain
ポケモンbotQRコード

2. S実数値bot
こちらは、S実数値を出力してくれるbotです。
少し使い方が難しいので、詳細は動画で説明しています。
基本はポケモン名を入力すると、無振り、準速、最速の素早さ実数値を表示してくれます。また、ポケモン名の後に改行して+1や-1などのランク補正を入れたり、実数値を入れることで素早さに補正を掛けた値も出力してくれます。さらに、ポケモン名の後に改行をして別のポケモン名を入れることで2匹以上のS実数値を比較することができます。

f:id:okuokuch:20220116145141p:plain
S実数値bot使用例
f:id:okuokuch:20220116145033p:plain
S実数値botQRコード
↓3分でS実数値botの使用方法を説明しています。

youtu.be

3. 採用率bot for シングル
こちらは、ポケモンHOMEの値を出力してくれるbotです。 ポケモンHOMEのデータに関しては、私が暇なときに更新しているだけなので、最新の情報ではありません。
このBotは完成品ではないので、QRコード載せていません。TwitterをさかのぼればQRコードがあるので使ってみたいって方はTwitterをさかのぼるか、おくおくまでご連絡ください。
有料のサーバーを立てれば定期的に更新できるものを作れるはずなので、趣味用にお金を稼ぐ手段が作れたら完成版として実装する予定です。

以上、簡単にはなりますが今まで作ってきたLINEBotの概要となります!
これからもどんどん面白いツール作っていくので、興味ある方はTwitterYouTubeのフォローお願いします。

Twitter:おくおく (@okuokuch)

twitter.com

YouTubeチャネル:

https://www.youtube.com/channel/UCZBTAdesZ9aJjSJ33RXy8bw

対戦補助エクセルver4.1_β版配布

どうも、おくおくです。
前回記事から3か月開いていました。。
応援コメントなどちょくちょく来るたびに、モチベが上がりつつプライベートも忙しくということで進んでおりませんでした。

ところが、今回は無事対戦補助エクセルver4.1のβ版を公開することになったので記事化させていただきます。
基本的にはバグなく使えると思うのですが、予想だにしないバグが時々あるので、β版という形です。
何かしらエラーが見つかりましたら、おくおくまでご連絡ください。

twitterなどで告知していたのですが、今回からエクセル自体にパスワードかけておりません。
シートの保護などかけていますが、自由に解除できる状態です。
意図せず変更してしまいエクセルがおかしくなるということもありますので使用する際はご注意ください。
VBAの部分にはパスワードかけています。そちらの方のパスワード知りたい方はご連絡ください。
一緒に開発してくれるor改良してくれる方募集中です。笑
↓のフォルダに対戦補助エクセルver4.1が入っています。シングル用とダブル用があります。
最新版はver4.2です!そちらをご使用ください
drive.google.com
ダブル用は作ったのですが、使ってはいないので、不具合が多いかもしれません。
何か見つかったらご連絡ください。

以下、各画面のスクショと簡単な説明です。

1.マイパーティ

こちらの画面で、自分のパーティのポケモン努力値などを記入します。こちらの値をもとにダメ計などが行われます。

2.選出画面
2.選出画面

こちらの選出画面で、相手の選出や自分の選出を選びます。選出に必要な情報をこの画面で見れるようにしています。

3.ステータス変化

ステータス変化を記入するシート。対戦中のダメ計に用いる。相手や自分の状況から、画像認識で読み込めるようにするかもしれない。

4.ダメ計
4.ダメ計

ダメ計結果を見るシート、マイパーティで設定した技や、相手からのダメ計はポケモンHOMEの使用率の技のダメ計をしている。

5.対戦記録

対戦記録をつけるシート、選出シートからこちらに転記されるようになっている。個々の記録をもとに色々分析ができるようにしている。
日時や順位などの情報も入れられるようにするかも。日時は簡単に入れれるが、順位やTNなどは画像認識する必要があるので、少し難易度が上がる。

6.対戦分析
6.対戦分析

対戦記録の結果をもとに分析をする。相手のポケモンに対する分析と、こちらの選出に対する分析ができるようになっている。


以上でおおよその説明となります!
この他にもいろいろなシートがあるのですが、上記にあげたシートをサポートする(ポケモン一覧、技一覧、ポケモンHOMEの内容一覧etc.)となっていますので、説明は割愛します。
使用法に関しては、各シートに記載しているのと、使用法を記入したシートがあるのでそちらをご覧ください。
ショートカットキーを色々設定しているので、そちらもご使用ください。(googleドライブを通してダウンロードしたときに設定が外れる可能性があるので、その場合はご連絡ください)
選出ポケモンの部分は画像認識も使えるのですが、そちらに関しては現時点(2021/9/3)で配布していません。
こちらに関しても整い次第告知するのでもう少々お待ちください。

それでは長文になりましたが、ここまでお読みいただきありがとうございました。
では、次回の更新をお楽しみにお待ちください。

対戦補助エクセルver4作成ログ~その1~

どうも、おくおくです。
最近ツイッターで、「対戦補助エクセルver3を大幅アップデートする予定」と宣言しています。どこを改良していくかというのは頭の中で考えていたり、思いついたらツイートしたりしていますが、忘備録として記事化しようと思います。
変更点に関しては最後にまとめているので、そちらが気になる人はラストまで飛ばしてください。

まずは、現状の対戦補助エクセルver3と分析用エクセルについてのまとめと改良予定です。

○対戦補助エクセルver3のシート一覧(普段非表示のものも含む)
・マイパーティ
 自分のパーティを登録するシート。記入が面倒なので、画像認識により自動記入できるツールを導入予定。
・pokemon_status
 ステータス表、この表からタイプや種族値などを取得している。変更はなし。
・選出ポケモン
 選出時に見る画面。マクロで相手ポケモン名を半自動記入できるが、それでも20秒はかかる。画像認識により相手ポケモンを記入できるようにする。
 ここを見て選出を選ぶので、このシートでポケモンHOMEのデータを見れるようにする。過去対戦記録データもこのシートで見れるようにする。
 このシートor別シートに類似構築検索機能を付ける予定。
 情報があふれるので、マクロで各項目の表示、非表示を選べるようにする。
・ダメージ計算
 ダメージの概算計算ができる。きちんとした計算ができるように修正するつもりだが、ver4では行わない?
メタモンダメージ計算
 メタモン用の計算表。竜王戦時に使えるかと思い追加した。あまり使う用途がなさそうなので削除予定
・対戦記録仮置き
 選出ポケモン画面から選出ポケモンなどをコピペするシート。コピペはマクロで行うようになっている。
 今までこの記録を分析するツールが別ブックだった。ver4では、同じブックに統合する
・選出できるくん
 お試しで作ったツール。使えないことが分かったので削除。
 対戦記録を集めて機械学習させることで選出AIを作れるかもしれないと思い模索中。
 もしそれが完成したら、選出できすぎくん、となり再登場予定。
・メタポケモン一覧
 選出ポケモンの半自動入力の際に現れるポケモンが記載されている。編集可能なので、各々カスタマイズ可。
・使用法&注意点
 使用説明書。長くて読まれないことも多いようなので、各シートにショートカットキーなど記載するようにする。
 確かに、ショートカットキー忘れることなどもあるのでそちらのほうがよさげ。
・変更ログ
 修正した際に記載。
・技、アイテム使用率一覧(普段非表示)
 ポケモンHOMEの値を記した表。このシートの値を読み取って、各シートで表示しているので、このシートを更新しないと古いデータを使い続けることになる。最近、ポケモンHOMEのデータをCSVするツールを開発、公開した。そちらを使うことで、各々ランクマ潜る前に最新のデータに更新できる。
 早く実装したい。
・技一覧(普段非表示)
 技一覧表。ダメージ計算時にこの表からデータを取得している。カタカナとひらがなが違ったりすると、値が取得できないのはこの表からデータを取得しているから。
・アイテム補正(普段非表示)
 いのちのたま、とつげきチョッキなどアイテムのデータがまとめられている表。
・性格補正(普段非表示)
 性格とステータス倍率をまとめた表。これをもとにステータス計算をしている。
・タイプ表(普段非表示)
 タイプ相性表。これをもとに、タイプ相性倍率の計算をしている。

○対戦記録解析ver3のシート一覧
・対戦記録テンプレ
 対戦補助エクセルの対戦記録仮置きと同じ。統合するので、これは削除。
・相手分析
 勝率や被選出率がまとめられる表。こちらは対戦補助エクセルの方に移行する。
 ウーラオスの仕様などマイナーチェンジを入れる。
 このデータを選出ポケモンシートに反映するようにする。
・選出分析
 どの選出をしたときに勝っているかが表示される。勝率の高い選出は、選出ポケモンシートに表示されるようにしてもよい?
・pokemon_status(普段非表示)
 対戦補助エクセルのものと同じなので削除。
・計算(普段非表示)
 選出分析の計算をする際に使用するシート。
 初手とポケモン1,2の順列でポケモン1,2は組合せであるので、それを選手分析の形に持っていくのに実は一苦労している。
 強引に計算しており、マクロの中身やこのシートの中身はなかなかに汚いので公開しない。笑

ver4で予定している変更点
●対戦補助エクセルと分析エクセルの統合
●選出ポケモンシートで見れる情報の変更、レイアウト変更
●画像認識ツールの導入(私用対戦補助エクセルでは導入済み)
ポケモンHOMEのデータ更新ツール配信
●分析ツールの最適化
●類似構築検索機能追加
●不必要な機能削除
●説明書の充実(各シートにショートカットキーを載せておくなど)
以上が主な改善点となります。

地道にバージョンアップしていきますので、気長にお待ちください。
では、また会える日を楽しみにしています。

twitterアカウント 「おくおく」 : https://twitter.com/okuokuch
メールアドレス:okuokuch@gmail.com

ポケモンHOMEの情報をエクセル,CSV形式出力

どうも、おくおくです。
最近は、 Pythonを使うことで対戦補助エクセルの機能性向上を目指し日々尽力しています。
今回ですが、対戦補助エクセルにも入っている「ポケモンHOMEのデータ」を「エクセル」に出力する方法が確立したのでそちらのご報告です。

とりあえず、物から紹介。Windowsならこれをダウンロードして使えばオッケーなはず!Macに関しては詳しくわからないのですが、pythonの中身をコピーして。多少修正してもらえば使えるはずです。
自分の別PCでダウンロード&使用したのですが、ウィルス対策ソフトで危険ですという表示が数回出ました。。
確かにデジタル署名など取ってないので盲目的に信頼してくださいとしか言えない状態です。
exeファイル使用するのが嫌であれば、下記で紹介しているpythonのコードを使ってもらえれば
対戦補助エクセルに必要なcsvは取得できるので、その対応をしてもらっても大丈夫です。
drive.google.com
こちらがexe化したものです。ダウンロードして起動させたら、ポケモンHOMEのjsonファイルとそれから必要な部分を切り取ってcsvとして出力してくれます。

続いて、中身に関してです。基本的には下記サイトに記されていることの合わせ技です。
retrorocket.biz
intellectual-curiosity.tokyo

ポケモンHOMEのAPIをたたいて、JSONファイル(ポケモンHOME内でまとめられている情報)を取得しています。↑のサイトを見るとわかるのですが、一つ目のJSONファイルには各シーズンやルールについて、この番号ですよという数字が決まっており、それを出力してくれます。
その情報をもとにもう一つのAPIをたたくことで、ポケモンの情報が出てきます。
以下がpyhonのコードの中身です。

import requests
import json
import pandas as pd
import sys
import os

#この部分は、EXE化するときに用いる部分。EXE内にjsonファイルからcsvに変換するのに使用するファイルが保存されている。
#そのファイルを読み出すための記述。
def resource_path(relative_path):
    if hasattr(sys, '_MEIPASS'):
        return os.path.join(sys._MEIPASS, relative_path)
    return os.path.join(os.path.abspath("."), relative_path)

#ここからが、一つ目のAPIをたたくための部分。pythonでたたくときは、headerとdataをここで指定する。
headers = {
    'accept': 'application/json, text/javascript, */*; q=0.01',
    'countrycode': '304',
    'authorization': 'Bearer',
    'langcode': '1',
    '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',
    'content-type': 'application/json',
}

data = '{"soft":"Sw"}'
#↑で設定したheaderとdataを用いてAPIを叩いて得られたjsonファイルを保存している。requestはwebページから情報を取ってくるときに使用できる。
#別アプリで、ポケ徹さんからポケモンや技データを取得した際にもこのrequestを使っている。
response = requests.post('https://api.battle.pokemon-home.com/cbd/competition/rankmatch/list', headers=headers, data=data)
with open("pokemon.json","w",encoding="UTF-8") as f:
    f.write(response.text)

with open("pokemon.json", "r", encoding = "utf-8") as f:
  data = json.load(f)["list"]

# jsonファイルからタームごとに必要な情報だけを配列にまとめる
terms = []
for season in data:
  for id in data[season]:
    terms.append({"id" : id, "season" : data[season][id]["season"], "rule" : data[season][id]["rule"], "rst" : data[season][id]["rst"], "ts1" : data[season][id]["ts1"], "ts2" : data[season][id]["ts2"]})

term = terms[0]
 # terms[0]は最新シーズンのシングルバトルの詳細。対戦環境の取得。
id = str(term["id"])
rst = str(term["rst"])
ts1 = str(term["ts1"])
ts2 = str(term["ts2"])

#1つ目のjsonファイルから得た情報を用いて、ポケモンのデータのまとまったjsonファイルを取得する。
#5つに分かれているので5つ分取得保存。
for x in range(1,6):
    adress = "https://resource.pokemon-home.com/battledata/ranking/"+id+"/"+rst+"/"+ts2+"/pdetail-"+str(x)
    headers = {
        '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',
        'content-type': 'application/json',
    }

    response = requests.get(adress, headers=headers)
    with open("pokemons_file"+str(x)+".json","w",encoding="UTF-8") as f:
        f.write(response.text)

#↑で得られたjsonファイルは技名やポケモン名、アイテム名が番号で記入されている
#技id1は「はたく」、アイテムid1は「マスターボール」など
#これらのidと技名を変換する表を読み込んでる。適当に作ったのでencodingなど違う。
#これら表がほしければご連絡ください。自分で作ってもらってもOKです。
move_df = pd.read_csv(resource_path("move_id.csv"),encoding="shift-jis")
poke_df = pd.read_csv(resource_path("poke_id.csv"), encoding="UTF-8")
item_df = pd.read_csv(resource_path("item_id.csv"),encoding="shift-jis")

#jsonファイルの情報をpandasのデータファイルに保存している。
#jsonファイルの中身を見てもらえればわかるが、ポケモンNo.→リージョンフォーム→「temoti」→[waza]or[item]という形に分かれている。
#それらを取得できるように記述している。
#CSVから対戦補助エクセルに移す都合上、技用のものとアイテム用のものを分けて保存している。
Home_poke =pd.DataFrame()
Home_poke2 = pd.DataFrame()
for y in range(1,6):
    with open("pokemons_file"+str(y)+".json","r") as f:
        json_read = json.load(f)
        for x in json_read:
            id = poke_df[poke_df["id"]==int(x)]
            for y in json_read[x]:
                list=[]
                list2=[]
                name = id[id["リージョン"]==int(y)]
                list.append(name.iloc[0,3])
                list2.append(name.iloc[0,3])
                for z in json_read[x][y]["temoti"]["waza"]:
                    move = move_df[move_df["id"]==int(z["id"])]
                    list.append(move.iloc[0,2])
                    list.append(z["val"])
                Home_poke = Home_poke.append([list])
                for z in json_read[x][y]["temoti"]["motimono"]:
                    item = item_df[item_df["id"]==int(z["id"])]
                    list2.append(item.iloc[0,2])
                    list2.append(z["val"])
                Home_poke2 = Home_poke2.append([list2])

            
#それぞれのデータフレームの列名を名付けて出力。
Home_poke.columns = ["ポケモン名","技1","割合1","技2","割合2","技3","割合3","技4","割合4","技5","割合5","技6","割合6","技7","割合7","技8","割合8","技9","割合9","技10","割合10"]
Home_poke.to_csv("pokeHome_move.csv",encoding="shift-jis")
Home_poke2.columns = ["ポケモン名","アイテム1","割合1","アイテム2","割合2","アイテム3","割合3","アイテム4","割合4","アイテム5","割合5","アイテム6","割合6","アイテム7","割合7","アイテム8","割合8","アイテム9","割合9","アイテム10","割合10"]
Home_poke2.to_csv("pokeHome_item.csv",encoding="shift-jis")

↑のコードでは「idと技名、アイテム名、ポケモン名を変換するcsvファイル」を外部から読み込んでいます。
それを作って読み込めば、後は上記コードのコピペで動くはずです!
jsonファイルやcsvファイルが出力されるので、そちらを対戦補助エクセルにコピペすることで最新のポケモンHOMEの結果をエクセル上で見ながら対戦ができます。エクセルへのコピーに関しては対戦補助エクセルにマクロを作成し、ワンクリックで行えるようにする予定です。

では、本日の記事はここまでとなります。
対戦補助エクセルver4では今回紹介したポケモンHOMEの情報の更新機能のほかに、画像認識機能も付け加える予定です。
続報は気長にお待ちいただければと思います。
では、また会える日を楽しみにしています!