Upgrade to Pro — share decks privately, control downloads, hide ads and more …

20万行級レガシーシステムを AI駆動でモダナイズ・本番移行した実践知

20万行級レガシーシステムを AI駆動でモダナイズ・本番移行した実践知

AIを活用した開発効率化の話は増えていますが、一定規模以上の商用Webサービスを、実際に本番移行まで通した事例に基づく話はまだ多くありません。本発表では、CakePHP 2系で作られた20万行級のWebサービスをLaravelへ移行した実例をもとに、AI駆動開発を安全に使うための設計とプロセスを紹介します。

移行対象は、複数の利用者種別、検索・登録・契約・通知・管理機能、メールキュー、外部API、ファイル、バッチ処理を含む商用サービスです。400超の移行対象ルート/アクション、約100テーブルを持つ既存システムに対して、既存仕様を維持する形で移行を完遂しました。

今回の発表で最も重要なテーマは、AI活用以前に、実装者がAIか人かに関わらず「品質を正しく担保するためのロジックとプロセスを言語化・型化すること」です。発表では、今回の移行プロジェクトで特に重要だった以下のポイントを中心に取り上げます。

- 既存仕様を「振る舞い」として抽出し、テストシナリオへ変換する方法
- 旧系を正解とするGolden Master比較によりAIの出力を機械的に評価することで、品質をコントロールしながら自律的なAI実装ループを回す方法
- 本番相当環境での早期・継続的な検証により、テストシナリオの不完全性を検知・補強し、品質保証モデル自体を改善する方法

Avatar for Hiroto Aibara

Hiroto Aibara

July 25, 2026

Other Decks in Technology

Transcript

  1. はじめに① 自己紹介 ◼ 名前:相原 寛人(31歳) ◼ 出身:広島県東広島市 ◼ 趣味:マラソン ◼

    派閥:Codex派 ◼ 所属:ブーストコンサルティング株式会社 エンジニア 積極採用中 ➢ AI活用を前提としたシステム開発 ➢ 現場実装と要件定義 @hiroto_aibara ➢ システムリプレース / モダナイゼーション ©️ 2026 Boost Consulting, Inc. 2
  2. はじめに② AIエージェントの実力は周知の通りだが、今日の趣旨は 未だ語り尽くされていない 本番品質の壁の越え方 に対する暫定結論 ➢ 商用Webサービス(※20万行規模)を 元の振る舞いを完全再現 する形で 全面書き換え・

    本番移行 ➢ AIを活用して 工程全体を自動化 し 1人×4ヶ月(メソッド設計2ヶ月+本移行対応2ヶ月)で完遂 自動化と品質担保の両立 を目指した試行錯誤の結果、 どのような方法論に行き着いたかを共有 ©️ 2026 Boost Consulting, Inc. 3
  3. 事例概要 20万行・400超アクション・約100テーブル規模のシステムを 主担当1名×4ヶ月(※1)でCakePHP 2系から Laravel へ本番移行(※2) ポイント① ポイント② ポイント③ 登録ユーザー10,000人超の

    最新のCakePHP 4/5系への 設計書・仕様書が初期開発時から 商用Webサービス バージョンアップを行うには メンテナンスされておらず、 ⇨ AI活用を前提としながらも本番に耐える 大規模なコードの書き換え が必要 仕様もブラックボックス化 品質を説明可能な形でどう担保するか ※今回はLaravelへの移行を選択 が論点 アプローチ ▪仕様書ではなく、現行システムの振る舞いを正本 とした移行プロセス設計(Golden Master比較) ▪品質担保の核となる テストシナリオ生成と裁定 はロジックを説明可能なAI非依存の決定的プロセス ▪早期から本番相当環境での検証を行い、 品質保証モデル自体の精度改善 も移行実装と同時に回す ※1 前述の通り本移行対応は2ヶ月程度(メソッド設計2ヶ月+本移行対応2ヶ月 ) ※2 公式EOL後も第三者パッチ等で運用継続は可能だが、恒久対応としてLaravelへ移行 ©️ 2026 Boost Consulting, Inc. 4
  4. 問題提起 AIでコード生成は高速化。次の論点は品質と自動化のトレードオフ解消 AIが実装し、人間が品質を確認 AIが実装し、AIが品質を評価 AIが実装 AIが実装 人間が全差分を確認してレビュー / テストコード生成 AIがAIを評価

    人間が自動化のボトルネック 見かけ上の自動化レベルは高まるが、 品質根拠が説明できない 必要なのは、AIとは独立した品質の裁定 ©️ 2026 Boost Consulting, Inc. 5
  5. 問題解決アプローチ – Golden Master比較 仕様書ではなく、現行システムの振る舞いを正解にする 同じ初期状態 × 同じ入力・操作 POST /contracts

    user=customer status=before_contract GOLDEN|現行システム HTTP 302 Location /contracts/5482 DB contracts +1 Status pending Mail confirmation +1 ∂ ACTUAL|移行後システム HTTP 302 Location /contracts/5482 DB contracts +1 Status pending Mail confirmation +1 ∂ 内部実装は違ってよい 外部から観測できる振る舞いを一致させる ©️ 2026 Boost Consulting, Inc. 6
  6. 問題解決アプローチ – 仕様抽出 実装に埋もれた仕様を、決定的な変換でテストにする 旧システムの ソースコード 静的解析・構造化 ドキュメント化されていない 既存仕様を含む実装 AIの推測に依存しない

    決定的プロセス LEGACY|CakePHP 2 public function add() { $user = $this->Auth->user(); if ($user['status'] !== 'active') { throw new ForbiddenException(); } ∂ if ($this->request->is('post')) { $this->Contract->save($this->request->data); $this->Mailer->send('confirmation'); return $this->redirect(['action' => 'view']); } テスト シナリオ 検証可能な振る舞い 入力・制約 表示・応答 状態・遷移 DB・副作用 既存仕様を 網羅する シナリオ群 SCENARIO|機械生成結果 route: POST /contracts role: customer precondition: user.status: active input: contract: valid expected: http.status: 302 db.contracts: +1 mail.confirmation: +1 ∂ } © 2026 Boost Consulting, Inc. 7
  7. 問題解決アプローチ – プロセス全体像 テストシナリオ生成後は Issue 単位にシナリオを分割し、 全シナリオPASSを完了ゲートとしてAI実装 1. ソースコード解析・テストシナリオ生成 2.

    生成されたシナリオを Issue 単位に分割 3. Issueごとに全シナリオPASSを完了ゲートとしてAI実装 4. 受け入れテスト ・ 必要に応じてソースコード解析・テストシナリオ生成の 次頁以降で説明 ロジック修正 5. 全テストPASSと品質保証モデルの妥当性確認を経て移行完了 © 2026 Boost Consulting, Inc. 8
  8. 問題解決アプローチ – 二つのループ 移行実装と並行で、品質保証モデル自体の改善も回す ループ2|品質保証モデルを改善 Golden Masterテストスイート テスト再生成 ループ1|決定的なテストで移行実装を収束 完了ゲート

    全テスト PASS? 新旧比較 AIによる移行実装 YES 全件 PASS + NO:差分を実装へFB 品質保証モデル 妥当 本番相当環境で 早期・継続検証 未捕捉 あり? 生成・比較ルール改善 品質保証モデル妥当 ©️ 2026 Boost Consulting, Inc. 9
  9. 問題解決アプローチ – 二つのループ なぜ、実装を収束させるループだけでは足りないのか ループ1しか存在しない場合 ループ2の狙い テスト全件PASSという明確な完了基準 テスト全件PASSという明確な完了基準 前提となるのはテストシナリオの完全性 では、その完全性をどう担保するのか?

    現在の品質保証モデルの範囲では 「完全」なテストシナリオ シナリオの不完全性を検知・補強する 仕組みを別で持っておく 要は、実装だけでなく「テスト設計そのもの」も検証する Wモデル/シフトレフト的アプローチ ©️ 2026 Boost Consulting, Inc. 10
  10. 案件横断への拡張 一案件の改善ループを、案件横断で進化する移行プラットフォームへ 移行プラットフォーム 再利用可能な Layer3:システム別設定・拡張 ルールの適用 移行Project 1 移行Project 2

    Layer2:フレームワーク別プラグイン 反例・改善ルールを 還元 Layer1:フレームワーク非依存の共通基盤 移行Project 3 ・ ・ ・ ©️ 2026 Boost Consulting, Inc. 11
  11. まとめ 高レベルの自動化と、決定的で説明可能な品質保証は両立できる ➢ 自動化レベルは、コード生成だけでなく 移行工程全体 で捉える ➢ 確率的なLLMの実装 と、決定的な品質の裁定 を分離・統合する

    ➢ 本番相当検証で見つかった不完全性を、品質保証モデルの改善へ還流 する 主体がAIか人かに関わらず、説明・検証が可能な仕組みを構築することが重要 ©️ 2026 Boost Consulting, Inc. 12