コンテンツにスキップ

最初の valid submission を作るためのガイド

更新日: 2026-06-17

このメモは、添付されていた beginner notebook の要点をこのリポジトリ向けに整理したもの。

目標は強いエージェントを作ることではなく、まず submission.tar.gz を正しく作って提出物の形を理解すること。

このコンペで提出するもの

一般的な Kaggle コンペのような submission.csv ではなく、エージェント bundle を提出する。

最小構成のイメージ:

  • main.py
  • 提出時のエージェント本体
  • deck.csv
  • 60 行の Card ID リスト
  • submission.tar.gz
  • 上のファイル群をまとめたアーカイブ

/kaggle/input/kaggle/working

beginner notebook の説明では、役割分担はこうなっている。

  • /kaggle/input
  • 既存の配布物やサンプルを読む場所
  • cg-lib、カードデータ、参考 notebook、既存 deck.csv など
  • /kaggle/working
  • Notebook 実行中に自分が作るファイルの出力先
  • deck.csv, main.py, submission.tar.gz など

つまり、最初の 1 回では

  1. /kaggle/input の参照物を読む
  2. /kaggle/working に提出用ファイルを作る
  3. submission.tar.gz を提出する

という流れになる。

deck.csv とは何か

deck.csv はただの 60 行ファイルで、各行に 1 枚ずつ Card ID を書く。

例:

673
673
674
...

カード名の CSV ではない。提出エージェントは通常、最初のデッキ選択フェーズでこの 60 枚の ID 配列を返す。

hardcode と deck.csv は別物

beginner notebook が強調している重要点:

  • 60 枚のデッキ本体
  • ルールベースロジックの中で使うカード定数

この 2 つは別。

たとえば

  • Mega_Lucario_ex = 678

のような定数が main.py にあっても、60 枚デッキ本体は別に deck.csv から読んでよい。

このリポジトリでの最小提出フロー

sample/ に提出 bundle 作成用の最小ファイルを置いている。

1. デッキを用意

まず sample/deck.csv を 60 枚の Card ID で作る。

2. 提出用 main.py を用意

sample/submission_main.py は最小の提出用エージェント。

  • obs.select is None のときに deck.csv を返す
  • それ以外は合法手からランダムに選ぶ

強くはないが、提出物の形を理解するには十分。

3. bundle を作る

以下を実行すると sample/submission.tar.gz ができる。

uv run python sample/build_submission_bundle.py

4. Kaggle Notebook での見え方

Kaggle Notebook ではこの submission.tar.gz/kaggle/working 側の Output に現れる想定。

そのファイルをそのまま提出に使う。

この repo での注意点

  • kaggle-environments は導入済みだが、cabt は macOS 上では同梱 libcg.so の都合でそのまま動かない
  • cg-lib は PyPI パッケージではなく、Kaggle 側配布物として扱う前提
  • したがって bundle 作成はローカルでできるが、CABT 実行確認は Kaggle Notebook か Linux 環境が本命

次にやるとよいこと

  1. まずこの最小 bundle で提出形式を理解する
  2. 次に deck.csv を差し替えながら提出を試す
  3. その後でルールベース改善、自己対戦、MCTS に進む