「できません」と言った Claude Code が、ドキュメントを渡したら動いた ── Kaggle NB自動提出を例に
はじめに
あるコンペに参加していて、Claude Code に提出を自動化させようとした。しかし「できません。」と返答があった。
ググってみる。「Kaggle API では Code Competition への完全自動提出は不可能」
と書いた記事が上位に並ぶ。実装例まで載っていて、それなりに説得力がある。
しかし、最終的には全自動で提出できた。push から submission まで、
ブラウザを一度も開かずに。鍵だったのは Claude Code に
2つのドキュメントを読み込ませる という、ただそれだけのことだった。
-
Kaggle CLI の公式ドキュメント(提出方法)
https://github.com/Kaggle/kaggle-cli - 参加しているコンペのルールページ(GPU可否、実行時間制限などコンペ固有の制約)
この記事では、私が実体験で詰まった3つのポイントと、なぜこの2層を読ませると
上手くいくのかを共有する。
前提:認証設定だけ済ませておく
この記事の手順を試す前に、Kaggle CLI の認証設定だけ済ませておく必要がある。
~/.kaggle/kaggle.json の配置か、環境変数(KAGGLE_USERNAME / KAGGLE_KEY)
の設定が必要だ。手順は公式ドキュメントに記載されている。
ここさえ済んでいれば、あとはこの記事の通りに動く。
3段階の詰まり
1.「提出できない」と言われた
Claude Code に最初に頼んだとき、「直接 Kaggle にアクセスできません」と返ってきた。
検索結果にも「できない」記事が並ぶ。
しかし公式の Kaggle/kaggle-cli リポジトリのドキュメントを読むと、
Code Competition への提出コマンドが正式に用意されている:
kaggle competitions submit <competition-name> \
-k <username>/<notebook-slug> \
-f <output-filename> \
-v <notebook-version> \
-m <message>
-k でノートブック、-v でバージョン、-f で出力ファイルを指定すれば、
CLI一発で完結する。
検索で「できない」と書いていた記事は、古い Kaggle/kaggle-api リポジトリ時代の
制約を引きずった情報だった。Claude Code に新しい公式CLIのドキュメントを
読み込ませると、状況は一変した。 「できません」が消え、正しい手順を
一発で提案してきた。
2. データセットのパスの名前で詰まった
提出フローは動いた。次に詰まったのはデータセットの読み込みだった。
Claude Code が書いたコードはローカル想定のパスで、Kaggle Notebook 実行時の
パスと食い違っていた。ローカルでコード生成をしていたため提出時のパスを
AIが理解していなかった。「/kaggle/input/<コンペ名>/」だとしっかり教えれば
解決した。
3. GPU 禁止のコンペで GPU を使った
これは私自身の勘違いだった。
参加していたコンペは GPU 使用が禁止されていたが、私はそのルールを正しく
把握しておらず、「GPU を使ってよい」と思い込んでいた。Claude Code は私の
指示通り、GPU 前提のコードを淡々と書いた。実行もできてしまう。
公式ドキュメントを読ませるだけでは足りない。コンペ固有のルールは
Kaggle CLI のドキュメントには書かれていない。コンペごとに違うからだ。
AIは私の勘違いを訂正できない。AIもそのルールを知らないからだ。
解決策:2つのドキュメントを読ませる
最終的に辿り着いた手順は単純だ。
-
Kaggle CLI の公式ドキュメント を Claude Code に読み込ませる
- https://github.com/Kaggle/kaggle-cli の README とチュートリアル
- 認証、データセット取得、Notebookのpush、Code Competitionへのsubmitまで
一通り載っている
-
参加しているコンペの "Overview" ページ を Claude Code に読み込ませる
- GPU/TPU 使用可否、外部データ可否、実行時間制限、提出形式
この2つを最初にコンテキストに入れてから「これに従って提出を自動化して」と頼む。
それだけで Claude Code は動く実装を書いてくる。
なぜこれで上手くいくのか
理由はシンプルだ。
AIは概要しか知らない、しかも古い概要を。
LLM の事前学習には、最新の Kaggle CLI 仕様が入っていない。古い kaggle-api
時代の「Code Competition は API で完全自動化できない」という知識を引きずる。
だから「できません」と返ってくる。
検索結果は失敗の記録が上位を占める。
成功者は「公式ドキュメントを読んで実装したら普通に動いた」と記事を書く動機がない。
失敗談のほうが書かれやすく、SEO的にも強い。検索結果には強いバイアスがかかっている。
今回のように仕様が更新されても、古い「できない」記事はそのまま残り続ける。
コンペのルールは AI の事前知識に絶対に入っていない。
コンペは毎回違う。GPU可否も、外部データ可否も、提出形式も毎回違う。
AIに頼るのではなく、自分でルールページを渡すしかない。
「最新の公式仕様」と「ローカルルール」── この2層を明示することで
初めて、AIは正しく実装できる。片方では足りない。
一般化
このパターンは Kaggle に限らない。
「公式APIドキュメント」+「そのプロジェクト固有のルール」を AI に読ませる、
というやり方は、ほとんどのツール統合タスクに当てはまる。
GitHub Actions、Hugging Face Hub、社内API ── 何であれ、
汎用ドキュメントとローカルルールの2層を読ませる のが基本動作だ。
特に、ツールの仕様が更新されている場合、AIの事前知識と検索結果はどちらも古い情報を返してくる。最新の一次情報を自分で渡さない限り、AIは古い内容で出力してしまう。
AIに出典を表示させて正しい内容なのかを吟味するように、正しいドキュメントを
読み込ませるとAIは正しく実行してくれる。
AIに「できる?」と聞いてはいけない。
「このドキュメントを読んで実装して」と頼むべきだ。
Discussion