[{"data":1,"prerenderedAt":496},["ShallowReactive",2],{"/ja-jp/the-source/authors/joel-krooswyk":3,"footer-ja-jp":34,"the-source-banner-ja-jp":344,"the-source-navigation-ja-jp":356,"the-source-newsletter-ja-jp":383,"footer-source-/ja-jp/the-source/authors/joel-krooswyk/":394,"authors-ja-jp":404,"categories-ja-jp":434,"joel-krooswyk-articles-list-ja-jp":435},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"config":8,"seo":10,"content":12,"type":26,"slug":27,"_id":28,"_type":29,"title":11,"_source":30,"_file":31,"_stem":32,"_extension":33},"/ja-jp/the-source/authors/joel-krooswyk","authors",false,"",{"layout":9},"the-source",{"title":11},"Joel Krooswyk",[13,24],{"componentName":14,"componentContent":15},"TheSourceAuthorHero",{"config":16,"name":11,"role":19,"bio":20,"headshot":21},{"gitlabHandle":17,"linkedInProfileUrl":18},"jkrooswyk","https://www.linkedin.com/in/joelrkrooswyk/","連邦CTO","Joel KrooswykはGitLabの連邦CTOです。Joelは2017年からGitLabの成長に積極的に関わってきました。25年にわたるリーダーシップの経験は、米国の公共部門だけでなく、世界中の中小企業、中堅企業、大企業にも及んでいます。Joelは、政府の政策に関する深い専門知識と、テクノロジー、ソフトウェア開発、AI、サイバーセキュリティにおける豊富な経験を兼ね備えており、産業界や政府機関から、政策の解説や対応について頻繁に依頼を受けています。",{"altText":11,"config":22},{"src":23},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1751463423/mkmdhuxsjggfvokdmdv7.jpg",{"componentName":25},"TheSourceArticlesList","author","joel-krooswyk","content:ja-jp:the-source:authors:joel-krooswyk.yml","yaml","content","ja-jp/the-source/authors/joel-krooswyk.yml","ja-jp/the-source/authors/joel-krooswyk","yml",{"_path":35,"_dir":36,"_draft":6,"_partial":6,"_locale":7,"data":37,"_id":340,"_type":29,"title":341,"_source":30,"_file":342,"_stem":343,"_extension":33},"/shared/ja-jp/main-footer","ja-jp",{"text":38,"source":39,"edit":45,"contribute":50,"config":55,"items":60,"minimal":332},"GitはSoftware Freedom Conservancyの商標です。当社は「GitLab」をライセンスに基づいて使用しています",{"text":40,"config":41},"ページのソースを表示",{"href":42,"dataGaName":43,"dataGaLocation":44},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":46,"config":47},"このページを編集",{"href":48,"dataGaName":49,"dataGaLocation":44},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":51,"config":52},"ご協力をお願いします",{"href":53,"dataGaName":54,"dataGaLocation":44},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":56,"facebook":57,"youtube":58,"linkedin":59},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[61,88,161,232,294],{"title":62,"links":63,"subMenu":69},"プラットフォーム",[64],{"text":65,"config":66},"DevSecOpsプラットフォーム",{"href":67,"dataGaName":68,"dataGaLocation":44},"/ja-jp/platform/","devsecops platform",[70],{"title":71,"links":72},"価格",[73,78,83],{"text":74,"config":75},"プランの表示",{"href":76,"dataGaName":77,"dataGaLocation":44},"/ja-jp/pricing/","view plans",{"text":79,"config":80},"Premiumを選ぶ理由",{"href":81,"dataGaName":82,"dataGaLocation":44},"/ja-jp/pricing/premium/","why premium",{"text":84,"config":85},"Ultimateを選ぶ理由",{"href":86,"dataGaName":87,"dataGaLocation":44},"/ja-jp/pricing/ultimate/","why ultimate",{"title":89,"links":90},"ソリューション",[91,96,101,106,111,116,121,126,131,136,141,146,151,156],{"text":92,"config":93},"デジタルトランスフォーメーション",{"href":94,"dataGaName":95,"dataGaLocation":44},"/ja-jp/topics/digital-transformation/","digital transformation",{"text":97,"config":98},"セキュリティとコンプライアンス",{"href":99,"dataGaName":100,"dataGaLocation":44},"/ja-jp/solutions/application-security-testing/","Application security testing",{"text":102,"config":103},"自動化されたソフトウェアデリバリー",{"href":104,"dataGaName":105,"dataGaLocation":44},"/ja-jp/solutions/delivery-automation/","automated software delivery",{"text":107,"config":108},"アジャイル開発",{"href":109,"dataGaName":110,"dataGaLocation":44},"/ja-jp/solutions/agile-delivery/","agile delivery",{"text":112,"config":113},"クラウドトランスフォーメーション",{"href":114,"dataGaName":115,"dataGaLocation":44},"/ja-jp/topics/cloud-native/","cloud transformation",{"text":117,"config":118},"SCM",{"href":119,"dataGaName":120,"dataGaLocation":44},"/ja-jp/solutions/source-code-management/","source code management",{"text":122,"config":123},"CI/CD",{"href":124,"dataGaName":125,"dataGaLocation":44},"/ja-jp/solutions/continuous-integration/","continuous integration & delivery",{"text":127,"config":128},"バリューストリーム管理",{"href":129,"dataGaName":130,"dataGaLocation":44},"/ja-jp/solutions/value-stream-management/","value stream management",{"text":132,"config":133},"GitOps",{"href":134,"dataGaName":135,"dataGaLocation":44},"/ja-jp/solutions/gitops/","gitops",{"text":137,"config":138},"Enterprise",{"href":139,"dataGaName":140,"dataGaLocation":44},"/ja-jp/enterprise/","enterprise",{"text":142,"config":143},"スモールビジネス",{"href":144,"dataGaName":145,"dataGaLocation":44},"/ja-jp/small-business/","small business",{"text":147,"config":148},"公共機関",{"href":149,"dataGaName":150,"dataGaLocation":44},"/ja-jp/solutions/public-sector/","public sector",{"text":152,"config":153},"教育",{"href":154,"dataGaName":155,"dataGaLocation":44},"/ja-jp/solutions/education/","education",{"text":157,"config":158},"金融サービス",{"href":159,"dataGaName":160,"dataGaLocation":44},"/ja-jp/solutions/finance/","financial services",{"title":162,"links":163},"関連リソース",[164,169,174,179,184,189,193,197,202,207,212,217,222,227],{"text":165,"config":166},"インストール",{"href":167,"dataGaName":168,"dataGaLocation":44},"/ja-jp/install/","install",{"text":170,"config":171},"クイックスタートガイド",{"href":172,"dataGaName":173,"dataGaLocation":44},"/ja-jp/get-started/","quick setup checklists",{"text":175,"config":176},"学ぶ",{"href":177,"dataGaName":178,"dataGaLocation":44},"https://university.gitlab.com/","learn",{"text":180,"config":181},"製品ドキュメント",{"href":182,"dataGaName":183,"dataGaLocation":44},"https://docs.gitlab.com/","docs",{"text":185,"config":186},"ブログ",{"href":187,"dataGaName":188},"/ja-jp/blog/","blog",{"text":190,"config":191},"お客様の成功事例",{"href":192,"dataGaLocation":44},"/ja-jp/customers/",{"text":194,"config":195},"お客様成功事例",{"href":192,"dataGaName":196,"dataGaLocation":44},"customer success stories",{"text":198,"config":199},"リモート",{"href":200,"dataGaName":201,"dataGaLocation":44},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"text":203,"config":204},"GitLabサービス",{"href":205,"dataGaName":206,"dataGaLocation":44},"/ja-jp/services/","services",{"text":208,"config":209},"TeamOps",{"href":210,"dataGaName":211,"dataGaLocation":44},"/ja-jp/teamops/","teamops",{"text":213,"config":214},"コミュニティ",{"href":215,"dataGaName":216,"dataGaLocation":44},"/community/","community",{"text":218,"config":219},"フォーラム",{"href":220,"dataGaName":221,"dataGaLocation":44},"https://forum.gitlab.com/","forum",{"text":223,"config":224},"イベント",{"href":225,"dataGaName":226,"dataGaLocation":44},"/events/","events",{"text":228,"config":229},"パートナー",{"href":230,"dataGaName":231,"dataGaLocation":44},"/ja-jp/partners/","partners",{"title":233,"links":234},"Company",[235,240,245,250,255,260,265,269,274,279,284,289],{"text":236,"config":237},"GitLabについて",{"href":238,"dataGaName":239,"dataGaLocation":44},"/ja-jp/company/","company",{"text":241,"config":242},"採用情報",{"href":243,"dataGaName":244,"dataGaLocation":44},"/jobs/","jobs",{"text":246,"config":247},"経営陣",{"href":248,"dataGaName":249,"dataGaLocation":44},"/company/team/e-group/","leadership",{"text":251,"config":252},"チーム",{"href":253,"dataGaName":254,"dataGaLocation":44},"/company/team/","team",{"text":256,"config":257},"ハンドブック",{"href":258,"dataGaName":259,"dataGaLocation":44},"https://handbook.gitlab.com/","handbook",{"text":261,"config":262},"投資家向け情報",{"href":263,"dataGaName":264,"dataGaLocation":44},"https://ir.gitlab.com/","investor relations",{"text":266,"config":267},"Sustainability",{"href":268,"dataGaName":266,"dataGaLocation":44},"/sustainability/",{"text":270,"config":271},"ダイバーシティ、インクルージョン、ビロンギング（DIB）",{"href":272,"dataGaName":273,"dataGaLocation":44},"/ja-jp/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":275,"config":276},"トラストセンター",{"href":277,"dataGaName":278,"dataGaLocation":44},"/ja-jp/security/","trust center",{"text":280,"config":281},"ニュースレター",{"href":282,"dataGaName":283,"dataGaLocation":44},"/company/contact/","newsletter",{"text":285,"config":286},"プレス",{"href":287,"dataGaName":288,"dataGaLocation":44},"/press/","press",{"text":290,"config":291},"現代奴隷制の透明性に関する声明",{"href":292,"dataGaName":293,"dataGaLocation":44},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":295,"links":296},"お問い合わせ",[297,301,306,311,316,321,326],{"text":295,"config":298},{"href":299,"dataGaName":300,"dataGaLocation":44},"/ja-jp/sales/","sales",{"text":302,"config":303},"サポートを受ける",{"href":304,"dataGaName":305,"dataGaLocation":44},"/support/","get help",{"text":307,"config":308},"カスタマーポータル",{"href":309,"dataGaName":310,"dataGaLocation":44},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"text":312,"config":313},"ステータス",{"href":314,"dataGaName":315,"dataGaLocation":44},"https://status.gitlab.com/","status",{"text":317,"config":318},"利用規約",{"href":319,"dataGaName":320,"dataGaLocation":44},"/terms/","terms of use",{"text":322,"config":323},"プライバシーに関する声明",{"href":324,"dataGaName":325,"dataGaLocation":44},"/ja-jp/privacy/","privacy statement",{"text":327,"config":328},"Cookieの設定",{"dataGaName":329,"dataGaLocation":44,"id":330,"isOneTrustButton":331},"cookie preferences","ot-sdk-btn",true,{"items":333},[334,336,338],{"text":317,"config":335},{"href":319,"dataGaName":320,"dataGaLocation":44},{"text":322,"config":337},{"href":324,"dataGaName":325,"dataGaLocation":44},{"text":327,"config":339},{"dataGaName":329,"dataGaLocation":44,"id":330,"isOneTrustButton":331},"content:shared:ja-jp:main-footer.yml","Main Footer","shared/ja-jp/main-footer.yml","shared/ja-jp/main-footer",{"_path":345,"_dir":346,"_draft":6,"_partial":6,"_locale":7,"id":347,"visibility":331,"title":348,"button":349,"_id":353,"_type":29,"_source":30,"_file":354,"_stem":355,"_extension":33},"/shared/ja-jp/the-source/banner/the-economics-of-software-innovation-2025-08-18","banner","The Economics of Software Innovation","The Economics of Software Innovation—AI’s $750 Billion Opportunity",{"config":350,"text":352},{"href":351},"/software-innovation-report/","Get the research report","content:shared:ja-jp:the-source:banner:the-economics-of-software-innovation-2025-08-18.yml","shared/ja-jp/the-source/banner/the-economics-of-software-innovation-2025-08-18.yml","shared/ja-jp/the-source/banner/the-economics-of-software-innovation-2025-08-18",{"_path":357,"_dir":9,"_draft":6,"_partial":6,"_locale":7,"logo":358,"subscribeLink":363,"navItems":367,"_id":379,"_type":29,"title":380,"_source":30,"_file":381,"_stem":382,"_extension":33},"/shared/ja-jp/the-source/navigation",{"altText":359,"config":360},"the source logo",{"src":361,"href":362},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1750191004/t7wz1klfb2kxkezksv9t.svg","/ja-jp/the-source/",{"text":364,"config":365},"購読する",{"href":366},"#subscribe",[368,372,375],{"text":369,"config":370},"人工知能",{"href":371},"/ja-jp/the-source/ai/",{"text":97,"config":373},{"href":374},"/ja-jp/the-source/security/",{"text":376,"config":377},"プラットフォームとインフラストラクチャ",{"href":378},"/ja-jp/the-source/platform/","content:shared:ja-jp:the-source:navigation.yml","Navigation","shared/ja-jp/the-source/navigation.yml","shared/ja-jp/the-source/navigation",{"_path":384,"_dir":9,"_draft":6,"_partial":6,"_locale":7,"title":385,"description":386,"submitMessage":387,"formData":388,"_id":391,"_type":29,"_source":30,"_file":392,"_stem":393,"_extension":33},"/shared/ja-jp/the-source/newsletter","The Sourceニュースレター","ソフトウェア開発の未来への洞察に関する最新情報を入手しましょう。","The Sourceのニュースレターへの登録が完了しました。",{"config":389},{"formId":390,"formName":283,"hideRequiredLabel":331},28467,"content:shared:ja-jp:the-source:newsletter.yml","shared/ja-jp/the-source/newsletter.yml","shared/ja-jp/the-source/newsletter",{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"config":395,"seo":396,"content":397,"type":26,"slug":27,"_id":28,"_type":29,"title":11,"_source":30,"_file":31,"_stem":32,"_extension":33},{"layout":9},{"title":11},[398,403],{"componentName":14,"componentContent":399},{"config":400,"name":11,"role":19,"bio":20,"headshot":401},{"gitlabHandle":17,"linkedInProfileUrl":18},{"altText":11,"config":402},{"src":23},{"componentName":25},{"amanda-rueda":405,"andre-michael-braun":406,"andrew-haschka":407,"ayoub-fandi":408,"brian-wald":409,"bryan-ross":410,"chandler-gibbons":411,"dave-steer":412,"ddesanto":413,"derek-debellis":414,"emilio-salvador":415,"erika-feldman":416,"george-kichukov":417,"gitlab":418,"grant-hickman":419,"haim-snir":420,"iganbaruch":421,"jlongo":422,"joel-krooswyk":11,"josh-lemos":423,"julie-griffin":424,"kristina-weis":425,"lee-faus":426,"ncregan":427,"rschulman":428,"sabrina-farmer":429,"sandra-gittlen":430,"sharon-gaudin":431,"stephen-walters":432,"taylor-mccaslin":433},"Amanda Rueda","Andre Michael Braun","Andrew Haschka","Ayoub Fandi","Brian Wald","Bryan Ross","Chandler Gibbons","Dave Steer","David DeSanto","Derek DeBellis","Emilio Salvador","Erika Feldman","George Kichukov","GitLab","Grant Hickman","Haim Snir","Itzik Gan Baruch","Joseph Longo","Josh Lemos","Julie Griffin","Kristina Weis","Lee Faus","Niall Cregan","Robin Schulman","Sabrina Farmer","Sandra Gittlen","Sharon Gaudin","Stephen Walters","Taylor McCaslin",{"ai":369,"platform":376,"security":97},{"allArticles":436,"visibleArticles":495,"showAllBtn":331},[437,476],{"_path":438,"_dir":439,"_draft":6,"_partial":6,"_locale":7,"slug":440,"type":441,"category":439,"config":442,"seo":445,"content":449,"_id":473,"_type":29,"title":446,"_source":30,"_file":474,"_stem":475,"_extension":33,"description":447,"date":450,"timeToRead":451,"heroImage":448,"keyTakeaways":452,"articleBody":456,"faq":457},"/ja-jp/the-source/security/why-legacy-code-is-a-security-risk-and-how-ai-can-help","security","why-legacy-code-is-a-security-risk-and-how-ai-can-help","article",{"layout":9,"template":443,"featured":6,"author":27,"sourceCTA":444,"isHighlighted":6,"authorName":11},"TheSourceArticle","source-lp-how-a-devsecops-platform-drives-business-success-the-complete-guide",{"title":446,"description":447,"ogDescription":447,"ogImage":448,"ogTitle":446},"レガシーコードがセキュリティリスクとなる理由と、AIを活用した対策法","AIによるコードリファクタリングが、レガシーシステムをモダナイズし、セキュリティ対策を強化し、組織を未来へと導く仕組みをご紹介します。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1751463670/cdynzww9p2annh3mmbhl.png",{"title":446,"description":447,"date":450,"timeToRead":451,"heroImage":448,"keyTakeaways":452,"articleBody":456,"faq":457},"2025-01-15T00:00:00.000Z","6分で読めます",[453,454,455],"レガシーコードは保守に多くのコストと時間がかかり、最新のセキュリティツールと互換性がない場合、業種を問わず組織にとって重大なリスクとなり得ます。","コードリファクタリングとは、コードをより読みやすくし、コードベースの安定性を高めるとともに、デベロッパーの生産性と作業効率を向上させるための戦略です。","AIによるコードリファクタリングは、予防的なセキュリティツールと併用することで、レガシーコードのモダナイズとセキュリティ脆弱性のリスクの軽減を同時に実現できます。","今日のテクノロジーの急速な進化は、とても興味深いものです。これはつまり、新製品や成長のチャンス、イノベーションの機会があらゆる場所に転がっているということです。しかし、このような成長と変化のスピードには、特にセキュリティの面でデメリットもあります。たった一人の悪意のある第三者によって、企業は業務の大きな混乱や評判の低下、さらには収益の損失を被る可能性があるのです。\n\n業界のリーダーたちがデジタルトランスフォーメーションの必要性や、古い、いわゆる「レガシー」システムへの依存に関する懸念について語っているのを聞いたことがあるかもしれません。レガシーコードそのものが必ずしも問題というわけではありませんが、最新のセキュリティツールと互換性がないことが多く、攻撃されやすい脆弱性につながることがあります。さらに、それが継続的なセキュリティ管理が求められるオープンソースコードと組み合わさることで、自社のコードベースが組織のデータやユーザー、そして評判を危険にさらしている可能性があります。\n\nレガシーコードは、セキュリティ面やコンプライアンス面から見てリスクがあるだけでなく、メンテナンスにも多くの時間とコストがかかります。しかも、そもそもチームのデベロッパーがそのレガシーコードを理解しているとは限りません。\n\nこのように、業界全体がレガシーコードに依存している現状は、非常に大きな問題であり、コスト面でも深刻な課題です。では、どうすればこの状況から抜け出せるのでしょうか？\n\nここからは、レガシーコードとは何かを改めて整理しながら、AIによるコードリファクタリングを活用して、どのようにコードベースのセキュリティを高めていけるかを探っていきます。AI主導のテストやセキュリティ機能と組み合わせることで、コードリファクタリングはコードベースを未来へと導き、チーム全体が過去ではなく未来を見据えて動けるようになります。\n\n## レガシーコードとは\n\n広い意味では、レガシーコードとは「以前のデベロッパーたちから引き継がれ、現在も使われ続けているコードベース」のことを指します。コードそのものは一応動作しているかもしれませんが、長年にわたって複数のデベロッパーが手を加えてきた可能性が高く、今のチームにとっては、どの変更が有用でどれが不要なのかを見極めるのが難しい場合があります。さらに、そのコードが古いフレームワークで書かれていたり、今のチーム内に使いこなせる人がいないような、古すぎる、もしくはすでに廃れたプログラミング言語で書かれていることもあります。\n\nそれではなぜ企業はレガシーコードに依存し続けているのか、不思議に思えるかもしれません。理由はさまざまですが、こう考えてみてください。あなたは古い家に住んでいるとします。その家は住み慣れていて落ち着くけれど、水回りは不安定で、電気配線も古く、ひとつ直すたびに別の場所が壊れるような状態です。本当はリフォームしたいけれど、それには業者の手配やいろいろな許可、数か月間の騒音と混乱、そして予算オーバーのリスクがつきものです。\n\nだから、とりあえず壊れたところだけを応急処置で修理しながら、なんとか日々を過ごしている。完璧ではないけれど、とりあえず動いている。レガシーコードも同じようなものです。たとえ古くて非効率的であっても、慣れ親しんだ「機能する」ソリューションです。一から書き直すのは大変な作業で、コストがかかる上にリスクもあります。それに、新機能の開発や緊急のバグ対応に追われている中、大規模な改修を行えるような余裕はありません。\n\nそのため、多くの企業がコードを更新せずに、レガシーコードを使い続けることを選択しています。その方が短期的に見て混乱が少ないからです。コードを更新するには、多くのコーディング作業やテスト作業が必要になります。しかも、古いコードの言語や仕組みを理解してもらうために、トレーニングが必要になる場合もあります。そういった内容が文書化されていない場合は、さらに対応が難しくなってしまうでしょう。\n\n## レガシーコードの問題点\n\n他の多くの企業と同じように、レガシーコードを使い続けることを選択した場合、さまざまな問題に直面する可能性があります。 というのも、そのコードは新しいテクノロジーに対応して設計されていないため、たとえばAIツールのような最新ソフトウェアと連携させることができず、製品の性能やスケーラビリティに悪影響を与えるおそれがあります。結果的に、それが会社の成長を阻み、顧客体験の質を損なうことにもつながります。\n\nレガシーコードの一番の懸念点は、それが5年前のものであれ50年前のものであれ、対応できるセキュリティスキャナーが存在しないかもしれない点です。つまり、更新中に何か問題があっても、それに気づけないかもしれないということです。さらに、更新を担当するデベロッパーがその言語や構造を十分に理解していない場合、意図せず新たな脆弱性を作り出してしまうリスクすらあります。最後に、多くの古いアプリケーションはCやC++で書かれています。これらはメモリ安全性が低い言語であり、実際、[報告されている脆弱性のうち約70%](https://www.cisa.gov/news-events/news/urgent-need-memory-safety-software-products)が、こうした言語によるものです。\n\nレガシーコードに対してセキュリティを確保する手段が限られていること、安全に更新する方法が少ないこと、結果として脆弱性が発生しやすくなること、これら3つの課題は、どんな業界の企業にとっても「見過ごすべきではないサイン」だと言えるでしょう。\n\n米国の[サイバーセキュリティ・インフラセキュリティ庁](https://www.cisa.gov/stopransomware/bad-practices)は、重要なインフラを危険にさらす可能性のある不適切な慣行の一覧を作成するにあたって、次のように述べています。\n\n「重要なインフラや国家の重要機能を支える目的で、サポートが対象外または終了しているソフトウェアを使い続けることは非常に危険であり、国家の安全、経済の安全、そして公衆衛生や安全に対するリスクを著しく高める。このような危険な行為は、特にインターネット経由でアクセス可能なテクノロジーにおいて、重大な問題となる。」\n\n国家の安全保障や公衆衛生に直接関わる業務ではなかったとしても、この警告は無関係ではありません。古いコードを使い続けることは、ベストプラクティスではなく、明らかな「悪い慣習」なのです。\n\n## ソリューション：コードリファクタリング\n\nソフトウェア開発者であり著者でもある[Martin Fowler](https://www.martinfowler.com/)氏によれば、\n「リファクタリングとは、既存のコードベースの設計を改善するための統制された手法であり、コードの外部的な動作を変えることなく内部構造を再構築する、規律ある技術」とされています。\n\nつまり、コードリファクタリングを行うことで、レガシーコードの元々の機能を損なうことなく、セキュリティを強化し、現代的なコードに生まれ変わらせることができるのです。\n\nリファクタリングにはさまざまな手法があります。たとえば、不要な要素を取り除いてコードをシンプルにする「インラインリファクタリング」や、重複コードを削除する「抽象化によるリファクタリング」などが代表例です。ただし、リファクタリングを効果的に行うには時間と高い開発スキルが求められます。さらに、たとえ他のタスクで忙しかったとしても、多くのテストが必要になります。\n\nそのため、コードリファクタリングは確かに、レガシーコードを未来に対応させ、読みやすく、効率的で、安全な状態に変える手段ではありますが、特に大規模なシステムにおいては、それ自体がひとつの大きなプロジェクトとなります。\n\n## AIができること\n\n今やAIは、ソフトウェア開発のライフサイクル全体を加速させる存在になっています。そしてもちろん、[AIがチームのリファクタリング作業を加速するためにできること](https://about.gitlab.com/blog/refactor-code-into-modern-languages-with-ai-powered-gitlab-duo/)もたくさんあります。たとえば、[GitLab Duo](https://about.gitlab.com/blog/gitlab-duo-chat-now-generally-available/)のようなツールは、既存のコードの説明を補助したり、新しいコードの生成を助けたりすることで、レガシーコードのモダナイズにおける大きなハードルを乗り越える手助けをします。また、デベロッパーがそのコードの言語に詳しくなくても、AIが足りない部分を補います。テストやセキュリティの面でも、AIは[根本的な原因を分析したり、テストケースを自動生成したり](https://about.gitlab.com/blog/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd/)、[脆弱性の修正をサポートしたり](https://about.gitlab.com/the-source/ai/understand-and-resolve-vulnerabilities-with-ai-powered-gitlab-duo/)できます。AIをツールキットに取り入れることで、コードリファクタリングはようやく現実的に取り組めるプロジェクトになり、長らく後回しになっていた作業も、ようやく完了できるかもしれません。\n\n[GitLabの調査](https://about.gitlab.com/developer-survey/2024/ai/)では、ソフトウェア開発ライフサイクル全体でAIを活用している人のうち、34%がレガシーコードのモダナイズにもAIを使っていることがわかっています。金融サービス業界では46%と、さらに高い結果となっています。\n\nもちろん、AIを使い始めるときにはいくつか気をつけるべきこともあります。\n\nまず、AIは完璧ではありません。テストやガードレール、そして人間の確認が必要です。時間のかかる手作業の一部を自動化して効率化することはできますが、すべてをAIに任せることはできません。特にセキュリティに関しては、AIだけに頼らず、他のツールと組み合わせて対策を行うことが重要です。その一環として、[動的なソフトウェア部品表（SBOM）](https://about.gitlab.com/blog/the-ultimate-guide-to-sboms/)を作成することをおすすめします。これにより、レガシーコードを含むソフトウェア全体におけるライセンスやセキュリティリスクを可視化できます。\n\n## コードベースを未来へ導く\n\nレガシーコードの保守からモダナイズへと踏み出すのは、大きなハードルに感じられるかもしれません。しかし、組織とユーザーデータの安全性を維持するためには最善の道です。適切なツールと手法を使えば、チームにとってはより効率的な、企業全体にとってもコスト効率の高い選択となり得ます。\n\n古い言語や古いフレームワークに時間と労力を取られ、ストレスや遅延、ボトルネックに悩まされる必要はもうありません。AIにリファクタリングという骨の折れる作業を任せることで、コードの安全性や正しい動作を保ち、デベロッパーは本来の仕事である、「新しい製品や機能を開発し、顧客に価値を届けること」に集中できるようになります。",[458,461,464,467,470],{"header":459,"content":460},"なぜレガシーコードはセキュリティリスクとなるのですか？","レガシーコードは、古いフレームワークやプログラミング言語を使用していることが多く、現代のセキュリティ対策が施されていません。そのため、最新のセキュリティツールとの互換性がなく、脆弱性のリスクが高まります。さらにサポート対象外、またはサポートが終了したソフトウェアは、攻撃者に悪用されやすく、データの整合性や安全性を損なうおそれがあります。",{"header":462,"content":463},"AIによるコードリファクタリングで、レガシーコードのセキュリティはどう向上しますか？","AIを活用したコードリファクタリングは、以下のような方法でレガシーシステムの安全性を高めます。\n - 古い、または脆弱なコードパターンを検出し、安全な書き方を提案\n - コードの動作を変えずに、可読性や保守性を向上できるよう自動で改善\n - セキュリティテストを生成し、脆弱性の根本原因を分析して、迅速な修正を支援\nこのアプローチにより、手作業の負担を減らし、より安全かつ効率的でスケーラブルなコードベースへの移行を加速させます。",{"header":465,"content":466},"AIなしでレガシーコードを保守する際の課題は？","以下のような課題があります。\n - __セキュリティ対応の欠如__：レガシーコードには対応するセキュリティスキャナーがないことがある\n - __複雑で古い構造__：デベロッパーが古いフレームワークやコードの知識を持っていない場合、保守や更新が難しい\n - __保守コストが高い__：保守にかかる時間とコストが大きく、イノベーションの妨げになる\n - __セキュリティリスク__：脆弱性や攻撃の対象になりやすく、情報漏えいのリスクが高まる",{"header":468,"content":469},"GitLabは、AIによるリファクタリングとレガシーコードのモダナイズにどう対応していますか？","GitLabはGitLab Duoを通して、レガシーコードの説明を提供し、デベロッパーがレガシーコードを理解できるように支援します。また、新しいコードの生成も行います。さらに、以下の機能も提供しています。\n - レガシーコードの脆弱性を検出する、AI主導のセキュリティスキャン\n - コードのセキュリティを強化する、自動テストと修正\n - レガシーコンポーネントを含む、全体のライセンスとセキュリティリスクを可視化する、動的ソフトウェア部品表（SBOM）",{"header":471,"content":472},"AIを使ってレガシーコードをリファクタリングするメリットは何ですか？","以下のようなメリットがあります。\n - __セキュリティの強化__：AIが脆弱性を特定・軽減し、セキュリティ体制を向上\n - __生産性の向上__：繰り返しの作業を自動化することで、デベロッパーがより価値ある仕事に集中できる\n - __コスト削減__：最新のフレームワークやツールに対応させることで、保守コストを抑えられる\n - __スケーラブルなモダナイズ__：複雑なコードベースでも一貫したリファクタリングが可能になり、組織のソフトウェア資産を将来に向けて強化できる","content:ja-jp:the-source:security:why-legacy-code-is-a-security-risk-and-how-ai-can-help.yml","ja-jp/the-source/security/why-legacy-code-is-a-security-risk-and-how-ai-can-help.yml","ja-jp/the-source/security/why-legacy-code-is-a-security-risk-and-how-ai-can-help",{"_path":477,"_dir":439,"_draft":6,"_partial":6,"_locale":7,"config":478,"seo":480,"content":484,"type":441,"category":439,"slug":491,"_id":492,"_type":29,"title":481,"_source":30,"_file":493,"_stem":494,"_extension":33,"date":485,"description":482,"timeToRead":451,"heroImage":483,"keyTakeaways":486,"articleBody":490},"/ja-jp/the-source/security/strengthen-your-cybersecurity-strategy-with-secure-by-design",{"layout":9,"template":443,"author":27,"featured":6,"sourceCTA":479,"isHighlighted":6,"authorName":11},"source-lp-guide-to-dynamic-sboms",{"title":481,"description":482,"ogImage":483},"セキュア・バイ・デザインによるサイバーセキュリティ戦略の強化","セキュア・バイ・デザインとその関連する概念ついての理解を深め、ソフトウェア開発プロセスにセキュリティを組み込むために今すぐ実行できる手順を学びましょう。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1751463932/pnfdgovoaq5qd1yprxuc.png",{"title":481,"date":485,"description":482,"timeToRead":451,"heroImage":483,"keyTakeaways":486,"articleBody":490},"2024-10-29",[487,488,489],"セキュア・バイ・デザイン、セキュア・バイ・デフォルト、セキュア・バイ・デマンドは、テクノロジー製品のメーカーが製品の設計・開発のあらゆる側面にセキュリティを組み込むことを奨励することで、脆弱性やソフトウェアサプライチェーン攻撃を未然に防ぐことを目的としています。","包括的なDevSecOpsアプローチを採用し、ソフトウェア部品表（SBOM）を作成して維持することは、セキュア・バイ・デザインを実現するための重要なステップです。","ソフトウェア開発ライフサイクルにAIを組み込むことで、開発プロセスを迅速化し、セキュリティを強化し、脆弱性の修正を支援することもできます。","サイバーセキュリティに対する組織のアプローチは、攻撃対象が拡大し、潜在的な脅威についてより多くのことを学ぶにつれて、常に進化することが求められます。セキュア・バイ・デザインのアプローチでは、ソフトウェアのサプライチェーンのどの時点からでも脅威が侵入する可能性があることを理解し、ソフトウェア開発の設計、コーディング、テスト、デプロイの各段階にセキュリティを統合します。セキュア・バイ・デザインは、米国連邦政府機関（およびそのソフトウェアに関与するすべての組織）の標準として、ソフトウェア開発ライフサイクルにセキュリティを組み込むための代表的な基準となっています。\n\n時間の経過とともに、セキュアバイ・デザインは、セキュア・バイ・デフォルトやセキュア・バイ・デマンドなどの関連する概念に分岐しました。これらの概念は、セキュア・バイ・デザインのアプローチを特定の項目に特化させたことで生まれました。\n\n- [セキュア・バイ・デフォルト](#what-is-secure-by-default)は、すべてのソフトウェア製品が最初から安全であることを保証することに焦点を当てています。\n- [セキュア・バイ・デマンド](#what-is-secure-by-demand)は、セキュア・バイ・デザインの原則を調達プロセスに拡張したものです。\n\nここでは、セキュア・バイ・デザインと関連するアプローチについて詳しく見ていきます。また、悪用可能な脆弱性やソフトウェアのサプライチェーン攻撃を防ぐために、組織がどのように戦略を適応させることができるかに関する[ステップバイステップガイド](#building-a-secure-by-design-cybersecurity-strategy)もご紹介します。\n\n## セキュア・バイ・デザインとは？\n米国サイバーセキュリティ・インフラセキュリティ庁（CISA）は2023年4月、次に示す3つの重要なソフトウェア・セキュリティ原則に焦点を当てた[Secure by Design Initiative（セキュア・バイ・デザイン・イニシアティブ）](https://www.cisa.gov/securebydesign)を導入しました。\n\n1. 顧客のセキュリティに関する成果に対して責任を負う\n2. 抜本的な透明性を確保し説明責任を果たす\n4. これらの目標を達成するための組織構造とリーダーシップを構築する\n\nセキュア・バイ・デザインでは、セキュリティの原則とプロトコルをソフトウエア開発プロセスの各段階に統合します。つまり、セキュリティ対策は、ソフトウェア開発の設計、コーディング、テスト、デプロイの各フェーズに組み込まれるものであり、後付けで追加されるものではないという考え方が採用されています。\n\nセキュア・バイ・デザインの目標は、ソフトウェアの安全な基盤を最初から構築し、脆弱性と潜在的なアタックサーフェス（攻撃対象領域）を減らすことです。\n\n### セキュア・バイ・デフォルトとは？\n\nセキュア・バイ・デフォルトは、セキュア・バイ・デザインから派生したもので、あらゆるソフトウェアやハードウェアが、ユーザーによる再設定を必要とすることなく、最もセキュアな構成に設定されることに重点を置いた概念です。セキュア・バイ・デフォルトの製品は、悪意のある者による不正アクセスから企業を保護するために必要な最も重要なセキュリティ制御を自動的に有効にします。つまり、ユーザーが製品を一般的な悪用手法から保護するために追加の手順を踏む必要はありません。\n\n セキュア・バイ・デフォルトとして、デフォルトのパスワードの除去、多要素認証とシングルサインオンの義務付けなどがあり、許可されたユーザーだけがリソースにアクセスできるようにします。このアプローチには、自動アップデート、自動パッチ適用、すべてのユーザーアカウントとデバイスを対象にした安全な構成も含まれます。\n\n### セキュア・バイ・デマンドとは？\n\nセキュア・バイ・デマンドは、セキュア・バイ・デザインの原則を予算編成や調達契約と組み合わせることで、ベンダーだけでなく請負業者にもセキュア・バイ・デザインを義務付けるものです。ソフトウェア購入者、バイヤー、調達担当者が、サイバーセキュリティに対する潜在的なベンダーのアプローチをよりよく理解するためのガイドとして[CISA's Secure by Demand Guide](https://www.cisa.gov/resources-tools/resources/secure-demand-guide)があり、一連の質問とリソースを提供しています。これには、ベンダーの認証方法、ソフトウェアのサプライチェーンのセキュリティ、脆弱性の開示と報告に関する質問も含まれます。\n\nベンダーが自社の製品やサービスにおいてセキュア・バイ・デザインの原則やプロトコルを遵守することを義務付けることで、組織はソフトウェアのサプライチェーンに潜在的な脆弱性が入り込むのを防ぐことができます。また、セキュア・バイ・デマンドのアプローチは、ベンダーが自社のサイバーセキュリティ態勢を継続的に改善する動機付けにもなります。\n\n## セキュア・バイ・デザインのサイバーセキュリティ戦略の構築\n組織がセキュア・バイ・デザインの実現を優先する場合、効果的なDevSecOpsプラクティスの活用、ソフトウェア部品表（SBOM）の維持、ソフトウェア開発ライフサイクルのあらゆる時点から侵入する脅威を防御するためのAIの組み込みといったステップを踏む必要があります。\n\n### DevSecOpsプラクティスの採用\nセキュア・バイ・デザインの取り組みをサポートする最初のステップは、包括的なDevSecOpsアプローチを使用してソフトウェアを開発、構築、セキュリティ保護、およびデプロイするという、セキュアなソフトウェア開発プロセスの実現です。\n\n現在、開発者の多くは複雑なツールセットを利用して新しいプログラムを作成しています。[GitLabによる最近の調査](https://about.gitlab.com/ja-jp/developer-survey/)によると、回答者の62%が開発に6つ以上のツールを使用しており、20%は11つ以上のツールを使用しています。これは非効率であり、潜在的なセキュリティの脆弱性をもたらしリスクを増大させる恐れがあります。\n\nデベロッパーは、DevSecOpsワークフローに必要なすべてのツールに、単一の使いやすいインターフェイスでアクセスできる必要があります。[DevSecOpsプラットフォーム](https://about.gitlab.com/ja-jp/platform/)のようなエンドツーエンドのソリューションがあれば、デベロッパーの負担を増やすことなく、セキュア・バイ・デザインのアプローチを組織に導入することができます。\n\n### SBOMの作成と維持\n透明性の確保もセキュア・バイ・デザインの重要な要素です。特に複数のソースからのコンポーネントが含まれている場合、組織はソフトウェアの中身を理解する必要があります。\n\n[SBOMはこの透明性の実現に不可欠なツールです](https://about.gitlab.com/blog/the-ultimate-guide-to-sboms/)。バージョン、ライセンス、依存関係の詳細を含むソフトウェアコンポーネントの詳細なインベントリを提供してくれるため、潜在的な脆弱性や悪意のあるコードの認識を深めることができます。\n\nこのインベントリを維持することで、組織は、オープンソースのリポジトリやライセンスを取得したサードパーティのコンポーネントから要素を取り出したときに発生する可能性のある潜在的な脆弱性やリスクを十分に理解することができます。DevSecOpsプラットフォームは、[SBOMの自動生成と更新](https://about.gitlab.com/ja-jp/solutions/application-security-testing/)、既存のワークフローへの統合、関連する脆弱性へのリンク指定に役立ちます。\n\n現在、多くの組織がSBOMを使用していますが、その効果を十分に発揮させるためには、SBOMを動的なもとし、セキュリティのスキャニングツールと連携させ、継続的に更新する必要があります。スキャンツールやダッシュボードと統合することで、SBOMはアプリケーションに関連するリスクを特定する方法を提供できます。必要でない場合でも、SBOMはコードが安全であることを検証することで、セキュリティ規制へのコンプライアンスをサポートできます。\n\n### ソフトウェア開発におけるAIの活用\n組織がAIの活用方法を模索する中で、ソフトウェア開発ワークフローは、開発プロセスを加速し、セキュリティを強化する可能性を秘めたテクノロジーへの貴重な入口となります。\n\nあらゆる業界の組織が、すでにこれらのアプリケーションの検討を始めています。[GitLabの調査](https://about.gitlab.com/ja-jp/developer-survey/2024/ai/)では、回答者の39%がソフトウェア開発ライフサイクルでAIをすでに使用していると回答しています。\n\nソフトウェア開発ライフサイクル全体にAIを適用することで、開発ワークフローにおけるAI主導のサイロ化やバックログを回避できます。AIは次のような重要な機能を果たします。\n\n* [メモリーセーフ言語](https://about.gitlab.com/blog/memory-safe-vs-unsafe/)へのコード説明とレガシーコードのリファクタリング\n* [DevSecOpsパイプラインの根本原因分析](https://about.gitlab.com/blog/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd/)、テスト中の複雑な問題を迅速に解決\n\n* 既知の脆弱性の調整を支援し、より徹底的な修復をサポートする[脆弱性の修正](https://about.gitlab.com/ja-jp/the-source/ai/understand-and-resolve-vulnerabilities-with-ai-powered-gitlab-duo/)\n\nリーダーがAIをワークフローに組み込む際、プライバシーとデータセキュリティを優先することが極めて重要です。セキュア・バイ・デザインのアプローチを採用する上で不可欠なのは、[機密データを保護し、知的財産権を保護するAI戦略](https://about.gitlab.com/ja-jp/the-source/ai/building-a-transparency-first-ai-strategy-7-questions-to-ask-your-devops/)を策定することです。\n\n### 次なる課題\nセキュア・バイ・デザインは、近々、より信頼性の高いソフトウェアエコシステムを構築する上で、デフォルトのアプローチとなる可能性があります。[米国政府](https://about.gitlab.com/the-source/security/national-cybersecurity-strategy-a-wake-up-call-for-software-developers/)は現在、ソフトウェアデベロッパーと協力し、民間部門がセキュア・バイ・デザインのソフトウェアを製造・リリースすることを法的に奨励するフレームワークの作成に取り組んでおり、企業が安全なテクノロジーや先進的な取り組みにさらに投資するよう働きかけています。\n\nソフトウェア開発に最初からセキュリティが組み込まれること、効果的なSBOMを通じて透明性が確保されること、AIによって開発プロセスが強化されること。こうしたアプローチがソフトウェア開発ライフサイクルに関わるすべての人の成功につながるでしょう。\n","strengthen-your-cybersecurity-strategy-with-secure-by-design","content:ja-jp:the-source:security:strengthen-your-cybersecurity-strategy-with-secure-by-design.yml","ja-jp/the-source/security/strengthen-your-cybersecurity-strategy-with-secure-by-design.yml","ja-jp/the-source/security/strengthen-your-cybersecurity-strategy-with-secure-by-design",[437,476],1760103753986]