📒

Claude Codeでレガシーシステムの刷新を進めた方法

に公開

導入

こんにちは、株式会社ナレッジセンスの須藤英寿です。
今回は、「Claude Code」を用いて、カナダの州政府が運用する大規模なシステムの刷新を進めた手法を紹介します。

https://www.anthropic.com/news/alberta-government-claude-cybersecurity

https://thevelocitywhitepapers.com/

サマリー

システムを運用する上で常に課題になるのが、古くなったシステムの運用です。長年にわたって改修が積み重なり、全体像が把握しにくいまま稼働を続けるシステムはたくさんあります。カナダ・アルバータ州政府も、例にもれず約1,280ものアプリケーションが動作しているにもかかわらず、メンテナンスが十分に行き届いていないため、セキュリティリスクにさらされていました。

そんなシステムに対して、Anthropicの「Claude Code」を使って、脆弱性調査、修正などを実施することで、システムの刷新を実現しました。今回は、この刷新を実現した方法について解説していこうと思います。

課題意識

古くテストや仕様書が不十分なコード

長い間運用されてきたシステムには、仕様書が存在していなかったり、自動テストが整備されていないシステムは少なくありません。このため、昔のコードを刷新しようとしても、元の動作を維持できることを保証するのが難しく、更新には膨大な時間を要することがあります。

またそうしたコードは同時に脆弱性の所在も不明なことが多く、潜在的な技術的負債の規模は大きくなりやすいです。今回紹介しているカナダの州政府のシステムでは、合計で数十億ドル相当に達していると算出されています。

手法

古くなったシステムの刷新のためにClaude Codeを使用して、以下の項目に沿って対応を進めました。

  • 大量のコードの調査
  • セキュリティ上の問題の特定
  • 修正コードの作成
  • テストの作成と実行
  • 古いシステムの再構築

これらを組み合わせて、システムの安全性と保守性を改善しました。

コード調査と実装

4億6600万行にものぼるコードを以下の手順に分解して調査します。

1. 機械的な検出

最初に静的に解析できるルールを使い、脆弱性につながりやすい既知のコードパターンを抽出します。前後の文脈を考慮していないものになるため、誤検知も多いですが後続の調査の足掛かりに利用します。

2. Claudeを利用したレビュー

Claudeは、問題が存在する理由を判断し、以下の形式で報告します。

  • 該当ファイル
  • 該当行
  • 問題の内容

これにより、人間の開発者が調査結果を検証しやすくしています。
最終的に人間が問題を検証することを前提とした仕組みになっています。

3. Claudeを利用して修正まで施す

問題の調査だけではなく少ない修正で済むものについては、以下の手順で修正作業を完了させます。

  • 修正のためのコードの生成
  • 修正したコードが正常に動作することをテストで検証
  • 修正したコードを含めてビルド
  • 人間の開発者に確認を求める

自動テストが存在しないシステムでは、先にテストを作成して既存の挙動を確認できる状態にしたうえで、脆弱性を修正します。
テストを先に作成するのは、修正による既存機能の回帰を検知しやすくし、新たな不具合が生じるリスクを抑えるためです。

4. Claudeを利用してシステム再構築

既存コードが古すぎる、または複雑すぎて効率的な修正が難しい場合には部分的な修正ではなく、Claudeを利用して新しい言語や設計で作り直します。システムの再構築の際には既存のシステムを解析して、

  • 画面
  • 業務ワークフロー
  • API連携とエンドポイント
  • データベースのスキーマとテーブル
  • ビジネスルール
  • 依存関係

を整理し、保守しやすい構造へ再構築します。
こちらも最後には人間の開発者によってレビューが行われ、承認されたものが採用されます。

コードの保守

一度のシステムの修正にとどまらず、繰り返し実行するエージェントも作成します。ポイントは、役割を複数のエージェントに分解して運用している点です。以下は実際に作成されたエージェントの内容です。

レッドチーム

攻撃者の立場からアプリケーションを外部から調査します。

  • 外部から侵入できないか
  • 発見した弱点をどう悪用できるか
  • 複数の弱点を組み合わせられないか

などを考えて、攻撃経路がないかを報告します。

ブルーチーム

防御側の立場からシステムを評価します。

具体的には、国際的なセキュリティ基準と照合して、それに見合っていない箇所を見つけて、どこを修正する必要があるかを判断します。レビューの時と同様に、具体的な修正計画まで作成します。

その他

この他にも、コードの品質を検査するエージェントや、住民向け文面の品質や、AI特有の不自然な表現が含まれていないかを確認するエージェントなども存在しています。

成果

記事だけではなく、関連ホワイトペーパーから、成果を抜粋していきます。

大きな成果 [1] として挙げられているのは、25年前に5か月かけて開発されたシステム(暖房費補助制度のシステム)のプロトタイプを4日で作成することに成功している点です。ホワイトペーパーでは、25倍の速度向上と説明されています。ただし、これは能力実証のためのプロトタイプであり、元のシステムを開発して仕様を熟知している職員本人が評価した事例です。この結果を、あらゆる新規開発や本番システムの全面刷新にそのまま当てはめることはできません。

まとめ

今回はClaude Codeを用いて、実際に稼働する大規模なレガシーシステム群を刷新するプロジェクトについて紹介しました。人が入ることを前提として、どこまでをエージェントに任せて、どこからを人が見ていくのかを丁寧に切り分けていてすぐに開発の現場に取り入れられそうだと実感しました。
実際に稼働しているシステムでここまでコーディングエージェントを大規模に導入して、コードを改善したという記録は貴重なので、皆様もぜひ参考にしていただければと思います。

脚注
  1. こちらより抜粋 ↩︎

ナレッジセンス - 生成AIとRAGの実装戦略・技術ブログ

Discussion