システム改修のご依頼をいただきました Next.js/Laravel
先日、とある教育系の企業より、システム改修のご依頼をいただきました。
「過去に作ったシステムに色々と不備があり、改修して欲しい」というご依頼で。
お話を聞くと、
- 当時の開発者とは連絡をとっていない
- 起動したらエラーが多発する
- メール送信でやけに時間がかかる
- 定期的に処理が重くなる
- スパゲッティコードで手が出せない
- 仕様書などはない、コードのみ
などなど。
NDAなど契約を結ばせていただいた後、作業着手いたしました。
ステップ1 まずは現状分析
仕様書がなくコードのみということで、まずはコードから現状把握をする必要があります。
弊社ではReVive という仕組みを作っており、コード分析、リバースエンジニアリングを得意としておりますので、その仕組みを使いつつ、ClaudeCodeをサブとして使い、コード分析、現状の課題、改善点などを洗い出しました。
- コード・・87,000行
- 解析対象画面・・57画面
- APIエンドポイント・・106本
- 特定・分類したリスク・・83件(重大度 高23 / 中35 / 低25)
- AI基盤が自動抽出した構造化知見・・296件(平均信頼度0.965)
- 納品した解析ドキュメント・・35ファイル / 4, 425行 / 約57万文字
などなど。
かなり細かい内容なので、先方には抜粋したレポートを提出させていただき、対応継続することになりました。
ステップ2 徹底した環境整備
弊社では、コードを書く前に、徹底した環境整備を行います。
生成AIを活用するということで、どうしても出力にブレが起こるため、分厚いガードレールを何重にもしくイメージです。
- Lint (複雑度、ネストなど)
- 型チェック
- 各種テスト(Unit, E2E, 境界、プロパティ、ミューテーションなど)
- 仕様の概要版と詳細版の文章化
- issue発行・マイルストーン整備
- 敵対的レビュー
- 共通化できそうな箇所の洗い出し
などをびっしり敷き詰めます。
あっという間にテスト数は1000以上になりますが、品質を担保するためには欠かせません。
ガードレールをしき、仕様の文章化を行い、現状を把握し、issueごとに1件ずつ慎重に対応すると。
段階を踏み、どの順番で整備し進めると後続に負荷がかからないかなどを、特に前半は慎重に進めます。
生成された文章やコードもチェックし、分析をかけながらコード理解を深めていくイメージです。
環境整備にも3日ほどかけ、あとは順番に進めるだけという状態まで持っていきます。
補足 追加対応も柔軟に
環境整備を行ったあと、どんどんと作業を進めるうちに、当初には伺うことができなかった要件などが出てきます。
先方もこちらも確認が足りていなかったり、忘れていたり、コードを読むだけではわからないことが出てくる、ということは往々にして起こります。
最初から全てを理解・把握できていればいいのですが、現実にはなかなか難しい。
今回の場合は、途中からバージョンアップ、パフォーマンス向上、スパゲティコードの紐解きなどもありましたが、影響度を並列エージェントで徹底チェックし、納期までには間に合うという見立てのもと、全てお受けさせていただくことになりました。
もしエージェントが使えないとなれば間に合わない工数・業務量だと感じます。
AIエージェントをフル活用したシステム改修
今回のような課題・問題は、たくさんの企業で起こり得ると感じています。
AI以前に書かれたコードしかり、AI以後に書かれたコードしかり。
エンジニアの単価もどんどん上がっている状況で、なかなか依頼がしづらいことも増えているかと。
弊社では、AIエージェントをフル活用させていただくという条件にはなりますが、
適正価格で、現状分析させていただき、パフォーマンス・セキュリティ・メンテナンス性向上などを実施させていただきます。
もちろん新規機能開発もお受けしております。
システム開発や既存システムの改修、リプレイスなどでお困りの際は、ぜひお気軽にご連絡くださいませ。