概要
- Agentic engineering の実験的アプリ構築とそのコードベースの特徴
- 巨大な単一ファイル に成長したデータアクセス層のリファクタリング実践
- リファクタリングによるトークン消費削減 の定量的測定と結果
- エージェントによるリファクタリングの課題とプロセス考察
- 今後の課題と、より広範なリファクタリングの可能性
エージェント駆動型開発における大規模リファクタリング実験
-
Agentic engineering の新しい世界に対応するため、完全自動化された高品質なWebアプリケーションを構築
- Web UIの動的リフレッシュやモーダル、外部システム連携、機械学習、バックグラウンドジョブ、自動デプロイ環境を実装
- Rust(約12万行)、TypeScript、Terraformで構成、総コード量約15万行
- コードは Claude Code とCursor等のエージェントのみで生成、ほぼレビューなし
-
開発中、データアクセス層が巨大な 単一Rustファイル (最終的に17,155行)へ膨張
- 重複したHTTPリクエスト処理やJSONエンコード/デコード の繰り返し
- 内部言語や関数・クラスの抽出がほぼ行われていない構造
-
リファクタリングの実験計画
- エージェントによるコードベースのリファクタリングが 将来的なトークン消費削減 に繋がるかを検証
- 各リファクタリングステップごとに、同じ代表的変更をエージェントに実行させ、 トークン消費量を測定
- 変更内容は都度破棄し、 純粋なコスト比較 を実施
-
リファクタリング手順
- 厳格なリファクタリング計画立案
- 代表的な変更内容を単一プロンプトで定義
- ベースラインコスト測定→各リファクタリング適用→同一変更の適用・トークン消費測定→記録・比較
-
結果
- データアクセス層の総行数はほぼ変わらず、 最大ファイルサイズのみ劇的減少
- 入力トークン消費は17万→2.7万(約83%削減)、継続的なコスト削減効果
- 出力トークン消費は大きく変化せず (出力トークンは単価が5倍だが量が少ない)
-
考察
- トークン消費削減は コード量の削減ではなく、エージェントが読むべきファイルの最小化 に依存
- ファイル分割だけでなく、 論理的な切り出しと重複排除 が重要
- エージェント(特にClaude Code)は リファクタリングの自律的提案や適用が苦手、人間による指示が必須
- 実験全体で 最大500万トークン消費 (計画立案・実験設計含む)、今後はより正確な計測が課題
-
今後の展望
- より複雑な変更や、コードベース全体へのリファクタリングの適用実験
- 継続的リファクタリング や異なるアプローチの効果測定
- トークンコストと開発効率の最適化手法の模索
代表的変更内容(プロンプト例)
- Rustプロジェクトにて、Firestore層へ ItemWatchStore という新しいpublic async traitを追加
- 3つのメソッド:watch_item, unwatch_item, watched_items_for_user
- Firestoreコレクションitem_watchesに保存、各ドキュメントはitemId, userId, createdAtを持つ
- Rust構造体は不要、戻り値はVec<String>
- FakeStoreとFirestore両方でtraitを実装
まとめ
- 大規模エージェント生成コードのリファクタリング は、将来的なトークン消費の大幅削減に寄与
- ファイル分割・重複排除・論理的整理 がコスト削減の鍵
- エージェントの自律的リファクタリング能力には限界があり、 人間の指示・設計が不可欠
- 本実験は、 今後のAIエージェント活用開発における生産性・コスト最適化 の第一歩