The Source 人工知能
記事

DevSecOps環境で生成AIを活用する方法

プラットフォーム全体に統合された人工知能が、組織とDevSecOpsチームに具体的な報酬をもたらす方法をご紹介します。

March 7, 2024 7分で読めます
Taylor McCaslin
Taylor McCaslin グループマネージャー、製品 - データサイエンス

生成AIは、ソフトウェア開発やデリバリーにおける退屈で時間のかかる側面を軽減し、結果としてDevSecOpsワークフローを加速させるイノベーションの新しい波をもたらしました。しかし、生成AIの可能性を最大限に実現するには、コード作成の段階だけでなく、あらゆる場所にテクノロジーを散在させる必要があります。

DevSeOpsの専門家5,000人以上を対象とした2024年の調査によると、コード作成はデベロッパーの時間の25%未満を占めています。最初のコミットから本番環境に至るまでに発生する重要なタスクは他にもたくさんあり、AIの恩恵を受けることができます。

AIを各ステージに組み込むことで、ソフトウェアをアイデアから提供まで管理し、より優れた、より安全なソフトウェアをより迅速に作成できます。たとえば、失敗したビルドを調べるという作業でも、AIを使用して何が問題だったのか、どのように修正すればよいのかを把握し改善できます。AIはタスクを排除するわけではありませんが、タスクを完了するために必要なステップと時間を削減するのに役立ちます。

生成AIの影響を理解し、測定するために、DevSecOpsチームができることをご紹介します。

##ワークフローの評価から始めましょう

AIの効果を完全に実現する前に、ワークフローの見直しなど、いくつかの事前作業を行う必要があります。AIを使用するアプローチに一貫性を持たせ、AIがもたらす可能性のあるリスクを軽減するために適切なガードレールを確保できるよう、構築できる理想的なワークフローを理解したいと考えています。

たとえば、チームが生成AIでコードを作成している場合、生成されたコードの一部にセキュリティの脆弱性がある可能性があります。 そのため、これらの脆弱性をキャッチするためのワークフローを作成し、本番環境に移行してしまう可能性を減らす必要があります。このワークフローを作成すれば、より一貫した方法で多くのAI機能を導入し、開発速度を向上させることができます。

ここでは、ワークフローを事前に評価することで、AIから得られるメリットをどのように改善できるかの例をご紹介します。AIは自動的にテストを構築できますが、コードがすでに作成された後にテストを構築することは望ましくありません。デベロッパーは、作成したものをテストするだけなので、QAチームの一員ではありません。生成AIも同様に動作するため、AIが生成するテストのワークフローを早めに開始する必要があります。デベロッパーは問題の詳細を使用して、記述するコードのユニットテストを対話しながら生成できます。ワークフローを考慮すると、最初にテストを含むマージリクエストを作成し、次にブランチをプルして実装の作業を開始すると、コンテキストに適切なテストが含まれるようになるため、コード提案がより堅牢になり、コードを直接開始した場合よりも応答ヒット数が大幅に増加します。

すべてのワークフローを一度に刷新することはできません。そのため、レガシーコードベースのモダナイズ、セキュリティ問題の増加への対応、削減し続ける予算とスタッフでの運用など、ソフトウェア開発と配信の最大の課題に関連するワークフローに重点を置くようにしてください。

AIのガードレールを確立する

また、AIがやり取りするデータに関するリスクを考慮し、そのリスクを軽減し、独自のコンプライアンスニーズを満たすためのガードレールを確実に導入する必要があります。使用しているAIモデル、ベクターデータベースにアクセスしているかどうか、大規模な言語モデル(LLM)がどのようにトレーニングされているかを検討する必要があります。

これらの質問には、法務、コンプライアンス、DevSecOpsチームをまとめて、AIプロバイダーに厳しい質問をする必要があります。GitLab AI Transparency Center透明性を重視したAI戦略の構築に関するブログ記事から、有益なガイダンスを確認できます。

もう1つの重要なガードレールは、ソフトウェア開発ライフサイクル全体および組織全体で使用している個別のAIツールの数を効率化することです。使用するツールが多ければ多いほど、複雑さが増し、運用上の問題、管理上の課題、セキュリティリスクが発生する可能性があります。また、ツールが多い場合、間接費が増加します。

AIの影響を測定する

生産性やその他のキーメトリクスの変化を測定することは、組織におけるAIの影響を真に理解するために不可欠です。通常、組織は、コードを本番環境に出荷する頻度、4つのDORAメトリクス、またはバグの修正にかかる時間の観点から出力を検討します。しかし、それは全体像を提供するものではありません。

GitLabでは、グループやプロジェクトの階層構造内にワークフローの標準化を構築することで、AIの影響を測定し、チームからビジネスユニットへのメトリクスをまとめ、ユーザーインターフェース内で直接出力を分析することができます。

この構造の上にAIを実装すると、脆弱性を解決し、マージリクエストに適切なレビュアーや適切なテストの検討にかかる時間を短縮し、開発速度を向上できます。これにより、コードレビュープロセスにかかる時間が短縮されます。依存関係を含むGitLab内の各ステージと、開発チームがそれらのステージを通過するために必要なものを確認できます。ダッシュボードには、その速度の状況が表示され、そのデータに基づいてピボットすることが容易になります。たとえば、ソフトウェアを本番環境にリリースするかどうかを決定できます。

SDLC AIアシスタントの実用的な用途

ソフトウェア開発ライフサイクル全体でGitLab DuoのようなAIアシスタントを使用するための実用的な方法をいくつかご紹介します。

  • **マージリクエストの説明を作成する:**マージリクエストの包括的な説明の作成を自動化し、MRの一連のコミットの本質を迅速かつ正確に把握します。また、記述されたコードとMRにリンクされた問題の意図に基づいて、不足しているタスクを明らかにすることもできます。

  • 自然言語でのコードの説明: QAテスターは、コードの説明を使用して、コードを迅速かつ容易に理解することができます。たとえば、MRにRustで記述されたコードと複雑なメソッドのセットがある場合、QAテスターはメソッドを強調表示し、変更が何をしようとしているかを自然言語で読み取ることができます。これにより、QAテスターは、晴れた日だけでなく雨の日のシナリオもカバーする、はるかに優れたテストケースを作成することができます。

  • **パイプラインエラーの根本原因分析:**パイプラインが大きくなり、リファクタリングしようとすると、何かが壊れる可能性があり、トラブルシューティングが困難になる可能性があります。特に、一連のbashスクリプトを実行している場合や、イメージ内の内部コマンドを活用してDockerイメージを実行している場合です。受信したエラーを生成AIで実行すると、考えられる根本原因と推奨される解決策が説明され、それをコピーしてCIジョブに直接貼り付けることができます。- 脆弱性の修正: セキュリティのシフトレフトの動きが急速に進む中、エンジニアリングチームはすぐにセキュリティのエクスパートになる必要がありました。生成AIを使用すると、エンジニアはチャットにアクセスして、脆弱性が何であるか、それがコード内のどこにあるのかがわかり、さらには修正可能な自動MRを開くことができます。これらはすべて開発ウィンドウ内にあるため、頭の切り替えはありません。

GitLab Duo:影響力のある生成AI機能のためのワンストップショップ

当社は、強力な生成AIモデルとハイパークラウドベンダーの最先端技術を使用して、DevSecOpsプラットフォーム向けのAI機能の拡張ツールボックスであるGitLab Duoを構築しています。今日、GitLab Duoには、コードアシスタントから会話チャットアシスタント、脆弱性の説明まで、一般公開、Beta版、Experiement版の機能があります。GitLab Duoをソフトウェア開発ライフサイクル全体で一貫して使用すると、サイクルタイムを10倍高速化し、組織がより少ないコストでより多くのことを行い、従業員がより価値の高いタスクに時間を費やすことができます。

Omdia Market Radar: AI支援ソフトウェア開発、2023~24年」レポートでは、アナリスト企業が「エンタープライズグレードのアプリケーション開発に適している」と考える製品の1つとしてGitLab Duoが取り上げられ、「AI支援がSDLCパイプライン全体に統合されている」と評価されています。以下は、実際に使用されているGitLab Duoの機能の例です。

DevSecOpsでのAIの成熟度の確認

組織がソフトウェア開発ライフサイクルにAIをどのように組み込んでいるかのインサイトについては、世界中の5,000人を超えるDevSecOpsプロフェッショナルからの調査結果をご覧ください。
レポートを読む

主要なポイント
  • AIの可能性をDevSecOpsで完全に活用するには、コード作成の段階だけでなく、ソフトウェア開発ライフサイクル全体にAIを組み込むことが不可欠です。
  • 組織全体でAIツールを統合することで、複雑さ、運用リスク、コストを軽減し、効率化された安全な環境を実現します。
  • AIの有効性を評価するには、コード生成頻度などの従来のメトリクス以上のものが必要です。組織内で標準ワークフローを実装し、脆弱性の修正時間やコードレビュー効率などの包括的なメトリクスを収集します。