Kaggle主催 ポケモンカードゲーム AIエージェント開発コンテスト参画

不完全情報カードゲームにおける自律的AIエージェントの開発と仮説検証サイクルの自動化

自作のStreamlit対戦分析ダッシュボード

概要

2026年6月〜8月、Kaggle主催のポケモンカードゲームAIエージェント開発コンペティションに参加。上位プレイヤーの対戦リプレイから行動を学習するAIエージェントを開発し、仮説検証から採択判断までを自動で回すPDCA基盤を構築。

Action Maskingでルール違反・自滅を防ぎ、Champion-Challenger方式によるローカル対戦評価を導入。改善サイクルの高速化を実現。

開発バージョンの変遷

ポケモンカードゲームのプレイ経験がほとんどない状態から着手。ルールを理解しながら段階的に改良し、ルールベース、データ駆動のハイブリッドAIを経て、自動PDCA基盤の構築へ。

バージョン アプローチ 意思決定の仕組み 評価体制 最高スコア
v1系 ルールベース ヒューリスティクスで行動の優先順位を決定し、rules.pyで自滅を防止 目視確認 827.9点
v2系 教師あり模倣学習 上位プレイヤーの同デッキのリプレイを学習し、ScorerNetで行動を選択 目視確認 557.4点
v3系 v1・v2のハイブリッド ルールベース+模倣学習 複数試合のリプレイ記録 617.3点
v4系 デッキ拡張と自動PDCA 定石定義と盤面評価の二経路を統合 Champion-Challenger 566.7点

自作ダッシュボードによる可視化

課題の発見と新しい着想のため、開発と並行してStreamlitでダッシュボードを作成(概要のスクリーンショットを参照)。Kaggle最高スコアやモデル構成、対戦履歴を一画面にまとめ、開発中の状況把握に活用。

モジュール構成と責任の分離

保守性と拡張性を高めるため、役割ごとにファイルを分けたモジュール構成(utils/)を採用。

utils/rules.py
ルール制約・Action Masking

エネルギーの不整合や無効な技の選択など、反則・自滅につながる手を構造的に排除

utils/choice.py
行動選択

上位の対戦ログから学習した盤面評価をもとに、最適な行動を選ぶ中核ロジック

utils/policy_gate.py
採択判定ゲート

統計的検定で、現行モデル(Champion)と候補モデル(Challenger)の採否を自動判定

utils/evaluator.py
対戦シミュレータ

複数のデッキパターンとの対戦を、ローカルで並列に高速実行

Champion-Challenger方式で回すPDCA

スコアの低下を防ぐため、提出前にローカルで評価するChampion-Challenger方式を採用。本番の観測から採否の判断までを、1変更1仮説で回し続ける仕組みを考案・構築。

PLAN

  1. 01

    本番を観測

    公開スコア・本番リプレイ、対面別のKPIと敗因を毎朝9時に同期

  2. 02

    1変更1仮説で候補版を作成

    期待効果と評価指標を先に定義し、現行Championを比較基準として固定

DO

  1. 03

    提出前の実行検査

    構文・import・60枚デッキを、隔離実行で確認

  2. 04

    Championとの一次選抜

    候補版と現行版を直接対戦し、先攻・後攻を各15戦で均等化

    不通過:14勝以下は成績を保存し、次の仮説へ

  3. 05

    7対面で標準評価

    7デッキ×各50戦、計350戦。先攻・後攻は各25戦

    山札切れ(LO)での勝敗も診断し、勝率の差の95%信頼区間で通過可否を判定

    不通過:175勝以下は成績を保存し、次の仮説へ

CHECK

  1. 06

    提出前レビュー

    代表試合を確認し、提出可否を最終判断

  2. 07

    Kaggle本番で検証

    Kaggle APIで自動提出し、直後にGitHubへ自動でpush

    約5時間後、公開スコアと本番リプレイで現行版と比較

ACT

08

本番で改善したか(現行版と比較)

YES

Championを更新

採用版と版台帳を更新し、次の本番観測へ

NO

記録して次の仮説へ

勝敗・対面別KPI・失敗理由を保存し、現行Championを維持

不採用の結果も削除しない。

成果

  • 自滅行動の防止率100%
  • Kaggle最高スコア827.9点
  • 人手のテストプレイを不要にし、無人の並列実行でモデルを自動選抜
  • ローカルテストから提出・git pushまでを自動化し、検証サイクルを短縮

学び

  1. 責任の境界を分ける設計

    ルール制約、予測モデル、評価を別の層に分けたことで、改良しやすく壊れにくい基盤に。この考え方は、ほかの開発や組織運営にも応用できると実感。

  2. 人の手を挟まない検証サイクル

    API連携とローカルの並列シミュレーションで、仮説から評価・提出までを自動化。検証のリードタイム短縮と再現性の向上を両立。

  3. 感覚ではなく統計で決める

    単発の勝ち負けに振り回されないよう、リプレイの日次取得と勝率差の信頼区間を判断に組み込み、採否の基準を明確化。

  4. 可視化で課題の場所を特定

    盤面の推移や勝率の構造をダッシュボードで見える化し、改善点の検討に活用。