Struts遺跡のAI移行コスト実測──47万行の変換見積もりレンジを算出
StrutsからSpringへの移行実測により、Sonnet/Opus混成構成における変換コストと、テストが緑でもバグが残る構造的課題を明文化した。
リリース: 2026-08-08 · 読了 5 分記事の要約
1. 核心(What)
- StrutsからSpringへの移行を想定し、性質の異なる2つのユニット(P1:審判付き変換、P2:審判なし・構造非保存変換)を対象に変換コストを実測した。
- P1(367行)の変換には所要15分38秒・APIコスト$3.05を要し、2周のループで58テストをすべてグリーンで通過させた。
- P2(1,195行)ではJSPをThymeleafへ置き換え、所要40分08秒・APIコスト$14.53で19本のテストを通過させた。
- 実装をSonnet、レビューをOpusに割り当てた混成構成を採用し、全工程をOpusで実行する場合と比較してコストを4割削減した。
2. 影響(Why)
- テスト全緑でも防げない欠陥の可視化: 58テストがパスしても直列化の serialVersionUID 破壊や Thymeleaf の value 上書きといったテスト外の欠陥が残るため、人間や専用プローブによる差分レビューが必須となる。
- 移行プロジェクトの現実的な見積もり手法: [国内SIerのモダン化推進部門] 等は、ユニットの特性(構造保存か否か)による単価のブレを許容した見積もりレンジを構築し、過小評価を防ぐ必要がある。
3. 根拠・詳細(How)
- P1 試行における直列化互換の検証: BigDecimal の精度や hashCode の挙動を保持しつつ serialVersionUID を固定する検証を行い、同一条件の2試行でコストに1.29倍の開きがあることを ccusage で実測した。
- P2 試行における Thymeleaf 変換と工数内訳: アクション定義73件から抽出した仕訳伝票の縦切り1本に対し、Thymeleaf への置き換えを実行。面積が3.3倍に拡大したことで実装側コストが54%を占める構造変化を確認した。
4. 展望・課題(Next)
- 47万行規模への拡張における課題: 実測された単価レンジを47万行に適用する際は、ユニット種別の違い、固定費の非比例性、同一条件でも発生する試行ごとの揺れを考慮する必要がある。