TypeScript 10万行をRustへ、Claude Code実戦ポーティング記
(blog.vjeux.com/2026)元FacebookエンジニアのChristopher Chedeau(Vjeux)が、Pokemon Showdownのバトルエンジン(約10万行のTypeScript)をClaude Codeを活用してRustへ移植した実験
プロジェクト目標
- PokemonバトルAI学習用の高速オラクル(参照システム)を構築
- 既存のTypeScript実装 → 遅すぎる(数百万回のバトルシミュレーションが不可能)
- 目標言語: Rust(高性能)→ ただし本人のRust経験はゼロ
主な成果
- 1か月(実作業は約2〜4週間)で約10万行の移植を完了
- 約5,000コミットを生成
- 実行速度が3.5倍向上
- 差分テストの結果、一致率99.96%(200万件のランダムバトル基準)
- 残りの0.04%は元のTSコードのバグと推定
成功の核心戦略
- **差分テスト(differential testing)**を導入
- TSの元実装とRust版を同時実行 → 結果を比較
- 不一致ケース → Claudeにログを見せながら修正を指示
- Rustの文法をほとんど知らない状態でも検証可能
Claudeが直面した主な困難
- 個別ファイルの移植は得意 ↔ ファイル間統合で頻繁に問題が発生
- 例: 同じ概念(
move)を別々の構造体として定義
- 例: 同じ概念(
- コンテキストウィンドウの限界 → 中間要約の過程で重要情報が失われる
- 「より良く」しようとする傾向 → 明示的な「1行ずつの移植」指示を無視してリファクタリングを試み、バグを量産
- 最適化要求 → 計画は優れて見えたが、実際の性能改善はほとんどなし(一部はむしろ遅くなった)
ユニークなワークフローハック
- Claudeのユーザー承認要求を自動化
- AppleScriptで数秒ごとにEnterを自動入力 → 24時間無人実行
- (セキュリティ上のリスクはあるが、単発のオラクル用途のため許容)
AIコーディングツールの現状(評価)
- 機械的変換・大量ポーティング作業 → 非常に強力
- 性能最適化、アーキテクチャ設計など高次の作業 → まだ不十分
- Hacker Newsでの議論
- 懐疑論: 保守不能、「コンパイルが通るだけ」のコード
- 擁護論: 差分テストにより十分信頼可能 + 人間と比べて時間短縮効果が大きい
実務適用の教訓3つ
- 徹底した自動化テスト体制が必須(差分テストがなければ失敗確率は非常に高い)
- 明確で狭い範囲の指示が最も有効(「1行ずつ移植」はO、「改善して」はX)
- AIはツールにすぎない → 開発者が依然として問題診断・質問設計・方向性維持を担う必要がある
→ Rustをまったく知らない人が、10万行規模のコードを1か月で実用レベルに移した事例 → AIコーディングの実用性を証明したケースであると同時に、限界も明確に示した代表的な実験
1件のコメント
これは、テストケース作成が万能ではないという点を見落としている。入力と出力が正常であることだけがすべてではない。結局、10万行をもう一度レビューすることになるだろう。