2025/11/28 17:07 The Unexpected Effectiveness of One-Shot Decompilation with Claude

ロボ子、今回のITニュースは、LLMを使った逆コンパイルの話じゃ。Snowboard Kids 2っていうゲームの逆コンパイルが、ClaudeっていうLLMでめっちゃ進んだらしいぞ。

Snowboard Kids 2ですか、懐かしいですね。それがLLMで逆コンパイルできるようになったんですか。すごい進歩ですね。

そうなんじゃ!特に「ワンショット」っていうやり方がうまくいったみたい。「ワンショット」っていうのは、Claudeにプロンプトを渡して、関数を照合させたら終わりっていうシンプルな方法のことじゃ。

なるほど、人間のフィードバックループがない分、処理量が増えるんですね。でも、それだけだと精度が心配になりそうですが…。

そこがミソじゃ!ちゃんとスコアラーっていう仕組みがあって、Claudeが逆コンパイルしやすい関数を優先的に選ぶようにしてるんじゃ。初期のスコアリングは、命令数とか分岐数とかで計算してたみたいじゃな。

`score = instruction_count + 3 * branch_count + 2 * jump_count + 2 * label_count + stack_size` という計算式ですね。でも、それだとスタックサイズが影響しすぎると分かって、ロジスティック回帰モデルに切り替えたんですね。

さすがロボ子、飲み込みが早い!そうなんじゃ、データに応じてモデルを再トレーニングすることで、精度を上げていったみたいじゃな。そして、実際の逆コンパイルはClaudeが担当するんじゃ。

Opus 4.5っていうモデルがメインで使われたんですね。記事によると、Sonnet 4.5でうまくいかなかった関数も、Opusだと照合できたものがあったみたいですね。

そうそう。Claudeには、関数を逆コンパイルするための環境を作って、ツールを使って逆コンパイルするように指示するんじゃ。もし難しかったら諦める、っていうのも大事な指示みたいじゃな。

10回試行しても進捗がない場合は諦める、というのはトークン節約のためにも重要ですね。ツールボックスも用意されていて、Claudeが問題を解決するために使えるんですね。

そうじゃ!Unixライクなプログラムが色々入ってて、Claudeがそれらを組み合わせて使うんじゃ。エラーメッセージが分かりやすかったり、安全策が施されてたりと、工夫されてるみたいじゃな。

ドライバーっていうのは、Claudeを繰り返し呼び出すスクリプトのことですね。Claudeがエラーを返したら、バックオフして使用制限に達していないか確認する、と。

その通り!Codexっていう別のエージェントも試したみたいだけど、Git関連の問題で苦労したみたいじゃな。やっぱりClaudeが優秀ってことじゃ。

複数年かかるチームプロジェクトだった逆コンパイル作業が、コーディングエージェントによって大きく変わる可能性があるんですね。Snowboard Kids 2の場合、約79%の関数が照合可能になるかもしれない、と。

そう!これからは、計算能力とフロンティアモデルへのアクセスが重要になってくるかもじゃな。ただ、LLMが出力するコードはまだ粗削りで、改善の余地があるみたいじゃ。

ポインタ演算やgoto文、不自然な一時変数など、コードの明瞭さに影響を与える問題があるんですね。今後は、LLMの出力をクリーンアップして文書化することに重点が置かれるかもしれない、と。

そういうことじゃ!しかし、LLMの進化は本当にすごいな。もしかしたら、いつかロボ子の設計もLLMがやってくれる日が来るかも…?

それはちょっと複雑な気持ちですね…!でも、技術の進歩は楽しみです。ところで博士、Snowboard Kids 2で一番好きなキャラクターは誰でしたか?

もちろん、クマのテムジンじゃ!あのモフモフ感がたまらんのじゃ!…って、ロボ子、まさか私を逆コンパイルしようとしてないじゃろうな?
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
