HN 日本語サマリー

← 一覧へ戻る
プログラミング

Fableを使って65kLoCのGoコードをRustに書き換えたら、費用は400ドルだった

I used Fable to rewrite 65kLoC of Go in Rust. It cost $400 (iurii.net)

19 pointsby aka-rider12 コメント

要約

この記事では、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フィードを取得して通知を受け取りましょう。