レガシーコード【legacy code】

レガシーコードとは?

過去に作られたソフトウェアのうち、現在の技術水準から見て古くなり、修正や機能追加が難しくなったソースコードのこと。単に年数が経過しているというだけでなく、仕組みの把握が困難で保守に多大な手間を要する状態を指す。
レガシーコードのイメージ画像

レガシーコードが生まれる背景には、システムの長期運用がある。一度リリースされたシステムは数年から数十年にわたって使われ続け、その間に担当者の交代や技術の変化が積み重なる。短期的な対応を優先した修正が繰り返されることで設計の整合性が崩れ、当初の意図が失われたまま誰も全体を把握していない状態に陥っていく。

構造が複雑化したコードは、テストが存在しないことも多く、一か所を変更すると別の箇所に予期しない影響が出やすい。コメントや設計書が不足していれば処理の目的すら読み取れず、新機能の追加も困難になる。古い開発言語やフレームワークへの依存が深まると、対応できる技術者の確保すら難しくなる場合がある。

「レガシーコード」(legacy code)という言葉は、2004年にマイケル・フェザーズ(Michael C. Feathers)氏が著書『Working Effectively with Legacy Code』(邦題:レガシーコード改善ガイド)の中で「テストのないコード」と定義したことで広まった。古さよりも検証の欠如を問題の核心と捉えたこの定義は現在も参照され、年代と保守性の両面を含む意味で使われている。

一方、レガシーコードは長年にわたり実運用を支えてきた実績を持ち、業務知識や例外処理が蓄積されたシステムでもある。安易に作り直すことが現実的でない場面は多く、動作を変えずに内部構造を整理する「リファクタリング」(refactoring)や、テストを後から整備して安全に変更できる範囲を広げる取り組みが行われている。

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。