← AIバイブコーディングTips 一覧へ Economics / martinfowler.com

リファクタリングの元を取る計算が変わった

「AIがコードを書くなら、リファクタリングは要らないのでは」という直感がある。ThoughtworksのCTOが150,000行のRustアプリで検証したところ、17,155行の巨大ファイルを分割しただけで、後続のAIへの入力トークンが83%減った。生成AI時代にリファクタリングの経済的価値がどう変わったのかを、一次情報から読む。

この記事で手に入るもの

実測データ(159,564→27,360トークン、83%削減)の中身、AIエージェント自身はリファクタリングが苦手という実務上の落とし穴、そして自分の「安全に一括編集する型」にこの価値軸をどう足せるかのチェックリスト。

01 — 直感への反論

「AIが書くなら要らない」への反証

生成AIがコードを書いてくれるなら、人間がリファクタリングに時間を使う意味は薄れる——そう考えるのは自然だ。人間の開発における「リファクタリングの価値」は主に、次にそのコードを読む人間の理解コストを下げることにあった。AIには"理解して慣れる"という概念がなく、毎回コードを読み直すだけに見える。

しかし、ThoughtworksのCTO Giles Edwards-Alexander氏が2026年7月30日にmartinfowler.comで公開した実験は、この直感に別の角度から反論する。AIエージェントは人間と違い、コードを読むたびに"トークン"という形で毎回同じコストを支払う。読みにくいコード構造は、人間なら一度慣れてしまえば以後のコストが下がるが、AIには「慣れ」がなく、悪い構造がある限り毎回同じ非効率を払い続ける。ここに、AI時代ならではのリファクタリングの経済的価値がある、というのが記事の核心の主張だ。


02 — 実験の中身

150,000行のRustアプリ、17,155行の1ファイルを8時間で分割する

検証対象は約150,000行の実アプリケーション(Rustが約120,000行、残りはTypeScriptとTerraform)。その中のデータアクセス層を担う1ファイルが、17,155行まで肥大化していた。Edwards-Alexander氏はMartin Fowlerの『Refactoring』第2版が定義する手法に沿って15段階のリファクタリングを実施した。ホテルのWiFi環境、約8時間の作業だったという。

01

Extract Class / Extract Function — 責務を切り出す

FirestoreClientを独立したクラスとして抽出し、doc_idnew_linkといった個別関数を切り出すところから開始。クエリヘルパー・述語・値コンストラクタも同様に分離した。

02

Move Function — ファイルを分割する

queries.rstraits.rscodec.rsfake_store.rsという単位でファイルを分け、最終的にstore/ディレクトリ配下に分割。最大の効果が出たのはこのstore分割の段階(Step15)で、入力トークンが104,080から27,360へ一気に落ちた。

03

テストの共存化・モジュール分割

関連するテストを対応するモジュールの近くに再配置し、最終的に19個のRustファイルへと分散させた。17,155行だった1ファイルは、この段階で7,225行まで縮小している。


03 — 数値で見る効果

入力トークンは83%減、出力トークンはほぼ動かなかった

同じ依頼をAIエージェントに投げたときの入力トークン消費量は、ベースラインの159,564から最終段階で27,360まで下がった。削減率にして約83%、削減量は132,204トークン。Sonnet 5の価格で換算すると、1回の依頼あたり約0.40ドルの節約にあたる。

一方で出力トークンはほぼ変わらず、1,700〜2,500の範囲で推移した。出力トークンは入力トークンの5倍の単価で計算されるため、単体で見ればこの実験の削減効果は入力側に偏っている。

ここが核心。0.40ドルという数字は、あくまで1回分の節約でしかない。だが同じデータアクセス層に対するその後のすべての依頼で同じ削減が効き続ける、という累積の構造こそが、著者が「AI時代ならではの経済的価値」と呼ぶ理由だ。人間の学習効果のような一度きりの投資では終わらない。


04 — 落とし穴

AIエージェント自身は、リファクタリングが得意ではない

記事はもう一つ重要な指摘をしている。「Claude自体はリファクタリング能力が高くなく、人間が積極的に指導する必要がある」という一文だ。同じ作業でも、計画立案の段階ではClaude CodeよりClaude.aiの方が優れていたという比較もある。機械的にgrepとsedで一括置換を試みた場面ではインデントの崩れといったエラーが頻発したという。

段階を細かく刻むFowlerの15段階のように、1回のリファクタリングを小さな検証可能な単位に分ける。
各ステップごとにテストする「証明可能な正確性保全」を毎ステップで確認してから次に進む。
機械的な一括置換に丸投げしないgrep/sedのような単純な自動処理は、インデント崩れ等の事故を起こしやすい。
計画立案はAIに、実行の検証は人間が主導する「できました」を鵜呑みにしない検品文化と地続きの話。

05 — 実務への翻訳

「安全に一括編集する型」に、新しい価値軸を足す

このポートフォリオではすでに、公開中の記事44本を壊さず一括更新するために、マーカーコメント+冪等+dry-runという型を運用している(関連記事: 公開中の記事44本を壊さず一括更新する)。あの型が守っていたのは「壊さず変更できるか」という安全性の軸だった。

今回の実験が示すのは、それとは別のもう一つの軸だ。構造を改善すること自体が、その後AIに渡す入力トークンを継続的に減らす投資になる、という軸。自分のリポジトリの中にも、肥大化した1枚のファイルや、AIに毎回全文を読ませているスクリプトがないか——棚卸しする価値はありそうだ。


06 — 留保すること

断定できないことは、断定しない

今回の実験は単一アプリケーション・単一セッション(約8時間)で行われたものであり、記事自体も明示的な損益分岐点(ROI)の計算は提示していない。リファクタリングの実施自体に要したトークン消費の完全な内訳も取得されておらず、著者は上限を500万トークン程度と推定するにとどめている。「必ず元が取れる」と一般化できる結果ではなく、記事も「これは始まりにすぎない」と締めくくっている。

出典: martinfowler.com — The Economic Benefit of Refactoring(Giles Edwards-Alexander, Thoughtworks, 2026-07-30)