AIと一緒に上手くなるためのポケモン対戦アシスタント「pkdx」のつかいかた
こんにちは、うしろのこです。noteで書くのは初めてですが、届いて欲しい層を考えるとzennやsizu.meよりnoteかなと思い、はじめてみました。
最近Pokemon Championsがリリースされ対戦が盛り上がっていると思いますが、Championsからはじめる方も多かろうということで、AIと並走してポケモン対戦が上達するツールがあると良いなと思い、作りました。
pkdxはClaude CodeやCodexから、ポケモン対戦に必要な要素を正確に実行しつつ、AIエージェントが手伝ってくれるよう調整をしたツールです。
最近のAIは賢いとはいいつつも、ポケモン対戦を集中して学習しているわけではないため、それっぽいことは言えても正確性はありません(ポケモン対戦に限らず)。
なので、AIが使える形でダメージ計算などを行うツールを作ったり、その使い方を教えることで正確さを担保しつつ、ポケモン対戦に関する複雑な部分をやってもらえるようにしています。
なにができるの?
pkdxは以下をサポートしています(2026/4時点)
ダメージ計算
チームビルドアシスタント
Champions バトルチームのスクショからのチーム読み取り・登録
ポケモン育成シミュレーション
耐久指数の最適化
ポケモン検索(名前、素早さ、覚える技からの逆引きなど)
対戦シミュレーション
自動ツールアップデート
ダメージ計算
例えば、以下のように入力するとダメージ計算をその場で行います。
メガギャラドスの+1滝登り->晴れ下メガリザY

また、AIなので以下のような並列処理もよしなにやってくれます。
無補正A32メガギャラのたきのぼり->H32ドドゲザン、H32ギルガルド(シールド)、H30ハッサム、H32B32ラウドボーン

合算なども指示すれば可能です。この辺りは機能としてもっていなくても、AIがなんとかしてくれます。
チームビルド
pkdx上のデータとして、バトルチームを登録する機能です。0ベースで1匹ずつ決める場合は、AIがサポートしてくれます。
Championsですでにバトルチームを作っている場合は、スクショからチームの取り込みができます(おそらくこっちが本命)。

アシスタントモードでは、軸を1匹決めた後に攻め・受けの補完枠を決め、その後高速アタッカーが不在であれば1匹埋め、最後に全体の補完を2匹埋める、という形式で進みます。

現時点でpkdxはメタ情報を持っていないので、環境を考慮したポケモン選択はできません。メタ情報は安定しないのと、あまり考慮しすぎると選択が偏るため、アシストモードでは意図的に非対応にしています(それでもカイリューは強い!ドラパは速い!などはAIの知識としてあるので、推されがち)。
Championsのスクショがある場合は、スクショからの情報とDB内のデータを突合したり実際にステータス計算などをシミュレーションして矛盾がないことを確認してからチーム登録されます。スクショからの取り込みではすべてのポケモンの技、もちもの、性格、SP振り、実数値が取れるため、中間の作業はスキップされます。

登録したチームは `./box/teams` 配下へマークダウンファイルとして出力されます。これは手で編集もできます。また、後述の対戦シミュレーションでも利用されます。
育成シミュレーション
こちらはポケモン単体のSP振りや覚えさせる技を選ぶ、いわゆる型を作る機能です。ここで作った型はチームビルダーでも利用できます。
耐久指数最適化
HBD/(B+D) のやつです。一部分のSPを固定しながら残りのポイントで最適化、のようなこともできます。物理比重を2倍にしたりもできます。また、アルゴリズムが最適化されているので11nの価値が自動で高くなり、結果的に採択されるようにもなっています(後述の読み物で詳しく解説しています)。
対戦シミュレーション
`box/teams/` にあるバトルチームを使い、対戦のシミュレーションを自動で行いもっとも勝率の高い選出候補を計算します。現状シングルバトルのみ対応しています。
原理としては、6v6でオープンチームという前提で、すべての3体選出のパターンを突き合わせ、お互いが最適解を選び続けた場合どの選択が一番勝率が高いか、を計算しています。
`/nash` スキルを起動するか、選出最適をシミュレーションしたいとAIへ伝えることで実行できます。シミュレーションの最大ターン数を増やすほど精度が高くなりますが、線形に時間がかかります。交代、積み技、変化技、特性、メガ進化などを考慮して計算しますが、まだ調整の余地は大いにあるので実際に使ってみてフィードバックいただけると嬉しいです。

制限事項として、メガしたターンのタイプ変化や特性をその場で適用する、など細かい部分がまだ未対応です
20ターンなど極端に長く指定すると2時間以上かかったのちに落ちます
現状macOS/Linuxのみの対応になっています。すまん!
また、有利不利のグラフ関係をそれとなく出すツールなどもあります。こちらは持ち物やメガなどは考慮せず、シンプルに一番火力を出した時にどうなるかで見ます。
他にも色々遊べるので、色々やってみてください(一番真面目に解くのは選出最適化ツールです)。`/nash` で起動すると、選択肢に `graph` や `meta-divergence)` が現れます。AIに何ができるか聞いてみるのも良いでしょう。

自動ツールアップデート
`/self-update` と入力すると、ツールにアップデートがあった場合AIが追従してくれます。gitについて詳しくない場合でも問題なく新機能・バグ修正を取り込めます。

つかいかた
肝心の使い方ですが、AIに使わせるためのアプリが必要になります。現時点では以下の2つに対応しています。Windows/macOS/Linux(WSL想定)のバイナリをサポートしています。
Claude Desktop(Claude Code)
Codex
https://openai.com/ja-JP/codex/
どちらの場合もセットアップ方法は変わりません。
セットアップする
上記を開きます
右上の「Fork」ボタンを押します
Fork先のレポをClaude Code/Codexで開きます
使えます
GitHubアカウントがある方はこれでFork先運用ができます。
GitHubってなんだよ、な人
Claude/Codexに向かって上記リンクを渡し、「これ使いたいんだけど」と相談すると良い感じに進むと思います。
読み物としてのpkdx
雑学としてポケモンのさまざまな仕様をAIが答えられるように文書化しています。人間が読んでも面白いものや、人間が読んでも理解不能なものもあります。気になる方はぜひ読んでみてください。手始めに以下がおすすめです。
耐久指数最適化のリファレンス
https://github.com/pkdxtools/pkdx/blob/main/.claude/skills/team-builder/references/bulk_theory.md
対戦シミュレーションの理論
https://github.com/pkdxtools/pkdx/blob/main/.claude/skills/nash/references/theory.md
おわりに
pkdxを使っていても、AIのハルシネーションが完全になくなるわけではありません。ツール実行外の部分はまだ平気で嘘をついたりします。一方で、ダメ計や対戦シミュなどツールを使って色々やる部分では本領を発揮できます。特に大規模なダメ計の並列化や、最適選出探索などは手打ちよりも圧倒的に速いため、有効活用いただけると良いと思います。
使ってみておかしな部分などがあれば、AIに「upstreamにリクエストしたい」と言えば良い感じにやってくれます。みなさまのフィードバックをお待ちしています。
おまけ:pkdxは何を学習しているのか?
pkdxは何も学習していません。というか、pkdx自体はAIでもエージェントでもLLMでもなく、所謂ハーネスというものです。
わからない人向けに説明をすると、「AIが学習している」とは以下の状態を指します。
AIに「ガブリアスのHの種族値は?」と聞く
AIが「ガブリアスのH種族値は108です」と答える
これは、「ガブリアスのH種族値」というキーワードに続く可能性が最も高いワードが108である、ということをAIが学習しているため、このような結果になります(なる可能性が非常に高い)。
逆に言えば、以下のような質問をAIは答えられません。
〇〇がシーズン×で使っていた構築を教えて
ガブリアスの地震でH振りドドゲザンを倒せる?
相手がこういうチームなんだけど、何を出せばいい?
これらは明確にファインチューンすれば導出できるかもしれませんが、claudeやgptなどのモデルは広範な知識を持つ代わりに、こういった尖った知識は持っていません。これはAIがツールなしに複雑な数式を解けないことと同じです。
現在では、こういった特殊な要件への返答には決定論的なツールをAIに実行させることが主流です。AIに調べ物をさせる際にググらせたりすると思いますが、pkdxはまさにそれで、まずダメージ計算を行えるツールを作り、その使い方を手順書として書いて、必要なときにAIが手順書を読んで実行する、という仕組みになっています。
選出最適化の部分も同様に、ゲーム理論に基づいて総当りの期待値を計算しているだけで、特定の構築情報や行動を学習しているわけではありません。そのため、実際のプレイヤーの直感から大きく外れることもあります。
