- Antigravityの「コード解析モード」でレガシーコードの依存関係・技術的負債を自動で可視化できる
- 段階的リファクタリング戦略でリスクを最小化しながら、モダンなアーキテクチャへ移行できる
- AIによるテスト自動生成で、リファクタリング時のデグレを防ぎつつ移行速度を3倍に向上できる
「10年前に書かれたJavaのモノリスを誰もリファクタリングしたがらない」「ドキュメントがないPHPコードの保守を任されたが、どこから手をつければいいかわからない」——SES現場でこんな状況に心当たりはありませんか?
レガシーコードの移行・モダナイゼーションは、SESエンジニアが最も頻繁に直面する課題の一つです。Google Antigravityには、既存コードベースを解析し、段階的にモダンなアーキテクチャへ移行するための専用機能が搭載されています。
本記事では、Antigravityを使ったレガシーコード移行の実践手法を、SES現場での具体的なユースケースとともに解説します。
Antigravityの基本的な使い方はGoogle Antigravity入門ガイドを、プロンプトの書き方はプロンプトエンジニアリングガイドを、トラブルシューティングはトラブルシューティングガイドをご参照ください。
- Antigravityのコード解析モードでレガシーコードの全体像を把握する方法
- 技術的負債の可視化と優先順位付けの手法
- 段階的リファクタリング戦略の立て方
- AIによるテスト自動生成でデグレを防ぐ方法
- SES現場での移行プロジェクト進行のコツ
- 移行完了後の品質担保と継続改善
レガシーコードとは?SES現場で直面するリアルな課題
SES案件では、以下のようなレガシーコードに遭遇することが多いです。
- Java 8以前のモノリス: Spring Boot移行が終わっていない大規模アプリケーション
- jQuery/PHP混在のWebアプリ: フレームワーク未使用でスパゲッティ状態
- VB.NET/VBA業務システム: Windows Formsで動き続ける社内ツール
- ドキュメントゼロのPythonスクリプト群: 前任者が退場済みのバッチ処理
これらに共通するのは、「動いているから触るな」という暗黙のルールが存在し、改善が先送りされ続けている点です。
従来の移行アプローチの限界
従来のレガシーコード移行には、主に3つの課題がありました。
- 全体像の把握に時間がかかる: 数十万行のコードの依存関係を手動で追うのは数週間〜数ヶ月
- リファクタリングのリスクが高い: テストがないコードの変更は、常にデグレリスクと隣り合わせ
- 工数見積もりが困難: 「やってみないとわからない」状態では、SES案件の提案すら難しい
Google Antigravityは、これらの課題をAIの力で大幅に軽減します。
Antigravityのコード解析モードで全体像を把握する
Antigravityには、既存コードベースを包括的に解析する**「コード解析モード」**が搭載されています。これを使えば、数十万行のレガシーコードでも数分で全体像を把握できます。
プロジェクトスキャンの実行
まず、対象プロジェクトをAntigravityに読み込ませます。
# プロジェクトディレクトリでAntigravityを起動
cd /path/to/legacy-project
antigravity analyze --mode=deep
# 解析結果サマリーが出力される
# ✅ Files scanned: 2,847
# ✅ Dependencies mapped: 1,203
# ✅ Tech debt score: 7.2/10 (High)
# ✅ Test coverage: 12%
--mode=deepオプションを指定すると、単純なファイル構造だけでなく、関数レベルの呼び出しグラフやデータフローの依存関係まで解析されます。
依存関係グラフの自動生成
解析結果から、Antigravityはプロジェクト全体の依存関係グラフを自動生成します。
# 依存関係グラフをMermaid形式で出力
antigravity graph --format=mermaid --output=deps.md
# 特定モジュールの影響範囲を確認
antigravity impact-analysis --module=UserService
# → 影響を受けるファイル: 47件
# → 影響を受けるテスト: 3件(カバレッジ不足)
この機能は、SES案件の初期アセスメント(現状調査)フェーズで非常に有効です。クライアントへの提案資料にそのまま使えるレベルの分析結果が得られます。
技術的負債スコアの算出
Antigravityは、コードベース全体の技術的負債を数値化します。
| 指標 | スコア | 説明 |
|---|---|---|
| 循環的複雑度 | 8.1/10 | メソッドあたりの平均複雑度が高い |
| 重複コード率 | 23% | 同一ロジックのコピペが多数 |
| 依存の結合度 | 7.5/10 | モジュール間の結合が密 |
| テストカバレッジ | 12% | カバレッジが著しく低い |
| ドキュメント充実度 | 1.2/10 | JSDoc/Javadocがほぼない |
この数値をもとに、どこから手をつけるべきかの優先順位を客観的に決定できます。

段階的リファクタリング戦略の立て方
ストラングラーフィグパターンの活用
Antigravityは、Martin Fowlerが提唱したストラングラーフィグパターン(Strangler Fig Pattern)に基づく段階的移行をサポートしています。
# 移行計画を自動生成
antigravity migrate plan --strategy=strangler-fig
# Phase 1: 外部インターフェース層のモダナイズ(2週間)
# Phase 2: ビジネスロジック層の分離(3週間)
# Phase 3: データアクセス層の刷新(2週間)
# Phase 4: レガシーコードの廃止(1週間)
各フェーズで、Antigravityは以下を自動生成します。
- 変更対象ファイルリスト: 優先度順にソート
- 移行コードのドラフト: 新しいアーキテクチャに準拠したコード
- テストケース: 既存の振る舞いを保証するテスト
リファクタリングの実行
具体的なリファクタリングは、Antigravityの対話型インターフェースで進めます。
# レガシーなServiceクラスをモダンな設計に変換
antigravity refactor UserService.java \
--target-pattern="clean-architecture" \
--preserve-behavior=true
# 変更差分のプレビュー
# - UserService.java → 3ファイルに分割
# ├── domain/User.java (エンティティ)
# ├── usecase/UserUseCase.java (ユースケース)
# └── adapter/UserRepositoryImpl.java (アダプタ)
--preserve-behavior=trueオプションにより、外部から見た振る舞いを変えずに内部構造だけをモダナイズします。これはSES現場で特に重要なポイントです。既存の機能テストが通り続けることを保証しながらリファクタリングを進められます。
AIによるテスト自動生成でデグレを防ぐ
レガシーコード移行で最大のリスクは**デグレーション(退行バグ)**です。テストがないコードを変更するのは、暗闇の中で配線工事をするようなものです。
テストケースの自動生成
Antigravityは、既存コードの振る舞いを解析してテストケースを自動生成します。
# 既存コードからテストを自動生成
antigravity generate-tests UserService.java \
--framework=junit5 \
--coverage-target=80
# 生成結果:
# ✅ 23 test cases generated
# ✅ Estimated coverage: 82%
# ✅ Edge cases detected: 7
生成されたテストは、リファクタリング前の振る舞いを「ゴールデンテスト」として固定します。これにより、リファクタリング中のどの時点でも、テストが通れば振る舞いが変わっていないことを確認できます。
ミューテーションテストによる品質検証
さらに、Antigravityはミューテーションテスト(コードに意図的なバグを入れてテストが検出できるか確認する手法)も自動実行します。
# ミューテーションテストの実行
antigravity mutation-test --scope=UserService
# Mutation Score: 78% (目標: 70%以上)
# Survived Mutants: 12 (テストで検出できなかった変異)
# → 追加テスト推奨箇所をハイライト表示
これにより、テスト自体の品質も担保しながら移行を進められます。
SES現場での移行プロジェクト進行のコツ
見積もりテクニック
Antigravityの解析結果を使えば、レガシーコード移行の工数見積もり精度が大幅に向上します。
# 移行工数の概算を取得
antigravity estimate --scope=full-migration
# 概算結果:
# コード解析・設計: 40h
# リファクタリング実施: 120h
# テスト作成・実行: 60h
# 検証・デプロイ: 20h
# 合計: 240h(±20%)
SES案件では、この見積もりを提案書のエビデンスとして活用できます。「AIが解析した客観的なデータに基づく見積もり」は、クライアントの信頼を得る強力な武器になります。
チーム分担の最適化
大規模な移行プロジェクトでは、Antigravityの依存関係グラフをもとに並行作業可能な範囲を特定します。
# 並行作業可能なモジュール群を特定
antigravity parallelize --team-size=4
# Team A: UserModule + AuthModule (依存関係なし)
# Team B: OrderModule + PaymentModule (依存関係なし)
# → 2チーム並行で工期を50%短縮可能
チーム開発の詳細はGoogle Antigravity チーム開発ガイドをご参照ください。
移行の進捗管理
Antigravityは移行の進捗をリアルタイムでトラッキングします。
# 移行進捗ダッシュボード
antigravity migrate status
# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
# 移行進捗: 67% ████████████░░░░░░
# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
# ✅ 完了: UserModule, AuthModule, CommonUtils
# 🔄 進行中: OrderModule (45%)
# ⏳ 未着手: PaymentModule, ReportModule
# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
# テストカバレッジ: 12% → 74% (+62%)
# 技術的負債スコア: 7.2 → 3.1 (-4.1)
移行完了後の品質担保と継続改善
移行が完了した後も、コードの品質を維持するための仕組みが必要です。
CI/CDパイプラインへの組み込み
移行後は、Antigravityの解析をCI/CDパイプラインに組み込んで継続的に品質を監視しましょう。詳しい設定方法はCI/CD自動化ガイドで解説しています。
# .github/workflows/quality-gate.yml
- name: Antigravity Quality Check
run: |
antigravity analyze --mode=quick
antigravity quality-gate \
--max-complexity=5 \
--min-coverage=80 \
--max-debt-score=3
アーキテクチャ適合性の継続監視
Antigravityのアーキテクチャフィットネス関数を使えば、新しいコードが設計方針に違反していないかを自動チェックできます。
# アーキテクチャルールを定義
antigravity arch-rules add \
--rule="domain層はinfra層に依存してはならない" \
--scope="src/domain/**"
# PRごとに自動チェック
antigravity arch-check --ci
# ✅ All architecture rules passed
コストの観点での継続改善はコスト最適化ガイドも参考にしてください。
まとめ:Antigravityでレガシーコード移行を「怖くない」ものに
レガシーコード移行は、SESエンジニアにとって避けて通れない課題です。しかし、Google Antigravityを活用すれば、以下のように移行プロジェクトのリスクと工数を大幅に削減できます。
| 従来のアプローチ | Antigravity活用 |
|---|---|
| 全体把握に数週間 | 数分で依存関係グラフ生成 |
| テスト作成に数ヶ月 | テスト自動生成で数日 |
| 工数見積もりが曖昧 | データに基づく客観的見積もり |
| デグレリスクが高い | 振る舞い保証テストで安全に移行 |
| 属人的な判断 | AIによる優先順位付け |
SES現場でレガシーコードに悩んでいるエンジニアの方は、ぜひAntigravityのコード解析モードから試してみてください。**「動いているから触るな」から「Antigravityがあるから安心して改善できる」**へ、チームの意識を変える第一歩になるはずです。
- Ep.1 使い方入門
- Ep.2 日本語化ガイド
- Ep.3 CI/CD自動化
- Ep.4 エンタープライズセキュリティ
- Ep.5 プロンプトエンジニアリング
- Ep.6 トラブルシューティング
- Ep.7 コスト最適化
- Ep.8 レガシーコード移行(この記事)
参考資料・出典
- Martin Fowler - Strangler Fig Application - ストラングラーフィグパターンの原典
- Michael Feathers - Working Effectively with Legacy Code - レガシーコード改善の名著
- Google Cloud - Application Modernization - Google公式のモダナイゼーションガイド
- Google Antigravity 公式ドキュメント - 公式リファレンス