今日のテクノロジーの急速な進化は、とても興味深いものです。これはつまり、新製品や成長のチャンス、イノベーションの機会があらゆる場所に転がっているということです。しかし、このような成長と変化のスピードには、特にセキュリティの面でデメリットもあります。たった一人の悪意のある第三者によって、企業は業務の大きな混乱や評判の低下、さらには収益の損失を被る可能性があるのです。
業界のリーダーたちがデジタルトランスフォーメーションの必要性や、古い、いわゆる「レガシー」システムへの依存に関する懸念について語っているのを聞いたことがあるかもしれません。レガシーコードそのものが必ずしも問題というわけではありませんが、最新のセキュリティツールと互換性がないことが多く、攻撃されやすい脆弱性につながることがあります。さらに、それが継続的なセキュリティ管理が求められるオープンソースコードと組み合わさることで、自社のコードベースが組織のデータやユーザー、そして評判を危険にさらしている可能性があります。
レガシーコードは、セキュリティ面やコンプライアンス面から見てリスクがあるだけでなく、メンテナンスにも多くの時間とコストがかかります。しかも、そもそもチームのデベロッパーがそのレガシーコードを理解しているとは限りません。
このように、業界全体がレガシーコードに依存している現状は、非常に大きな問題であり、コスト面でも深刻な課題です。では、どうすればこの状況から抜け出せるのでしょうか?
ここからは、レガシーコードとは何かを改めて整理しながら、AIによるコードリファクタリングを活用して、どのようにコードベースのセキュリティを高めていけるかを探っていきます。AI主導のテストやセキュリティ機能と組み合わせることで、コードリファクタリングはコードベースを未来へと導き、チーム全体が過去ではなく未来を見据えて動けるようになります。
レガシーコードとは
広い意味では、レガシーコードとは「以前のデベロッパーたちから引き継がれ、現在も使われ続けているコードベース」のことを指します。コードそのものは一応動作しているかもしれませんが、長年にわたって複数のデベロッパーが手を加えてきた可能性が高く、今のチームにとっては、どの変更が有用でどれが不要なのかを見極めるのが難しい場合があります。さらに、そのコードが古いフレームワークで書かれていたり、今のチーム内に使いこなせる人がいないような、古すぎる、もしくはすでに廃れたプログラミング言語で書かれていることもあります。
それではなぜ企業はレガシーコードに依存し続けているのか、不思議に思えるかもしれません。理由はさまざまですが、こう考えてみてください。あなたは古い家に住んでいるとします。その家は住み慣れていて落ち着くけれど、水回りは不安定で、電気配線も古く、ひとつ直すたびに別の場所が壊れるような状態です。本当はリフォームしたいけれど、それには業者の手配やいろいろな許可、数か月間の騒音と混乱、そして予算オーバーのリスクがつきものです。
だから、とりあえず壊れたところだけを応急処置で修理しながら、なんとか日々を過ごしている。完璧ではないけれど、とりあえず動いている。レガシーコードも同じようなものです。たとえ古くて非効率的であっても、慣れ親しんだ「機能する」ソリューションです。一から書き直すのは大変な作業で、コストがかかる上にリスクもあります。それに、新機能の開発や緊急のバグ対応に追われている中、大規模な改修を行えるような余裕はありません。
そのため、多くの企業がコードを更新せずに、レガシーコードを使い続けることを選択しています。その方が短期的に見て混乱が少ないからです。コードを更新するには、多くのコーディング作業やテスト作業が必要になります。しかも、古いコードの言語や仕組みを理解してもらうために、トレーニングが必要になる場合もあります。そういった内容が文書化されていない場合は、さらに対応が難しくなってしまうでしょう。
レガシーコードの問題点
他の多くの企業と同じように、レガシーコードを使い続けることを選択した場合、さまざまな問題に直面する可能性があります。 というのも、そのコードは新しいテクノロジーに対応して設計されていないため、たとえばAIツールのような最新ソフトウェアと連携させることができず、製品の性能やスケーラビリティに悪影響を与えるおそれがあります。結果的に、それが会社の成長を阻み、顧客体験の質を損なうことにもつながります。
レガシーコードの一番の懸念点は、それが5年前のものであれ50年前のものであれ、対応できるセキュリティスキャナーが存在しないかもしれない点です。つまり、更新中に何か問題があっても、それに気づけないかもしれないということです。さらに、更新を担当するデベロッパーがその言語や構造を十分に理解していない場合、意図せず新たな脆弱性を作り出してしまうリスクすらあります。最後に、多くの古いアプリケーションはCやC++で書かれています。これらはメモリ安全性が低い言語であり、実際、報告されている脆弱性のうち約70%が、こうした言語によるものです。
レガシーコードに対してセキュリティを確保する手段が限られていること、安全に更新する方法が少ないこと、結果として脆弱性が発生しやすくなること、これら3つの課題は、どんな業界の企業にとっても「見過ごすべきではないサイン」だと言えるでしょう。
米国のサイバーセキュリティ・インフラセキュリティ庁は、重要なインフラを危険にさらす可能性のある不適切な慣行の一覧を作成するにあたって、次のように述べています。
「重要なインフラや国家の重要機能を支える目的で、サポートが対象外または終了しているソフトウェアを使い続けることは非常に危険であり、国家の安全、経済の安全、そして公衆衛生や安全に対するリスクを著しく高める。このような危険な行為は、特にインターネット経由でアクセス可能なテクノロジーにおいて、重大な問題となる。」
国家の安全保障や公衆衛生に直接関わる業務ではなかったとしても、この警告は無関係ではありません。古いコードを使い続けることは、ベストプラクティスではなく、明らかな「悪い慣習」なのです。
ソリューション:コードリファクタリング
ソフトウェア開発者であり著者でもあるMartin Fowler氏によれば、 「リファクタリングとは、既存のコードベースの設計を改善するための統制された手法であり、コードの外部的な動作を変えることなく内部構造を再構築する、規律ある技術」とされています。
つまり、コードリファクタリングを行うことで、レガシーコードの元々の機能を損なうことなく、セキュリティを強化し、現代的なコードに生まれ変わらせることができるのです。
リファクタリングにはさまざまな手法があります。たとえば、不要な要素を取り除いてコードをシンプルにする「インラインリファクタリング」や、重複コードを削除する「抽象化によるリファクタリング」などが代表例です。ただし、リファクタリングを効果的に行うには時間と高い開発スキルが求められます。さらに、たとえ他のタスクで忙しかったとしても、多くのテストが必要になります。
そのため、コードリファクタリングは確かに、レガシーコードを未来に対応させ、読みやすく、効率的で、安全な状態に変える手段ではありますが、特に大規模なシステムにおいては、それ自体がひとつの大きなプロジェクトとなります。
AIができること
今やAIは、ソフトウェア開発のライフサイクル全体を加速させる存在になっています。そしてもちろん、AIがチームのリファクタリング作業を加速するためにできることもたくさんあります。たとえば、GitLab Duoのようなツールは、既存のコードの説明を補助したり、新しいコードの生成を助けたりすることで、レガシーコードのモダナイズにおける大きなハードルを乗り越える手助けをします。また、デベロッパーがそのコードの言語に詳しくなくても、AIが足りない部分を補います。テストやセキュリティの面でも、AIは根本的な原因を分析したり、テストケースを自動生成したり、脆弱性の修正をサポートしたりできます。AIをツールキットに取り入れることで、コードリファクタリングはようやく現実的に取り組めるプロジェクトになり、長らく後回しになっていた作業も、ようやく完了できるかもしれません。
GitLabの調査では、ソフトウェア開発ライフサイクル全体でAIを活用している人のうち、34%がレガシーコードのモダナイズにもAIを使っていることがわかっています。金融サービス業界では46%と、さらに高い結果となっています。
もちろん、AIを使い始めるときにはいくつか気をつけるべきこともあります。
まず、AIは完璧ではありません。テストやガードレール、そして人間の確認が必要です。時間のかかる手作業の一部を自動化して効率化することはできますが、すべてをAIに任せることはできません。特にセキュリティに関しては、AIだけに頼らず、他のツールと組み合わせて対策を行うことが重要です。その一環として、動的なソフトウェア部品表(SBOM)を作成することをおすすめします。これにより、レガシーコードを含むソフトウェア全体におけるライセンスやセキュリティリスクを可視化できます。
コードベースを未来へ導く
レガシーコードの保守からモダナイズへと踏み出すのは、大きなハードルに感じられるかもしれません。しかし、組織とユーザーデータの安全性を維持するためには最善の道です。適切なツールと手法を使えば、チームにとってはより効率的な、企業全体にとってもコスト効率の高い選択となり得ます。
古い言語や古いフレームワークに時間と労力を取られ、ストレスや遅延、ボトルネックに悩まされる必要はもうありません。AIにリファクタリングという骨の折れる作業を任せることで、コードの安全性や正しい動作を保ち、デベロッパーは本来の仕事である、「新しい製品や機能を開発し、顧客に価値を届けること」に集中できるようになります。
次のステップ
Source Lp How A Devsecops Platform Drives Business Success The Complete Guide
今すぐアクセスFrequently asked questions
主要なポイント
- レガシーコードは保守に多くのコストと時間がかかり、最新のセキュリティツールと互換性がない場合、業種を問わず組織にとって重大なリスクとなり得ます。
- コードリファクタリングとは、コードをより読みやすくし、コードベースの安定性を高めるとともに、デベロッパーの生産性と作業効率を向上させるための戦略です。
- AIによるコードリファクタリングは、予防的なセキュリティツールと併用することで、レガシーコードのモダナイズとセキュリティ脆弱性のリスクの軽減を同時に実現できます。