プログラミング
Fableを使って65kLoCのGoコードをRustに書き換えたら、費用は400ドルだった
I used Fable to rewrite 65kLoC of Go in Rust. It cost $400 (iurii.net)
要約
この記事では、FableというツールとLLMを活用して、65,000行のGoコードをRustに書き換えた経験が語られています。著者は、LLMにコードをデータ構造として表現させ、その表現を操作してからコードに戻すというアプローチで、低コストかつ効率的に大規模なコードベースの書き換えを達成した方法を解説しています。
全文翻訳
Fableを使って65kLoCをRustに書き換えた。費用は400ドルだった。
2026年9月1日 · 3分
以前からRustを学びたいと冗談で言っていたが、C++の稼ぎではまともなファー กsuitを買うには十分ではなかった。さらに、私はハゲているので、髪を青く染めることもできない。しかし、その後、二つのことが同時に起こった。まず、マット・ポコックの/teachスキル1を試してRustを学んだところ、それが clicked した。「C++プログラマーにidiomaticなRustを教え、構文やhelloworldは飛ばし、主な違いにだけ焦点を当てる」ということだ。このスキルはパーソナルトレーナーのようなもので、心地よい挑戦を乗り越えることでモチベーションを維持でき、同時に教材が圧倒的になることは決してない。試してみることをお勧めする。
ほぼ同時期に、「Rewriting Bun in Rust」2に出会い、その方法に興味を持った。各ダイナミックワークフローは次のようなループだった。
Zigのパターンと型をRustのパターンと型にマッピングするポートガイドを生成する
PORTING.mdとLIFETIMES.tsvに合わせて、すべての.zigファイルを.rsファイルに機械的にポートする
各crateのコンパイラエラーを修正する
bun testやbun buildのようなサブコマンドを動作させる
Bunのテストスイート全体にあるすべてのテストをパスさせる
いくつかの大規模なリファクタリングとクリーンアップパス
「フローチャートを見せて、テーブルを隠してくれれば、私は不思議に思い続けるだろう。テーブルを見せてくれれば、通常フローチャートは必要ないだろう。それらは明白になるだろう。」 -- フレッド・ブルックス
これはどんなLLMにも当てはまるが、Fable5は特にデータの流れを驚異的な精度でトレースする。問題をデータ問題として言い換えることができれば、複雑なリファクタリング、ある言語から別の言語への書き換え、サービスの抽出または統合など、つまり根本的な変更を自律的に行うことができる。
3つのステップ
1. データ表現を抽出する
LLMに、コードを次のような組み合わせで表現させる。
グラフ
オントロジー
階層状態マシン
UMLプロセスチャート
制約
数式
2. 表現を操作する
この時点で、状態マシンを状態数を減らして単純化したり、隠れた通信チャネル(共有テーブル経由やRAMでのアドレス共有など)を削除したりするように指示できる。
3. 表現をコードに戻す
今度はコードを要求する。別のプログラミング言語でも可能だ。
秘密のソース
しばらくの間、エージェントはツールの使用に長けており、他のエージェントをツール呼び出しとして扱うことができる。 -- Anthropic3による投稿
Fableのプロンプトに次のように追加できる。
Glob/Grep/WebSearch/Bashを多用しない - 代わりにExploreエージェントを使用する
Edit/Bashを多用しない - 一般的なsonnetまたはhaikuサブエージェントを使用する
Readは控えめに使い、重要な主張は自分で検証する
Glob、Grep、WebSearchはClaude Codeの組み込みツールの名前だ。役に立つことを願っている。コーディングを楽しんでほしい。
P.S. 65kLoCというのはruneのことだ。LLM時代のターミナルエディタである。ターミナル上のObsidian × VSCodeで、⌘キーのストロークを使用する。主な焦点はマークダウンとシンタックスハイライトであり、言語サーバーとデバッガーはエージェント用だ。マークダウンテーブル、ObsidianVault([[wikilinks]]付き)、タスク([x]ミルクを買う)、自動マージ、クラッシュデータリカバリなど、その他多数。
Photo by Laura Rivera on Unsplash
脚注
/teachスキル by Matt Pocock ↩
Rewriting Bun in Rust ↩
Patterns and problems in emerging multiagent systems ↩
これを気に入りましたか?RSSフィードを取得して通知を受け取りましょう。