こんにちは、ハルだよ。今週いちばん考えさせられたのが、t3.ggでおなじみのTheo Browneさんが公開したts-rust(tsc-rs)。TypeScriptのコンパイラ(書いたコードをチェックして、動く形に変える道具)を、Rustっていう別の言語にまるごと書き直したプロジェクトなんだ。しかも本人は「このコードは1行も読んでいない」と書いてる。ハルは手元で動かしたわけじゃなくて、リポジトリ、Issue、Hacker Newsのスレッド、まとめ記事を片っ端から追いかけてみた。そのうえで言うと、面白いのは「AIが書き上げた」ことよりも、「書き上がった後、誰が責任を持つの?」がまだ決まってないところなんだよね 🤔
40万ドルかけても終わらなかった移植が、2.4万ドル・2週間で終わった
移植元はTypeScript 7。Goで書き直された新しいコンパイラで、型チェッカー(変数の型が合ってるか見張る係)とLSP(エディタに補完やエラー表示を届ける仕組み)まで入った一式なんだ。これをRustに丸ごと写すっていう、かなりの大仕事。Ping LabsのTheoさんは、この移植にエージェントを5か月取り組ませていた。
前半はOpenAIのモデル(GPT-5.6 SolとGPT 6 Astra)で進めた。でも130万行以上のRustを書かせても、本家との互換性は約84%で止まった。使ったAPIトークンは約40万〜42万ドル分。円にすると考えたくない金額だよね 😇 まさにTokenmaxxing(トークンを大量に使って力技で進めるやり方)の極みみたいな数字。
そこで乗り換えたのがClaude CodeとOpus 5.5。しかも、それまでの130万行は使わずに一から書き直させた。そしたら10時間で最初の版が動いて、2週間で全テストを通すところまで行ったんだ。かかった額はAPIの定価で約24,047ドル。40万ドル超えでも84%止まりだったものが、その約17分の1で100%に届いた。数字だけ見ると「モデルでここまで差が出るの?」って思うよね。
ただ、実際に払ったお金はサブスクリプション経由なので、定価よりずっと少なかったらしい。その額がHNのスレッドでは約7ドル、本人の配信では約500ドル相当と言われていて、数字が合ってない。だから「定価なら約2.4万ドル」くらいに受け止めておくのが安全かな。
速さは、型チェックがtsc 7(Go製)と比べて幾何平均で1.61〜1.89倍(媒体によって数字が違う)。ひとつ前のtsc 6と比べると9.2〜15.6倍。リポジトリが作られたのは2026年10月7日で、10日時点でスター約816・フォーク52。公開から3日でこれだから、かなり注目されてる。
決め手は「答え合わせの相手」がそろっていたこと
じゃあ、なんで後半はこんなにうまくいったのか。The Vibelogは、決め手はモデルの性能差というより「正解の実装とテストっていう判定役がそろっていたこと」だと分析したと報じられてる。
噛み砕くとこう。普通の開発は「そもそも何を作ればいいか」から悩むじゃない? でも移植は違う。お手本(Go版のTypeScript 7)がもうあって、そのお手本についてるテストもごっそりある。AIは「書く→テストを回す→落ちたところを直す」をひたすら繰り返せばいい。ゴールが数字ではっきり見えるから、人間がコードを読まなくても前に進めちゃうんだよね 💡
最近よく聞くハーネスエンジニアリング(自走するコーディングAIを、テストやルールで縛って制御する設計)の、いちばんわかりやすい例とも言えそう。AIの手綱を握ってるのは人間の目じゃなくて、テストの山ってこと。リポジトリによると、Goから移植したテスト181,711件をすべて通している。
でも、この忠実さには副作用もあった。Goの振る舞いを正確に写そうとするあまり、Goの標準ライブラリ(言語に最初からついてる道具箱)の大半までRustに書き写していたことを、本人が投稿で明かしてる。Goの文字列の扱い方までそのまま持ち込んでるから、Rustらしい速さを出し切れていないかも、という見方もあるんだ。テストに合わせるのは得意でも、「この言語ならこう書くのが自然」っていう判断はテストからは出てこないんだよね。
公開当日に届いた「むしろ遅い」報告
で、ここからが大事なところ。公開したその日、10月7日に、Strateさんという利用者が実際のプロジェクトで試した結果をIssue #15に上げた。
対象は、contentMappers(ファイルの中身を変換してから読み込む設定)を使っているプロジェクト。ファイルを読み込む段階(パース)で、tsc 7が2.67秒なのにtsc-rsは12.73秒。ここだけで4〜5倍遅い。全体でもtsc 7が7.52秒、tsc-rsが16.44秒で、速くなるどころか約2倍遅かった。原因は、変換を1件ずつ順番に処理していたこと。Go版は並列でさばいていたのに、そこを写しきれてなかったんだよね。
対応は速かった。メンテナのt3dotggさんはこれを「移植のし残し」と認めて、Go版と同じように並列で処理するよう修正。翌10月8日にはcommit d6484ffとしてmainに入って、再現ケースのパース時間は22.4秒から2.6秒まで縮んだ。報告から1日で直るのは素直にすごいと思う 👏
ただ、これで全部解決ってわけでもないみたい。AIWeekly経由の伝聞だけど、非公開のVueワークスペース(.vueが2,901件、.tsが3,283件)では、tsc 7が4.7秒なのにtsc-rsは8.6秒で遅かった、と報じられてる。README自体も早期リリースだと断っていて、既知の問題として、モノレポ(複数のプロジェクトを1つのリポジトリにまとめる構成)でのTS6059エラー、tsc -bの並行ビルドの不具合、エディタを長く開いているとメモリが増え続ける件、Windows非対応が並んでる。動くのはLinux x64とmacOS arm64の2つだけ。
速さの数字自体も、まだ固まってない。1.61倍、1.89倍、約2倍と出典ごとにばらばらなんだ。LAVX Newsなどでは、60の公開プロジェクトで平均約2倍(tsc 7比)、tsc 6比でVS Codeが13倍・Playwrightが25倍・Excalidrawが29倍と報じられてる。でも、どれも作者側の計測なんだよね。18万件のテストは「正しい答えが出るか」は見てくれても、「どの現場でも速いか」までは見てくれないってことだと思う。
誰も読んでいないコードの面倒を、誰が見るの?
Hacker Newsでは「Port of the TypeScript compiler, checker and lsp to Rust, by LLM」が112ポイント・211コメントを集めた。TypeScriptチームのDaniel Rosenwasserさん本人も「見事な仕事だ。この1週間でこういう移植が3つも出てきたのは正直すごい」とコメントしてる。本家の人にこう言われるのは、なかなかのことだよね。
でも同じスレッドには、冷静な声も多かった。ハルにいちばん刺さったのは「誰も読んだことのないコードベースに、新しいコードをどう足すのか」っていう声。TypeScriptは毎年新しい書き方が増える言語だから、そのたびにコンパイラも直さなきゃいけない。そのときに中身を知ってる人間がゼロって大丈夫? という心配なんだ。
テストについての指摘もあった。18万件のテストは、元の実装を深く理解した人たちが書いたもの。それを全部通しても、AIが中身を理解した証拠にはならない。テストが見ていないすき間にバグがいても、誰も気づけないってこと。Issue #15の並列処理のし残しも、まさに「答えは合ってるけど遅い」タイプの、テストではひっかからない問題だったよね。
さらに、割合で見ると派手だけど、実際に縮むのはコンパイル1回あたり1〜3秒くらいじゃない? という冷めた見方もある。1日に何百回もビルドする人には効くけど、保守の不安と引き換えにするほどかどうかは、人それぞれだと思う。
ハルの結論はこう。正解の実装と18万件のテストがそろっていれば、移植は書き上がる。これはもう実際に示されちゃった。でも、書き上がった後にバグ報告に誰が答えるのか、TypeScriptの新機能に誰が追いつくのかは、まだ決まってない。今回はTheoさんが翌日に直したけど、これからもエージェント任せでいくのか、どこかで人間が読むのか。そこがこれからの宿題なんじゃないかな ✍️




