[{"data":1,"prerenderedAt":829},["ShallowReactive",2],{"/ja-jp/blog/developing-gitlab-duo-use-ai-to-remediate-security-vulnerabilities":3,"navigation-ja-jp":43,"banner-ja-jp":454,"footer-ja-jp":464,"blog-post-authors-ja-jp-Michael Friedrich|Alana Bellucci":700,"blog-related-posts-ja-jp-developing-gitlab-duo-use-ai-to-remediate-security-vulnerabilities":726,"blog-promotions-ja-jp":769,"next-steps-ja-jp":820},{"id":4,"title":5,"authorSlugs":6,"body":9,"categorySlug":10,"config":11,"content":15,"description":9,"extension":31,"isFeatured":13,"meta":32,"navigation":13,"path":33,"publishedDate":22,"seo":34,"stem":39,"tagSlugs":40,"__hash__":42},"blogPosts/ja-jp/blog/developing-gitlab-duo-use-ai-to-remediate-security-vulnerabilities.yml","Developing Gitlab Duo Use Ai To Remediate Security Vulnerabilities",[7,8],"michael-friedrich","alana-bellucci",null,"ai-ml",{"slug":12,"featured":13,"template":14},"developing-gitlab-duo-use-ai-to-remediate-security-vulnerabilities",true,"BlogPost",{"title":16,"description":17,"authors":18,"heroImage":21,"date":22,"body":23,"category":10,"tags":24,"updatedDate":30},"GitLab Duo開発の現場から：AIを活用したセキュリティ脆弱性の修正","このチュートリアルでは、GitLab Duoの脆弱性の説明と脆弱性の修正、その他のAI搭載機能が、脆弱性に迅速に対処するのにどのように役立つのかをご説明します。",[19,20],"Michael Friedrich","Alana Bellucci","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098106/Blog/Hero%20Images/Blog/Hero%20Images/blog-hero-banner-1-0178-820x470-fy25_7JlF3WlEkswGQbcTe8DOTB_1750098106040.png","2024-07-15","新しい仕事を始めたばかりの初日、大規模な本番環境でのインシデントが発生し、全員での対応が求められる状況に直面したとします。いくつもの重大な脆弱性が新たに発覚し、即時の対応、分析、軽減、そして修正が必要です。こうした場合、どこから調査を始めるべきでしょうか？\n\nこの記事では、GitLab Duoの脆弱性の説明や脆弱性の修正、その他のAI機能を活用し、たった数分以内に脆弱性への対応を開始する方法を解説していきます。実践的な例を通じて、AI搭載のアシスト機能を活用して効果的に脆弱性を分析し、説明するアプローチを習得しましょう。追加の修正として、AIが生成したコード修正がMR（マージリクエスト）に示され、脆弱性の修正を迅速化します。\n\n> [GitLab Duoの無料トライアル](https://about.gitlab.com/ja-jp/gitlab-duo-agent-platform/#free-trial)を始めて、脆弱性の修正機能を組織に取り入れてみませんか。\n\n## はじめ方：分析\n\n最初のステップは、脆弱性の影響と重大度を分析することです。GitLabのUIを開き、`セキュリティ > 脆弱性レポート` の順に進み、メニューから[Vulnerability Report（脆弱性レポート）](https://docs.gitlab.com/ja-jp/user/application_security/vulnerability_report/)にアクセスします。脆弱性リストを `SAST` でフィルタリングし、対応を必要とする最も致命的な脆弱性を特定します。\n\n![脆弱性レポートの概要](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/vulnerability_reports_overview_aHR0cHM6_1750098116056.png)\n\nSASTのスキャン結果は詳細ビューで要約され、ソースコードへのリンクが表示されます。また、公開されているセキュリティアドバイザリからの詳細情報も提示されます。攻撃の範囲や技術的な詳細、脆弱な環境を十分に把握していない限り、デベロッパーがセキュリティレポートから分析を始めるのは難しい場合が多いでしょう。\n\n## 脆弱性の説明に基づく理解と軽減策\n\n脆弱性を理解し、最良かつ最も効率的な修正方法を知ることは不可欠です。また、修正により既存の機能に影響を与えないようにする必要があります。もし影響する場合は、保守担当者（メンテナー）やプロダクトオーナーとの議論が必要となり、その際には全体像を要約し、代替の軽減策を用意しなければなりません。また、離職した社員が作成したコードやテストを実施していないコードの場合、修正計画を立てるのがさらに難しくなることもあります。\n\nAI搭載の脆弱性の説明機能は、攻撃者がどのように脆弱性を悪用（エクスプロイト）できるかについて要約し、その影響や修正方法についての詳細な説明も行います。\n\n以下の例は、OSコマンドインジェクションの脆弱性を示しており、次のコードスニペットを使用しています。\n\n```php\n\u003C?php\n\n// Read variable name from GET request\n$name = $_GET['name'];\n\n// Use the variable name to call eval and print its value\neval('echo $' . $name . ';');\n```\n\n脆弱性レポートには詳細な説明がないため、全体の内容や影響について理解する必要があります。画面右上の `Explain Vulnerability`（脆弱性の説明）オプションを選択すると、事前に定義されたプロンプトアクションでGitLab Duo Chatが開きます。Chat内に脆弱性の追加の概要が表示され、脆弱性がどのように悪用されるかの説明や、推奨される修正方法が提示されます。\n\n![OSコマンドで使用される特殊文字の適切な無害化が行われていない（'OSコマンドインジェクション'）](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image9_aHR0cHM6_1750098116057.png)\n\n### 脆弱性の説明を文脈に沿った会話にする\n\n脆弱性の説明に関するUXの改善もされています。以前は、脆弱性の説明がオーバーレイとして右側に表示されていましたが、説明内容をGitLab Duo Chatのワークフローに統合しました。脆弱性が複雑である場合は、それに対して複数の軽減ステップに分かれたり、ソースコードの経路が不明瞭になることもあります。\n\nソースコードツリーを参照しながら、同じChatの文脈でコードの説明、修正、リファクタリング、そしてテストを続けられます。\n\nC言語の例で全体的なワークフローに取り組んでみましょう。この例では、セキュリティスキャンによってバッファオーバーフローが検出されています。\n\n1. セキュリティの脆弱性の詳細ビューを開き、右上にある「Explain Vulnerability」（脆弱性の説明）ボタンを選択します。Chatプロンプトが開き、問題の概要、潜在的な攻撃ベクター、および提案された修正が表示されます。\n\n![脆弱性のためのAI - 画像4](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image11_aHR0cHM6_1750098116059.png)\n\n2. 提案された修正を確認し、続けて `Can you show an alternative fix using a different function` （日本語：別の関数を使った代替修正方法を見せてくれますか？）というプロンプトで、Chatに尋ねます。この目的は、`strcpy()` に代わるより安全な関数がないか調べることです。\n\n![脆弱性のためのAI - 画像3](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image4_aHR0cHM6_1750098116060.png)\n\n3. `strlcpy()` を使用した代替修正がChat内で提案されます（下図参照）。この関数は、ターゲット文字列に許容される文字数のみをコピーし、常に文字列をnullで終端します。また、ソース文字列の長さを返し、文字列が切り詰められたかどうかを判断します。\n\n![脆弱性のためのAI - 画像5](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image10_aHR0cHM6_1750098116062.png)\n\n4. 次に、`Location file` URLをクリックし、ソースコードビューに移動します。再度Chatを開き、前の脆弱性の説明の文脈が保持されていることを確認します。次のステップでは、修正を続ける前にテストを追加していきます。これにより、機能の破損やリグレッションの発生を防ぐことができます。たとえば、`Based on the vulnerability context and opened source code, how would you add tests for it?` （日本語：脆弱性のコンテキストと表示されたソースコードに基づいて、テストを追加するにはどうしますか？）などのプロンプトを使用します。\n\n![脆弱性のためのAI - 画像7](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image8_aHR0cHM6_1750098116063.png)\n\n5. テストが生成され（仮に追加されたとして）、同じセッションで `Can you refactor the source code too?` （日本語：ソースコードもリファクタリングできますか？）というプロンプトを使用して、Chatにソースコードのリファクタリングも依頼できます。\n\n![脆弱性のためのAI - 画像6](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image2_aHR0cHM6_1750098116063.png)\n\nこのワークフローでは、脆弱性の分析、理解、軽減、代替アプローチの発見、テストの追加、さらには脆弱性の修正に対するリファクタリングを行う手順が示されています。\n\nChatを使ってこのプロセスを続けた後、Web IDEに切り替えて、学んだことを基にソースコードを修正できます。さらに、変更をコミットし、CI/CDやセキュリティスキャンをトリガーして、DevSecOpsライフサイクル全体のループを完結させる継続的なワークフローも含まれています。\n\n## AIアシストによる脆弱性の修正\n\nセキュリティ脆弱性を理解し、軽減するには、問題の修正を作成し、新しいマージリクエストでパイプラインを実行し、再度セキュリティスキャンを実施するなどのエンジニアリング作業が必要になります。また、修正をステージング（staging）環境にデプロイし、一定期間テストすることも必要な場合があります。\n\nAIを活用し、脆弱性とソースコードに基づいた提案修正を生成することで、脆弱性修正プロセスを迅速化します。\n\nヒント：これまでの経験の中で最も厄介だった脆弱性を思い出し、そのユースケースを再現してGitLab Duoの導入に活用してみましょう。ちなみに、[MITREのCWE Top 25（最も危険なソフトウェアの脆弱性）](https://cwe.mitre.org/top25/archive/2023/2023_top25_list.html)も、ユースケースとしてはよい例です。\n\n次の例は、[CWE-328：弱いハッシュ関数の使用](https://cwe.mitre.org/data/definitions/328.html)を実装したもので、`md5` を使用しています。これは[SASTスキャン](https://docs.gitlab.com/ja-jp/user/application_security/sast/)によって正しく識別されます。\n\n```python\nimport hashlib\n\nclass User:\n    def __init__(self, username, password):\n        self.username = username\n        self.password = password\n\n    def set_password(self, password):\n        self.password = hashlib.md5(password.encode()).hexdigest()\n\n```\n\n![脆弱性のためのAI -画像8](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image7_aHR0cHM6_1750098116064.png)\n\n右上の `Resolve with merge request`（マージリクエストで解決）ボタンをクリックすると、AIを活用して修正を提案するMRが開きます。この脆弱性に対する修正として、別のハッシュ関数を使用することが考えられます。\n\n![脆弱性のためのAI - 画像9](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750098116065.png)\n\nもうひとつの一般的な脆弱性の例として、関数のエラーコードや潜在的な例外をチェックしないケースがあります。以下のCコードスニペットは、`fopen()` や `chmod()` の呼び出しに対する[CWE-362](https://cwe.mitre.org/data/definitions/362.html)に関連するファイル操作におけるタイミング攻撃の例を実装しています。\n\n```c\n#include \u003Cstdio.h>\n#include \u003Cstring.h>\n#include \u003Csys/mman.h>\n#include \u003Csys/stat.h>\n#include \u003Cunistd.h>\n\nint main(int argc, char **argv) {##$_0A$####$_0A$##    // File operations##$_0A$##    char *fname = \"gitlab.keksi\";##$_0A$####$_0A$## FILE *fp;##$_0A$##    fp = fopen(fname, \"r\");##$_0A$##    fprintf(fp, \"Hello from GitLab Duo Vulnerability Resolution Challenge\");##$_0A$## fclose(fp);##$_0A$####$_0A$##    // Potential chmod() timing attacks ##$_0A$####$_0A$##    // Make the file world readable##$_0A$## chmod(fname, S_IRWXU|S_IRWXG|S_IRWXO);##$_0A$####$_0A$##    return 0;##$_0A$##}\n```\n\n`chmod()` に関するSASTレポートは、次のように表示される場合があります。\n\n![脆弱性のためのAI - 画像10](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image6_aHR0cHM6_1750098116065.png)\n\n提案された `chmod()` のマージリクエストにはエラーハンドリングが含まれており、ファイルが世界中で書き込み可能になる潜在的な問題も修正されて、権限が `777` から `600` に変更されています。\n\n![脆弱性のためのAI - 画像11](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image3_aHR0cHM6_1750098116066.png)\n\n> 次に`fopen()` 関数の脆弱性も特定し、分析した上で修正してみてください。\n\n ## GitLab DuoによるさらなるAI支援\n\nセキュリティ問題は、簡単な修正や回避策で解決できることがよくあり、それによって開発チームが長期的な解決策を議論し、計画する時間を確保できます。他のケースでは、問題がより複雑になり、適切な修正が本番環境に反映されるまで、機能[API](https://about.gitlab.com/ja-jp/blog/what-is-an-api/)を無効にしたり、ファイアウォールでの軽減策が必要になることもあります。\n\nGitLab Duoは、こうした問題の解決に役立つAIを活用した追加機能を提供しています。\n\n**コードの説明**：デベロッパーやセキュリティエンジニアとして、行った変更に自信を持つことが重要です。IDE内で[コードの説明機能](https://docs.gitlab.com/ja-jp/user/gitlab_duo_chat/examples/#explain-code-in-the-ide)を使用することで、AIが提案した脆弱性修正をより深く理解できます。この機能により、どのような調整が行われたか、そしてその理由を正確に把握できます。\n\n**根本原因分析：** 修正によりCI/CDパイプラインがエラーを起こしてしまった場合、[根本原因分析機能](https://about.gitlab.com/ja-jp/blog/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd/)を利用できます。このツールは、根本的な問題を特定し、説明するのに役立ち、効果的に問題に対処できます。必要な修正を加えた後、テストを再実行して問題が解決したか確認できます。\n\n**リファクタリング**：脆弱性の修正が済んでも、より安全なコードにできないか検討する価値があります。IDE内でGitLab Duo Chatを開き、[リファクタリング機能](https://docs.gitlab.com/ja-jp/user/gitlab_duo_chat/examples/#refactor-code-in-the-ide)を使用して、コードをより安全に書くための代替方法を探ることができます。この事前対策的なアプローチにより、堅牢でセキュアなコードベースを維持できます。\n\nこれらのGitLab Duoの機能を活用することで、脆弱性に自信を持って対処し、コードのセキュリティと効率を確保できます。\n\n## 今後の取り組み\n\n脆弱性の説明と修正の機能をMRのプロセスに直接組み込むことで、シフトレフト（より早い段階に移行）させることを計画しています。この統合により、開発サイクルの初期段階で脆弱性に対処し、解決できるようになり、ワークフローが効率化され、シフトレフトによりコードのセキュリティが強化された状態になります。\n\n## GitLab Duoを始める\n\nGitLab Ultimateで利用可能な機能を有効化する方法を説明する[ドキュメント](https://docs.gitlab.com/ja-jp/user/gitlab_duo/turn_on_off/)をご参照ください。また、GitLab Duoの[脆弱性の説明](https://docs.gitlab.com/ja-jp/user/application_security/vulnerabilities/#explaining-a-vulnerability)および[脆弱性の修正](https://docs.gitlab.com/ja-jp/user/application_security/vulnerabilities/#vulnerability-resolution)は、GitLabのSelf-Managed環境やGitLab Dedicatedでも利用可能です。\n\n[「GitLab Duo開発の現場から」ブログシリーズ](https://about.gitlab.com/ja-jp/blog/developing-gitlab-duo-series/)をチェックすることで、GitLab Duoの最新情報についてご確認いただけます。\n\n*監修：伊藤 俊廷 [@toshitakaito](https://gitlab.com/toshitakaito) \u003Cbr>\n（GitLab合同会社 ソリューションアーキテクト本部 スタッフソリューションアーキテクト）*\n\n> [GitLab Duoの無料トライアル](https://about.gitlab.com/ja-jp/gitlab-duo-agent-platform/#free-trial)を始めて、脆弱性の修正機能を組織に取り入れてみませんか。\n",[25,26,27,28,29],"AI/ML","security","product","features","tutorial","2025-01-21","yml",{},"/ja-jp/blog/developing-gitlab-duo-use-ai-to-remediate-security-vulnerabilities",{"title":16,"description":17,"ogTitle":16,"ogDescription":17,"noIndex":35,"ogImage":21,"ogUrl":36,"ogSiteName":37,"ogType":38,"canonicalUrls":36},false,"https://about.gitlab.com/blog/developing-gitlab-duo-use-ai-to-remediate-security-vulnerabilities","https://about.gitlab.com","article","ja-jp/blog/developing-gitlab-duo-use-ai-to-remediate-security-vulnerabilities",[41,26,27,28,29],"aiml","hhtbFsUC4zPbfKFuER31pcJOwxMQubDaVuI6CHTV2hQ",{"data":44},{"logo":45,"freeTrial":50,"sales":55,"login":60,"items":65,"search":374,"minimal":407,"duo":424,"switchNav":433,"pricingDeployment":444},{"config":46},{"href":47,"dataGaName":48,"dataGaLocation":49},"/ja-jp/","gitlab logo","header",{"text":51,"config":52},"無料トライアルを開始",{"href":53,"dataGaName":54,"dataGaLocation":49},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp&glm_content=default-saas-trial/","free trial",{"text":56,"config":57},"お問い合わせ",{"href":58,"dataGaName":59,"dataGaLocation":49},"/ja-jp/sales/","sales",{"text":61,"config":62},"サインイン",{"href":63,"dataGaName":64,"dataGaLocation":49},"https://gitlab.com/users/sign_in/","sign in",[66,93,190,195,296,356],{"text":67,"config":68,"cards":70},"プラットフォーム",{"dataNavLevelOne":69},"platform",[71,77,85],{"title":67,"description":72,"link":73},"DevSecOpsに特化したインテリジェントオーケストレーションプラットフォーム",{"text":74,"config":75},"プラットフォームを探索",{"href":76,"dataGaName":69,"dataGaLocation":49},"/ja-jp/platform/",{"title":78,"description":79,"link":80},"GitLab Duo Agent Platform","ソフトウェアライフサイクル全体を支えるエージェント型AI",{"text":81,"config":82},"GitLab Duoのご紹介",{"href":83,"dataGaName":84,"dataGaLocation":49},"/ja-jp/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":86,"description":87,"link":88},"GitLabが選ばれる理由","エンタープライズがGitLabを選ぶ主な理由をご覧ください",{"text":89,"config":90},"詳細はこちら",{"href":91,"dataGaName":92,"dataGaLocation":49},"/ja-jp/why-gitlab/","why gitlab",{"text":94,"left":13,"config":95,"link":97,"lists":101,"footer":172},"製品",{"dataNavLevelOne":96},"solutions",{"text":98,"config":99},"すべてのソリューションを表示",{"href":100,"dataGaName":96,"dataGaLocation":49},"/ja-jp/solutions/",[102,127,150],{"title":103,"description":104,"link":105,"items":110},"自動化","CI/CDと自動化でデプロイを加速",{"config":106},{"icon":107,"href":108,"dataGaName":109,"dataGaLocation":49},"AutomatedCodeAlt","/ja-jp/solutions/delivery-automation/","automated software delivery",[111,115,118,123],{"text":112,"config":113},"CI/CD",{"href":114,"dataGaLocation":49,"dataGaName":112},"/ja-jp/solutions/continuous-integration/",{"text":78,"config":116},{"href":83,"dataGaLocation":49,"dataGaName":117},"gitlab duo agent platform - product menu",{"text":119,"config":120},"ソースコード管理",{"href":121,"dataGaLocation":49,"dataGaName":122},"/ja-jp/solutions/source-code-management/","Source Code Management",{"text":124,"config":125},"自動化されたソフトウェアデリバリー",{"href":108,"dataGaLocation":49,"dataGaName":126},"Automated software delivery",{"title":128,"description":129,"link":130,"items":135},"セキュリティ","セキュリティを犠牲にすることなくコード作成を高速化",{"config":131},{"href":132,"dataGaName":133,"dataGaLocation":49,"icon":134},"/ja-jp/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[136,140,145],{"text":137,"config":138},"アプリケーションセキュリティテスト",{"href":132,"dataGaName":139,"dataGaLocation":49},"Application security testing",{"text":141,"config":142},"ソフトウェアサプライチェーンの安全性",{"href":143,"dataGaLocation":49,"dataGaName":144},"/ja-jp/solutions/supply-chain/","Software supply chain security",{"text":146,"config":147},"ソフトウェアコンプライアンス",{"href":148,"dataGaName":149,"dataGaLocation":49},"/ja-jp/solutions/software-compliance/","software compliance",{"title":151,"link":152,"items":157},"測定",{"config":153},{"icon":154,"href":155,"dataGaName":156,"dataGaLocation":49},"DigitalTransformation","/ja-jp/solutions/visibility-measurement/","visibility and measurement",[158,162,167],{"text":159,"config":160},"可視性と測定",{"href":155,"dataGaLocation":49,"dataGaName":161},"Visibility and Measurement",{"text":163,"config":164},"バリューストリーム管理",{"href":165,"dataGaLocation":49,"dataGaName":166},"/ja-jp/solutions/value-stream-management/","Value Stream Management",{"text":168,"config":169},"分析とインサイト",{"href":170,"dataGaLocation":49,"dataGaName":171},"/ja-jp/solutions/analytics-and-insights/","Analytics and insights",{"title":173,"items":174},"GitLabが活躍する場所",[175,180,185],{"text":176,"config":177},"大企業",{"href":178,"dataGaLocation":49,"dataGaName":179},"/ja-jp/enterprise/","enterprise",{"text":181,"config":182},"スモールビジネス",{"href":183,"dataGaLocation":49,"dataGaName":184},"/ja-jp/small-business/","small business",{"text":186,"config":187},"公共部門",{"href":188,"dataGaLocation":49,"dataGaName":189},"/ja-jp/solutions/public-sector/","public sector",{"text":191,"config":192},"価格",{"href":193,"dataGaName":194,"dataGaLocation":49,"dataNavLevelOne":194},"/ja-jp/pricing/","pricing",{"text":196,"config":197,"link":199,"lists":203,"feature":283},"リソース",{"dataNavLevelOne":198},"resources",{"text":200,"config":201},"すべてのリソースを表示",{"href":202,"dataGaName":198,"dataGaLocation":49},"/ja-jp/resources/",[204,237,255],{"title":205,"items":206},"はじめに",[207,212,217,222,227,232],{"text":208,"config":209},"インストール",{"href":210,"dataGaName":211,"dataGaLocation":49},"/ja-jp/install/","install",{"text":213,"config":214},"クイックスタートガイド",{"href":215,"dataGaName":216,"dataGaLocation":49},"/ja-jp/get-started/","quick setup checklists",{"text":218,"config":219},"学ぶ",{"href":220,"dataGaLocation":49,"dataGaName":221},"https://university.gitlab.com/","learn",{"text":223,"config":224},"製品ドキュメント",{"href":225,"dataGaName":226,"dataGaLocation":49},"https://docs.gitlab.com/ja-jp/","product documentation",{"text":228,"config":229},"ベストプラクティスビデオ",{"href":230,"dataGaName":231,"dataGaLocation":49},"/ja-jp/getting-started-videos/","best practice videos",{"text":233,"config":234},"インテグレーション",{"href":235,"dataGaName":236,"dataGaLocation":49},"/ja-jp/integrations/","integrations",{"title":238,"items":239},"検索する",[240,245,250],{"text":241,"config":242},"お客様成功事例",{"href":243,"dataGaName":244,"dataGaLocation":49},"/ja-jp/customers/","customer success stories",{"text":246,"config":247},"ブログ",{"href":248,"dataGaName":249,"dataGaLocation":49},"/ja-jp/blog/","blog",{"text":251,"config":252},"リモート",{"href":253,"dataGaName":254,"dataGaLocation":49},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":256,"items":257},"つなげる",[258,263,268,273,278],{"text":259,"config":260},"GitLabサービス",{"href":261,"dataGaName":262,"dataGaLocation":49},"/ja-jp/services/","services",{"text":264,"config":265},"コミュニティ",{"href":266,"dataGaName":267,"dataGaLocation":49},"/community/","community",{"text":269,"config":270},"フォーラム",{"href":271,"dataGaName":272,"dataGaLocation":49},"https://forum.gitlab.com/","forum",{"text":274,"config":275},"イベント",{"href":276,"dataGaName":277,"dataGaLocation":49},"/events/","events",{"text":279,"config":280},"パートナー",{"href":281,"dataGaName":282,"dataGaLocation":49},"/ja-jp/partners/","partners",{"backgroundColor":284,"textColor":285,"text":286,"image":287,"link":291},"#2f2a6b","#fff","ソフトウェア開発の未来への洞察",{"altText":288,"config":289},"ソースプロモカード",{"src":290},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":292,"config":293},"最新情報を読む",{"href":294,"dataGaName":295,"dataGaLocation":49},"/ja-jp/the-source/","the source",{"text":297,"config":298,"lists":300},"会社情報",{"dataNavLevelOne":299},"company",[301],{"items":302},[303,308,314,316,321,326,331,336,341,346,351],{"text":304,"config":305},"GitLabについて",{"href":306,"dataGaName":307,"dataGaLocation":49},"/ja-jp/company/","about",{"text":309,"config":310,"footerGa":313},"採用情報",{"href":311,"dataGaName":312,"dataGaLocation":49},"/jobs/","jobs",{"dataGaName":312},{"text":274,"config":315},{"href":276,"dataGaName":277,"dataGaLocation":49},{"text":317,"config":318},"経営陣",{"href":319,"dataGaName":320,"dataGaLocation":49},"/company/team/e-group/","leadership",{"text":322,"config":323},"チーム",{"href":324,"dataGaName":325,"dataGaLocation":49},"/company/team/","team",{"text":327,"config":328},"ハンドブック",{"href":329,"dataGaName":330,"dataGaLocation":49},"https://handbook.gitlab.com/","handbook",{"text":332,"config":333},"投資家向け情報",{"href":334,"dataGaName":335,"dataGaLocation":49},"https://ir.gitlab.com/","investor relations",{"text":337,"config":338},"トラストセンター",{"href":339,"dataGaName":340,"dataGaLocation":49},"/ja-jp/security/","trust center",{"text":342,"config":343},"AI Transparency Center",{"href":344,"dataGaName":345,"dataGaLocation":49},"/ja-jp/ai-transparency-center/","ai transparency center",{"text":347,"config":348},"ニュースレター",{"href":349,"dataGaName":350,"dataGaLocation":49},"/company/contact/#contact-forms","newsletter",{"text":352,"config":353},"プレス",{"href":354,"dataGaName":355,"dataGaLocation":49},"/press/","press",{"text":56,"config":357,"lists":358},{"dataNavLevelOne":299},[359],{"items":360},[361,364,369],{"text":56,"config":362},{"href":58,"dataGaName":363,"dataGaLocation":49},"talk to sales",{"text":365,"config":366},"サポートを受ける",{"href":367,"dataGaName":368,"dataGaLocation":49},"https://support.gitlab.com","support portal",{"text":370,"config":371},"カスタマーポータル",{"href":372,"dataGaName":373,"dataGaLocation":49},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":375,"login":376,"suggestions":383},"閉じる",{"text":377,"link":378},"リポジトリとプロジェクトを検索するには、次にログインします",{"text":379,"config":380},"GitLab.com",{"href":63,"dataGaName":381,"dataGaLocation":382},"search login","search",{"text":384,"default":385},"提案",[386,388,393,395,399,403],{"text":78,"config":387},{"href":83,"dataGaName":78,"dataGaLocation":382},{"text":389,"config":390},"コード提案（AI）",{"href":391,"dataGaName":392,"dataGaLocation":382},"/ja-jp/solutions/code-suggestions/","Code Suggestions (AI)",{"text":112,"config":394},{"href":114,"dataGaName":112,"dataGaLocation":382},{"text":396,"config":397},"GitLab on AWS",{"href":398,"dataGaName":396,"dataGaLocation":382},"/ja-jp/partners/technology-partners/aws/",{"text":400,"config":401},"GitLab on Google Cloud",{"href":402,"dataGaName":400,"dataGaLocation":382},"/ja-jp/partners/technology-partners/google-cloud-platform/",{"text":404,"config":405},"GitLabを選ぶ理由",{"href":91,"dataGaName":406,"dataGaLocation":382},"Why GitLab?",{"freeTrial":408,"mobileIcon":412,"desktopIcon":417,"secondaryButton":420},{"text":51,"config":409},{"href":410,"dataGaName":54,"dataGaLocation":411},"https://gitlab.com/-/trials/new/","nav",{"altText":413,"config":414},"GitLabアイコン",{"src":415,"dataGaName":416,"dataGaLocation":411},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":413,"config":418},{"src":419,"dataGaName":416,"dataGaLocation":411},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":205,"config":421},{"href":422,"dataGaName":423,"dataGaLocation":411},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp/get-started/","get started",{"freeTrial":425,"mobileIcon":429,"desktopIcon":431},{"text":426,"config":427},"GitLab Duoの詳細について",{"href":83,"dataGaName":428,"dataGaLocation":411},"gitlab duo",{"altText":413,"config":430},{"src":415,"dataGaName":416,"dataGaLocation":411},{"altText":413,"config":432},{"src":419,"dataGaName":416,"dataGaLocation":411},{"button":434,"mobileIcon":439,"desktopIcon":441},{"text":435,"config":436},"/switch",{"href":437,"dataGaName":438,"dataGaLocation":411},"#contact","switch",{"altText":413,"config":440},{"src":415,"dataGaName":416,"dataGaLocation":411},{"altText":413,"config":442},{"src":443,"dataGaName":416,"dataGaLocation":411},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":445,"mobileIcon":450,"desktopIcon":452},{"text":446,"config":447},"料金ページに戻る",{"href":193,"dataGaName":448,"dataGaLocation":411,"icon":449},"back to pricing","GoBack",{"altText":413,"config":451},{"src":415,"dataGaName":416,"dataGaLocation":411},{"altText":413,"config":453},{"src":419,"dataGaName":416,"dataGaLocation":411},{"title":455,"button":456,"config":461},"エージェント型AIがソフトウェア配信をどのように変革するかをご覧ください",{"text":457,"config":458},"GitLab Transcendを今すぐ視聴",{"href":459,"dataGaName":460,"dataGaLocation":49},"/ja-jp/events/transcend/virtual/","transcend event",{"layout":462,"icon":463,"disabled":13},"release","AiStar",{"data":465},{"text":466,"source":467,"edit":473,"contribute":478,"config":483,"items":488,"minimal":691},"GitはSoftware Freedom Conservancyの商標です。当社は「GitLab」をライセンスに基づいて使用しています",{"text":468,"config":469},"ページのソースを表示",{"href":470,"dataGaName":471,"dataGaLocation":472},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":474,"config":475},"このページを編集",{"href":476,"dataGaName":477,"dataGaLocation":472},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":479,"config":480},"ご協力をお願いします",{"href":481,"dataGaName":482,"dataGaLocation":472},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":484,"facebook":485,"youtube":486,"linkedin":487},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[489,534,587,630,657],{"title":191,"links":490,"subMenu":505},[491,495,500],{"text":492,"config":493},"プランの表示",{"href":193,"dataGaName":494,"dataGaLocation":472},"view plans",{"text":496,"config":497},"Premiumを選ぶ理由",{"href":498,"dataGaName":499,"dataGaLocation":472},"/ja-jp/pricing/premium/","why premium",{"text":501,"config":502},"Ultimateを選ぶ理由",{"href":503,"dataGaName":504,"dataGaLocation":472},"/ja-jp/pricing/ultimate/","why ultimate",[506],{"title":56,"links":507},[508,510,512,514,519,524,529],{"text":56,"config":509},{"href":58,"dataGaName":59,"dataGaLocation":472},{"text":365,"config":511},{"href":367,"dataGaName":368,"dataGaLocation":472},{"text":370,"config":513},{"href":372,"dataGaName":373,"dataGaLocation":472},{"text":515,"config":516},"ステータス",{"href":517,"dataGaName":518,"dataGaLocation":472},"https://status.gitlab.com/","status",{"text":520,"config":521},"利用規約",{"href":522,"dataGaName":523,"dataGaLocation":472},"/terms/","terms of use",{"text":525,"config":526},"プライバシーに関する声明",{"href":527,"dataGaName":528,"dataGaLocation":472},"/ja-jp/privacy/","privacy statement",{"text":530,"config":531},"Cookie 優先設定",{"dataGaName":532,"dataGaLocation":472,"id":533,"isOneTrustButton":13},"cookie preferences","ot-sdk-btn",{"title":94,"links":535,"subMenu":544},[536,540],{"text":537,"config":538},"DevSecOpsプラットフォーム",{"href":76,"dataGaName":539,"dataGaLocation":472},"devsecops platform",{"text":541,"config":542},"AI支援開発",{"href":83,"dataGaName":543,"dataGaLocation":472},"ai-assisted development",[545],{"title":546,"links":547},"トピック",[548,552,557,562,567,572,577,582],{"text":112,"config":549},{"href":550,"dataGaName":551,"dataGaLocation":472},"/ja-jp/topics/ci-cd/","cicd",{"text":553,"config":554},"GitOps",{"href":555,"dataGaName":556,"dataGaLocation":472},"/ja-jp/topics/gitops/","gitops",{"text":558,"config":559},"DevOps",{"href":560,"dataGaName":561,"dataGaLocation":472},"/ja-jp/topics/devops/","devops",{"text":563,"config":564},"バージョン管理",{"href":565,"dataGaName":566,"dataGaLocation":472},"/ja-jp/topics/version-control/","version control",{"text":568,"config":569},"DevSecOps",{"href":570,"dataGaName":571,"dataGaLocation":472},"/ja-jp/topics/devsecops/","devsecops",{"text":573,"config":574},"クラウドネイティブ",{"href":575,"dataGaName":576,"dataGaLocation":472},"/ja-jp/topics/cloud-native/","cloud native",{"text":578,"config":579},"コーディングのためのAI",{"href":580,"dataGaName":581,"dataGaLocation":472},"/ja-jp/topics/devops/ai-for-coding/","ai for coding",{"text":583,"config":584},"エージェント型AI",{"href":585,"dataGaName":586,"dataGaLocation":472},"/ja-jp/topics/agentic-ai/","agentic ai",{"title":588,"links":589},"ソリューション",[590,593,595,600,604,607,610,613,615,617,620,625],{"text":137,"config":591},{"href":132,"dataGaName":592,"dataGaLocation":472},"Application Security Testing",{"text":124,"config":594},{"href":108,"dataGaName":109,"dataGaLocation":472},{"text":596,"config":597},"アジャイル開発",{"href":598,"dataGaName":599,"dataGaLocation":472},"/ja-jp/solutions/agile-delivery/","agile delivery",{"text":601,"config":602},"SCM",{"href":121,"dataGaName":603,"dataGaLocation":472},"source code management",{"text":112,"config":605},{"href":114,"dataGaName":606,"dataGaLocation":472},"continuous integration & delivery",{"text":163,"config":608},{"href":165,"dataGaName":609,"dataGaLocation":472},"value stream management",{"text":553,"config":611},{"href":612,"dataGaName":556,"dataGaLocation":472},"/ja-jp/solutions/gitops/",{"text":176,"config":614},{"href":178,"dataGaName":179,"dataGaLocation":472},{"text":181,"config":616},{"href":183,"dataGaName":184,"dataGaLocation":472},{"text":618,"config":619},"公共機関",{"href":188,"dataGaName":189,"dataGaLocation":472},{"text":621,"config":622},"教育",{"href":623,"dataGaName":624,"dataGaLocation":472},"/ja-jp/solutions/education/","education",{"text":626,"config":627},"金融サービス",{"href":628,"dataGaName":629,"dataGaLocation":472},"/ja-jp/solutions/finance/","financial services",{"title":196,"links":631},[632,634,636,638,641,643,645,647,649,651,653,655],{"text":208,"config":633},{"href":210,"dataGaName":211,"dataGaLocation":472},{"text":213,"config":635},{"href":215,"dataGaName":216,"dataGaLocation":472},{"text":218,"config":637},{"href":220,"dataGaName":221,"dataGaLocation":472},{"text":223,"config":639},{"href":225,"dataGaName":640,"dataGaLocation":472},"docs",{"text":246,"config":642},{"href":248,"dataGaName":249,"dataGaLocation":472},{"text":241,"config":644},{"href":243,"dataGaName":244,"dataGaLocation":472},{"text":251,"config":646},{"href":253,"dataGaName":254,"dataGaLocation":472},{"text":259,"config":648},{"href":261,"dataGaName":262,"dataGaLocation":472},{"text":264,"config":650},{"href":266,"dataGaName":267,"dataGaLocation":472},{"text":269,"config":652},{"href":271,"dataGaName":272,"dataGaLocation":472},{"text":274,"config":654},{"href":276,"dataGaName":277,"dataGaLocation":472},{"text":279,"config":656},{"href":281,"dataGaName":282,"dataGaLocation":472},{"title":297,"links":658},[659,661,663,665,667,669,671,675,680,682,684,686],{"text":304,"config":660},{"href":306,"dataGaName":299,"dataGaLocation":472},{"text":309,"config":662},{"href":311,"dataGaName":312,"dataGaLocation":472},{"text":317,"config":664},{"href":319,"dataGaName":320,"dataGaLocation":472},{"text":322,"config":666},{"href":324,"dataGaName":325,"dataGaLocation":472},{"text":327,"config":668},{"href":329,"dataGaName":330,"dataGaLocation":472},{"text":332,"config":670},{"href":334,"dataGaName":335,"dataGaLocation":472},{"text":672,"config":673},"Sustainability",{"href":674,"dataGaName":672,"dataGaLocation":472},"/sustainability/",{"text":676,"config":677},"ダイバーシティ、インクルージョン、ビロンギング（DIB）",{"href":678,"dataGaName":679,"dataGaLocation":472},"/ja-jp/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":337,"config":681},{"href":339,"dataGaName":340,"dataGaLocation":472},{"text":347,"config":683},{"href":349,"dataGaName":350,"dataGaLocation":472},{"text":352,"config":685},{"href":354,"dataGaName":355,"dataGaLocation":472},{"text":687,"config":688},"現代奴隷制の透明性に関する声明",{"href":689,"dataGaName":690,"dataGaLocation":472},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":692},[693,695,698],{"text":520,"config":694},{"href":522,"dataGaName":523,"dataGaLocation":472},{"text":696,"config":697},"Cookieの設定",{"dataGaName":532,"dataGaLocation":472,"id":533,"isOneTrustButton":13},{"text":525,"config":699},{"href":527,"dataGaName":528,"dataGaLocation":472},[701,714],{"id":702,"title":19,"body":9,"config":703,"content":705,"description":9,"extension":31,"meta":709,"navigation":13,"path":710,"seo":711,"stem":712,"__hash__":713},"blogAuthors/en-us/blog/authors/michael-friedrich.yml",{"template":704},"BlogAuthor",{"name":19,"config":706},{"headshot":707,"ctfId":708},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659879/Blog/Author%20Headshots/dnsmichi-headshot.jpg","dnsmichi",{},"/en-us/blog/authors/michael-friedrich",{},"en-us/blog/authors/michael-friedrich","lJ-nfRIhdG49Arfrxdn1Vv4UppwD51BB13S3HwIswt4",{"id":715,"title":20,"body":9,"config":716,"content":717,"description":9,"extension":31,"meta":721,"navigation":13,"path":722,"seo":723,"stem":724,"__hash__":725},"blogAuthors/en-us/blog/authors/alana-bellucci.yml",{"template":704},{"name":20,"config":718},{"headshot":719,"ctfId":720},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664907/Blog/Author%20Headshots/abellucci-headshot.jpg","abellucci",{},"/en-us/blog/authors/alana-bellucci",{},"en-us/blog/authors/alana-bellucci","3yZkXKzugCivW5k4M4NhFUWGwSBpmKUIdSB4MT4yl4U",[727,742,755],{"content":728,"config":740},{"title":729,"description":730,"authors":731,"body":734,"heroImage":735,"date":736,"category":10,"tags":737},"GitLabとVertex AI on Google Cloud：エージェント型ソフトウェア開発の加速","Google CloudのVertex AIとGitLab Duo Agent Platformを組み合わせることで、ファウンデーションモデル、エンタープライズ制御、Model Gardenの豊富なモデルを活用したエージェント型開発が実現します。\n",[732,733],"Regnard Raquedan","Rajesh Agadi","GitLab Duo Agent Platformは、組織がソフトウェアをビルド、セキュア化、そして提供する方法を再定義しつつあります。2026年1月の一般提供開始以来、このプラットフォームはソフトウェア開発ライフサイクルのあらゆる段階にエージェント型AIをもたらしています。Duo Agent Platformは、ソフトウェアチームと専門エージェントが連携して計画、コーディング、レビュー、セキュリティ脆弱性の修正を行う、インテリジェントなオーケストレーションレイヤーです。\n\nこのパートナーシップを通じて、[GitLab Duo Agent Platform](https://about.gitlab.com/gitlab-duo-agent-platform/)はVertex AI on Google Cloudとの統合によりソフトウェア開発のオーケストレーションとライフサイクルコンテキストを自動化します。Vertex AIはエージェント呼び出しのモデル層を担い、ソフトウェアチームはすでに定義済みのGoogle Cloudポリシーに従って推論を実行しながら、イシュー、マージリクエスト、パイプライン、セキュリティワークフローの作業を継続できます。\n\nGoogle CloudのVertex AIモデルの進化により、Google CloudユーザーはGitLab Duo Agent Platformをさらに活用できるようになっています。GitLabではAIを活用したDevSecOpsコントロールプレーンを、Vertex AIの急速に進化するAIインフラ基盤と、Duo Agent Platformの柔軟なデプロイ・統合オプションが支えています。この組み合わせにより、エンタープライズスケールで動作する、より高度でガバナンスの効いたエージェント型ワークフローが実現します。\n\n![Google CloudのVertex AIと連携してエージェント型ソフトウェア開発とガバナンスを備えたAIワークフローを実現するGitLab Duo Agent Platformの概念図](https://res.cloudinary.com/about-gitlab-com/image/upload/v1776165990/b7jlux9kydafncwy8spc.png)\n\n## 開発ライフサイクル全体にわたるエージェント\n\n多くのAIツールは、コードをより速く生成するという単一のタスクに集中しています。GitLab Duo Agent Platformはそれをさらに超え、計画からセキュリティレビュー、リリースまで、ソフトウェア開発ライフサイクル（SDLC）全体にわたってAIエージェントをオーケストレーションします。これは、多数のプロジェクトとリリースを抱える多くのチームを対象としています。このスケールにおいて、AIコーディングアシスタントは継続的なイノベーションに必要ではありますが、それだけでは十分ではありません。\n\n単一目的のコーディングアシスタントがプロジェクトの全体像を把握することはほとんどありません。バックログの状況、オープン中のマージリクエスト、失敗したジョブ、セキュリティの検出結果はGitLabに蓄積されていますが、コーディングアシスタント内の別のチャットウィンドウはSDLCのその全体像を引き継ぐことができません。このギャップは、手動によるハンドオフ、コンテキストを持たないAIへの重複した説明、そして一つのシステムとして設計されたわけではないツール間のデータフローをマッピングしようとするガバナンスチームという形で表れます。\n\nGitLab Duo Agent Platformは、エンジニアが日々使用するオブジェクト上でエージェントとフローを動作させることで、このギャップを埋めます。Google Cloudを推論の基盤として選択している場合、Vertex AIはエージェントが呼び出すモデルとサービスを提供し、GitLabのAI Gatewayがアクセスを仲介することで管理者はどこに何が接続されているかを明確に把握できます。例えば、GitLab Duo Planner Agentはバックログを分析し、エピックを構造化タスクに分解し、優先順位付けフレームワークを適用することで、次に何を構築するかをチームが判断するのを支援します。Security Analyst Agentは脆弱性をトリアージし、平易な言葉でリスクを説明し、優先順位に従って修正を推奨します。ビルトインのフローはこれらのエージェントをエンドツーエンドのプロセスへと連結し、開発者がすべてのハンドオフを手動で管理する必要をなくします。\n\nGitLab Duo Agent PlatformのAgentic Chatは、開発者にとって統合された体験を提供します。自然言語でクエリを投げかけることで、プロジェクトのイシュー、マージリクエスト、パイプライン、セキュリティの検出結果、コードベースといった全体像を踏まえた多段階の推論に基づくコンテキスト対応の回答が得られます。GitLabがSDLCの統一データモデルを持つ記録システムとして機能しているため、GitLab Duoエージェントは、スタンドアロンのツール固有AIアシスタントでは到達できないライフサイクルコンテキストをもとに動作します。\n\n### Vertex AIによる能力の拡張\n\nGitLab Duo Agent Platformはモデルフレキシブルな設計となっており、タスクごとに最適なパフォーマンスを発揮するモデルへと異なる機能をルーティングします。このアーキテクチャの選択はGoogle Cloud上で効果を発揮します。Vertex AIはファウンデーションモデルと関連サービスのマネージド環境として機能し、幅広いモデルエコシステムとマネージドインフラを提供することでプラットフォームの能力をさらに引き出します。\n\nVertex AIを通じて利用できる最新世代のAIモデルは、以前のバージョンと比較して推論、ツール使用、長文コンテキスト理解において大幅な改善をもたらします。これらはまさに、GitLabのエージェントが大規模で複雑なコードベースを持つ多くのプロジェクトとチームにわたって依拠するプロパティです。基盤モデルにおけるより長いコンテキストウィンドウと豊富なツール連携により、エージェントが一度のパスで達成できることが広がり、深いバックログ分析やモノレポのセキュリティレビューといったワークロードに特に重要な意味を持ちます。\n\n幅広いファウンデーションモデルへのアクセスを提供する[Vertex AI Model Garden](https://cloud.google.com/model-garden)により、ベンダーロックインではなく、パフォーマンス、コスト、規制要件に基づいてこれらの選択を行う自由がお客様に与えられます。\n\nさらに、GitLabのお客様はDuo Agent PlatformにBYOM（Bring Your Own Model）を利用することで、承認済みのプロバイダーとゲートウェイをセキュリティモデルが期待する場所に配置できます。[18.9リリースにおけるセルフホスト型Duo Agent PlatformとBYOMの解説](https://about.gitlab.com/blog/agentic-ai-enterprise-control-self-hosted-duo-agent-platform-and-byom/)では、その仕組みが詳しく説明されています。このデプロイオプションにより、お客様はソフトウェア開発プロセスに合わせてカスタマイズできるより広いモデルの選択肢へのアクセスを得られます。適切なワークフローに、適切なモデルを、適切なガードレールとともに。\n\nGitLabがVertex AIを基盤として選択したのは、エンタープライズグレードの信頼性と比類ないモデルの幅広さへのニーズによるものです。Vertex AIとModel Gardenは、LLMホスティングの重労働を完全に抽象化し、迅速なバージョン提供、堅牢なセキュリティ、厳格なガバナンスをシームレスに統合に組み込んでいます。Geminiモデルの提供にとどまらず、Vertex AIはサードパーティおよびオープンソースモデルの豊富なカタログへのグローバルかつ低レイテンシのアクセスを提供します。\n\nGoogleCloudの業界をリードするデータプライバシーとモデル保護へのアプローチと組み合わせることで、Vertex AIはGitLabの次世代デベロッパーエクスペリエンスを支える明確な選択肢として浮上しました。\n\nVertex AI Model GardenをバックエンドへIntegrateすることで、GitLabはDevSecOpsプラットフォームを強化しながら、その複雑さをユーザーに負わせることがありません。開発チームは基盤となるLLMの評価や管理に煩わされることなく、アプリケーション構築のための効率的なAI支援ワークフローを体験できます。\n\nGitLabはクラウドオーケストレーションを完全に抽象化し、開発者が優れたコードの記述に集中できる環境を提供する一方、Vertex AIはその支援となる機能を動かしています。\n\n## Google Cloudをご利用のお客様への意義\n\nGitLab Duo Agent Platformはすでに、一つのガバナンスの効いた記録システムの中でソフトウェアライフサイクル全体にわたって動作するAIエージェントを提供しています。Google Cloud上では、Vertex AIがモデルとインフラ層を継続的に進化させながら、迅速なイノベーションを可能にします。\n\nGoogle Cloudをご利用のお客様にとって、この統合は厳格なエンタープライズガバナンスを維持しながらソフトウェア提供を効率化することを意味します。プラットフォームエンジニアリンググループにとっては、クライアントサイドのツールを数十種類カタログ化するのではなく、GitLab内の提案、分析、修正を担うVertex AI連携モデルを標準化することを意味します。セキュリティプログラムは、エージェントが開発者がすでに検出結果をトリアージしている場所と同じ場所で修正を提案・検証することで、頭の切り替えを減らし、管理されていないチャネルへ流出していた作業を削減できます。\n\nクラウドの費用対効果とポリシーの観点から、GitLab内からVertexへのエージェント推論をまとめることで、Google Cloud上ですでに運用している契約や統制に近い形で使用量を管理でき、調達プロセスを迂回する重複支出やシャドーパスを回避するのに役立ちます。\n\nVertex AIはGitLab Duo Agent Platformの基盤インフラプロバイダーであるため、組織はAIツールチェーンの断片化を管理するオーバーヘッドとリスクなしに、デベロッパーの生産性を大幅に向上させることができます。チームは単一のセキュアな記録システムの中で足並みを揃え、アプリケーションをより速くビルドし、確信を持ってリリースできるようになります。\n\nGitLabとGoogle Cloudのコラボレーションは2018年から続いています。今日、これはAIの実験から、Google Cloud上での完全にガバナンスが効いたエージェント型ソフトウェア開発へと移行する組織にとって、最も包括的なパスの一つとなっています。GitLabがエージェントオーケストレーションとデベロッパーコンテキストを拡充し、Vertex AIがモデル能力とエージェントインフラの限界を押し広げていく中で、共同顧客にとっての価値は今後も成長し続けるでしょう。\n\n> [GitLab Duo Agent Platformの無料トライアルを開始](https://about.gitlab.com/free-trial/)して、Google Cloud上でのGitLabとVertex AIのパワーをぜひご体験ください。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663121/Blog/Hero%20Images/LogoLockupPlusLight.png","2026-04-14",[25,282,738,739,27],"google","news",{"featured":13,"template":14,"slug":741},"gitlab-and-vertex-ai-on-google-cloud",{"content":743,"config":753},{"heroImage":744,"body":745,"authors":746,"updatedDate":748,"date":749,"title":750,"tags":751,"description":752,"category":10},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772643639/sapu29gmlgtwvhggmj6k.png","ソフトウェア開発の管理では、複数のツールを同時に扱うことが求められます。Jiraで課題を追跡し、IDEでコードを記述し、GitLabでコラボレーションするといった具合です。こうしたプラットフォーム間のコンテキストの切り替えは集中力を妨げ、デリバリーを遅らせます。\n\nGitLab Duo Agent Platformの[MCP](https://about.gitlab.com/topics/ai/model-context-protocol/)サポートにより、Jiraをはじめ、MCPに対応するあらゆるツールを、AIを活用した開発環境に直接接続できるようになりました。課題の照会、チケットの更新、ワークフローの同期など、すべてを自然言語で、IDEを離れることなく実行できます。\n\n## この記事で学べること\n\nこのチュートリアルでは、以下の内容を解説します。\n\n* **Jira/Atlassian OAuthアプリケーションのセットアップ** — セキュアな認証を設定します\n* **GitLab Duo Agent Platformの設定** — GitLab Duo Agent PlatformをMCPクライアントとして設定します\n* **3つの実践的なユースケース** — 実際のワークフローのデモをご覧ください\n\n## 前提条件\n\n開始する前に、以下の要件を満たしていることをご確認ください。\n\n| 要件 | 詳細 |\n| ---- | ----- |\n| **GitLabインスタンス** | Duo Agent Platformが有効なGitLab 18.8以降 |\n| **Jiraアカウント** | OAuthアプリケーションを作成できる管理者権限を持つJira Cloudインスタンス |\n| **IDE** | GitLab Workflow拡張機能がインストールされたVisual Studio Code |\n| **MCPサポート** | GitLabでMCPサポートが有効化済み |\n\n\n## アーキテクチャの概要\n\nGitLab Duo Agent Platformは**MCPクライアント**として機能し、Atlassian MCPサーバーに接続してJiraのプロジェクト管理データにアクセスします。Atlassian MCPサーバーは認証を処理し、自然言語のリクエストをAPI呼び出しに変換して、構造化されたデータをGitLab Duo Agent Platformに返します。このプロセス全体を通じて、セキュリティと監査管理が維持されます。\n\n## パート1：Jira OAuthアプリケーションの設定\n\nGitLab Duo Agent PlatformをJiraインスタンスに安全に接続するには、Atlassian Developer ConsoleでOAuth 2.0アプリケーションを作成する必要があります。これにより、GitLabのMCPサーバーにJiraデータへの認可されたアクセス権が付与されます。\n\n### セットアップ手順\n\n手動で設定する場合は、以下の手順に従ってください。\n\n1. **Atlassian Developer Consoleへのアクセス**\n\n   * [developer.atlassian.com/console/myapps](https://developer.atlassian.com/console/myapps)にアクセスします。\n\n   * Atlassianアカウントでサインインします。\n\n2. **新しいOAuth 2.0アプリの作成**\n\n   * 「**Create**」→「**OAuth 2.0 integration**」をクリックします。\n\n   * アプリ名を入力します（例：「gitlab-dap-mcp」）。\n\n   * 利用規約に同意し、「**Create**」をクリックします。\n\n3. **権限の設定**\n\n   * 左サイドバーの「**Permissions**」に移動します。\n\n   * 「**Jira API**」を追加し、以下のスコープを設定します。\n\n     * `read:jira-work` — 課題、プロジェクト、ボードの読み取り\n\n     * `write:jira-work` — 課題の作成と更新\n\n     * `read:jira-user` — ユーザー情報の読み取り\n\n4. **認可の設定**\n\n   * 左サイドバーの「**Authorization**」に移動します。\n\n   * お使いの環境のコールバックURLを追加します（`https://gitlab.com/oauth/callback`）。\n\n   * 変更を保存します。\n\n5. **認証情報の取得**\n\n   * 「**Settings**」に移動します。\n\n   * 「**Client ID**」と「**Client Secret**」をコピーします。\n\n   * これらの認証情報はMCP設定に必要なため、安全な場所に保管してください。\n\n\n### インタラクティブウォークスルー：Jira OAuthのセットアップ\n\n以下の画像をクリックして開始してください。\n\n\n[![Jira OAuthセットアップツアー](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772644850/wnzfoq43nkkfmgdqldmr.png)](https://gitlab.navattic.com/jira-oauth-setup)\n\n\n## パート2：GitLab Duo Agent PlatformのMCPクライアントの設定\n\nOAuth認証情報の準備ができたら、GitLab Duo Agent PlatformをAtlassian MCPサーバーに接続するための設定を行います。\n\n### MCP設定ファイルの作成\n\nGitLabプロジェクトの `.gitlab/duo/mcp.json` にMCP設定ファイルを作成します。\n\n\n```json\n{\n  \"mcpServers\": {\n    \"atlassian\": {\n      \"type\": \"http\",\n      \"url\": \"https://mcp.atlassian.com/v1/mcp\",\n      \"auth\": {\n        \"type\": \"oauth2\",\n        \"clientId\": \"YOUR_CLIENT_ID\",\n        \"clientSecret\": \"YOUR_CLIENT_SECRET\",\n        \"authorizationUrl\": \"https://auth.atlassian.com/oauth/authorize\",\n        \"tokenUrl\": \"https://auth.atlassian.com/oauth/token\"\n      },\n      \"approvedTools\": true\n    }\n  }\n}\n```\n\n`YOUR_CLIENT_ID` と `YOUR_CLIENT_SECRET` は、パート1で生成した認証情報に置き換えてください。\n\n### GitLabでMCPを有効化\n\n1. 「**グループ設定**」→「**GitLab Duo**」→「**Configuration**」に移動します。\n2. 「Allow external MCP tools」にチェックが入っていることを確認します。\n\n### 接続の確認\n\nVS Codeでプロジェクトを開いてGitLab Duo Agent Platformのチャットで次のように入力してください。\n\n```text\nWhat MCP tools do you have access to?\n```\n\n次に、以下のように入力します。\n\n```text\nTest the MCP JIRA configuration in this project\n```\n\nこの時点で、IDEからAtlassian MCPウェブサイトにリダイレクトされ、アクセスの承認を求められます。\n\n![Atlassian MCPウェブサイトへのリダイレクト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772643461/z5acqjgguh0damnnde9g.png \"MCPのAtlassianウェブサイトへのリダイレクト\")\n\n\u003Cbr>\u003C/br>\n\n![アクセスの承認](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772643461/rwowamm8nsubhpixtn3i.png \"アクセスの承認\")\n\n\u003Cbr>\u003C/br>\n\n![JIRAインスタンスを選択して承認](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772643461/chuzqd0jeptfwvoj7wjr.png \"JIRAインスタンスを選択して承認\")\n\n\u003Cbr>\u003C/br>\n\n![成功！](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772643462/bsgti5iste2bzck19o5y.png \"成功！\")\n\n\u003Cbr>\u003C/br>\n\n### MCPダッシュボードでの確認\n\nGitLabには、IDEに組み込みの**MCPダッシュボード**も用意されています。\n\nVS CodeまたはVSCodiumで、コマンドパレット（macOSでは `Cmd+Shift+P`、Windows/Linuxでは `Ctrl+Shift+P`）を開いて「**GitLab: Show MCP Dashboard**」を検索してください。ダッシュボードは新しいエディタータブで表示され、以下の情報を確認できます。\n\n* 設定済みの各MCPサーバーの**接続ステータス**\n* サーバーが公開している**利用可能なツール**（例：`jira_get_issue`、`jira_create_issue`）\n* **サーバーログ** — リアルタイムで呼び出されているツールを確認可能\n\n![MCPサーバーのダッシュボードとステータス](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772643462/mmvdfchucacsydivowvn.png \"MCPサーバーのダッシュボードとステータス\")\n\n\u003Cbr>\u003C/br>\n\n![サーバーの詳細と権限](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772643462/tcocgdvovp2dl42pvfn8.png \"サーバーの詳細と権限\")\n\n\u003Cbr>\u003C/br>\n\n\n![MCPサーバーログ](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772643466/mougvqqk1bozchaufsci.png \"MCPサーバーログ\")\n\n\u003Cbr>\u003C/br>\n\n### インタラクティブウォークスルー：MCPのテスト\n\n\u003Ciframe src=\"https://player.vimeo.com/video/1170005495?badge=0&amp;autopause=0&amp; player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"Testing MCP\">\u003C/iframe>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\n## パート3：実践的なユースケース\n\n統合の設定が完了したら、JiraをGitLab Duo Agent Platformへの接続を実現できる3つの実践的なワークフローを見ていきましょう。\n\n### プランニングアシスタント\n\n**シナリオ：** スプリントプランニングの準備として、バックログをすばやく評価し、優先事項を把握し、ブロッカーを特定する必要があります。\n\nこのデモでは以下の操作を紹介します。\n\n* バックログの照会\n* 未割り当ての高優先度課題の特定\n* AIによるスプリント推奨の取得\n\n#### プロンプト例\n\nGitLab Duo Agent Platformのチャットで以下のプロンプトをお試しください。\n\n```text\nList all the unassigned issues in JIRA for project GITLAB\n```\n\n```text\nSuggest the two top issues to prioritize and summarize them. Assign them to me.\n```\n\n### インタラクティブウォークスルー：プロジェクトプランニング\n\n\u003Ciframe src=\"https://player.vimeo.com/video/1170005462?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"Project Planning\">\u003C/iframe>\u003Cscript src=\"https://player.vimeo.com/api/player. js\">\u003C/script>\n\n### コードからの課題トリアージと作成\n\n**シナリオ：** コードレビュー中にバグを発見し、IDEを離れることなく、関連するコンテキストに沿ってJiraの課題を作成したい場合です。\n\nこのデモでは以下の手順を紹介します。\n\n* コーディング中のバグの特定\n* 自然言語を使ったJira課題の詳細な作成\n* コードのコンテキストに沿った課題フィールドの自動入力\n* 現在のブランチへの課題のリンク\n\n#### プロンプト例\n\n```text\nSearch in JIRA for a bug related to: Null pointer exception in PaymentService.processRefund().\nIf it does not exist create it with all the context needed from the code. Find possible blockers that this bug may cause.\n```\n\n```text\nCreate a new branch called issue-gitlab-18, checkout, and link it to the issue we just created. Assign the JIRA issue to me and mark it as in-progress.\n```\n\n### インタラクティブウォークスルー：バグレビューとタスク自動化\n\n\u003Ciframe src=\"https://player.vimeo.com/video/1170005368?badge=0&amp;autopause=0&amp; player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"Bug Review\">\u003C/iframe>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\n### クロスシステムのインシデント調査\n\n**シナリオ：** 本番環境でインシデントが発生し、Jira（インシデントチケット）、GitLabプロジェクト管理、コードベース、マージリクエストからの情報を照合して根本原因を特定する必要があります。\n\nこのデモでは以下を実演します。\n\n* Jiraからのインシデント詳細の取得\n* GitLabの最近のマージリクエストとの照合\n* 関連する可能性のあるコード変更の特定\n* インシデントタイムラインの生成\n* 修正計画の設計とGitLabのワークアイテムとしての作成\n\n#### プロンプト例\n\n```text\n\"We have a production incident INC-1 about checkout failures. Can you help me investigate with all available context?\"\n```\n\n```text\nCreate a timeline of events for incident INC-1 including related Jira issues and recent deployments\n```\n\n```text\nPropose a remediation plan\n```\n\n### インタラクティブウォークスルー：クロスシステムのトラブルシューティングと修正\n\n\u003Ciframe src=\"https://player.vimeo.com/video/1170005413?badge=0&amp;autopause=0&amp; player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"Cross System Investigation\">\u003C/iframe>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\n## トラブルシューティング\n\nよくあるセットアップの問題と解決策を以下にまとめます。\n\n| 問題 | 解決策 |\n| ----- | ----- |\n| 「MCP server not found」 | `mcp.json` ファイルが正しい場所にあり、適切にフォーマットされていることを確認してください。 |\n| 「Authentication failed」 | OAuth認証情報を再確認し、Atlassianでスコープが正しく設定されていることを確認してください。 |\n| 「No Jira tools available」 | `mcp.json` を更新後にVS Codeを再起動し、GitLabでMCPが有効になっていることを確認してください。 |\n| 「Connection timeout」 | `mcp.atlassian.com` へのネットワーク接続を確認してください。 |\n\n\u003Cbr/> 詳細なトラブルシューティングについては、[GitLab MCPクライアントのドキュメント](https://docs.gitlab.com/ja-jp/user/gitlab_duo/model_context_protocol/mcp_clients/)をご参照ください。\n\n\n## セキュリティに関する考慮事項\n\nJiraをGitLab Duo Agent Platformと統合する際は、以下の点にご注意ください。\n\n* **OAuthトークン** — 認証情報を安全に管理してください。\n* **最小権限の原則** — Jiraスコープは必要最小限のみ付与してください。\n* **トークンのローテーション** — セキュリティ管理の一環として、OAuth認証情報を定期的にローテーションしてください。\n\n\n## まとめ\n\nMCPを通じてGitLab Duo Agent Platformをさまざまなツールに接続することで、開発ライフサイクルとのインタラクションが大きく変わります。この記事では、以下の方法を学びました。\n\n* **自然言語による課題の照会** — バックログ、スプリント、インシデントについて自然言語で質問できます。\n* **DevSecOps環境全体での課題の作成と更新** — IDEを離れることなくバグを報告し、チケットを更新できます。\n* **システム間の情報照合** — JiraのデータをGitLabのプロジェクト管理、マージリクエスト、パイプラインと組み合わせることで、全体的な可視性が得られます。\n* **コンテキスト切り替えの削減** — プロジェクト管理とのつながりを維持しながら、コードに集中できます。\n\nこの統合は、MCPの可能性を体現するものです。AIを通じてツールへの標準化されたセキュアなアクセスを提供し、ガバナンスやセキュリティを損なうことなく、デベロッパーがより効率的に作業できる環境を実現します。\n\n\n## 関連リソース\n\n* [Model Context Protocol統合](https://about.gitlab.com/ja-jp/blog/duo-agent-platform-with-mcp/)\n\n* [Model Context Protocolとは](https://about.gitlab.com/topics/ai/model-context-protocol/)\n\n* [エージェント型AIに関するガイドとリソース](https://about.gitlab.com/ja-jp/blog/agentic-ai-guides-and-resources/)\n\n* [GitLab MCPクライアントのドキュメント](https://docs.gitlab.com/ja-jp/user/gitlab_duo/model_context_protocol/mcp_clients/)\n\n* [GitLab Duo Agent Platformを始める：完全ガイド](https://about.gitlab.com/ja-jp/blog/gitlab-duo-agent-platform-complete-getting-started-guide/)",[747],"Albert Rabassa","2026-03-30","2026-03-05","MCPであらゆるツールを接続してGitLab Duo Agent Platformを拡張",[27,29],"MCPを使用して外部ツールをGitLab Duo Agent Platformに接続する方法を解説します。3つの実践的なワークフローデモを含むステップバイステップのセットアップガイドです。",{"featured":35,"template":14,"slug":754},"extend-gitlab-duo-agent-platform-connect-any-tool-with-mcp",{"content":756,"config":767},{"heroImage":757,"body":758,"authors":759,"updatedDate":761,"date":762,"title":763,"tags":764,"description":766,"category":10},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772632341/duj8vaznbhtyxxhodb17.png","AIを活用したコーディングツールにより、開発者はこれまで以上に速くコードを生成できるようになりました。では、なぜチーム全体の *リリース速度* は上がらないのでしょうか？\n\nそれは、コーディングがソフトウェア提供ライフサイクルの20%に過ぎず、残りの80%がボトルネックになっているからです。コードレビューの滞留、セキュリティスキャンの遅れ、ドキュメントの陳腐化、手動の調整作業の増加が、チームの速度を妨げています。\n\n嬉しいことに、個人のコーディングを加速する同じAI機能を使って、チームレベルの遅延も解消できます。コーディングフェーズだけでなく、ソフトウェアライフサイクル全体にAIを適用することが重要です。\n\n以下は、[GitLab Duo Agent Platformプロンプトライブラリ](https://about.gitlab.com/gitlab-duo/prompt-library/)から厳選した、すぐに使える10のプロンプトです。個人の生産性が向上する一方でチームプロセスの改善が追いついていないときに生じる、よくある障害を乗り越えるために役立ちます。\n\n## コードレビューをボトルネックから加速装置へ\n\nAIの支援により開発者はマージリクエストをより速く作成できるようになりましたが、コードレビューのサイクルが数時間から数日に伸びるにつれ、人間のレビュアーはすぐに手に負えなくなります。AIは定型的なレビュー作業を担うことで、レビュアーが基本的な論理エラーやAPI契約違反の発見に時間を取られることなく、アーキテクチャやビジネスロジックに集中できるようにします。\n\n### マージリクエストの論理エラーをレビューする\n\n**複雑さ**: 初級\n\n**カテゴリ**: コードレビュー\n\n**ライブラリのプロンプト**:\n\n```text\nこのMRの論理エラー、エッジケース、潜在的なバグをレビューしてください: [MRのURLまたはコードを貼り付け]\n```\n\n**効果**: 自動リンターは構文エラーを検出しますが、論理エラーの発見にはコードの意図を理解する必要があります。このプロンプトは、人間のレビュアーがコードを確認する前にバグを検出し、複数回のレビューサイクルを多くの場合1回の承認で完結させます。\n\n### マージリクエストの破壊的変更を特定する\n\n**複雑さ**: 初級\n\n**カテゴリ**: コードレビュー\n\n**ライブラリのプロンプト**:\n\n```text\nこのMRに破壊的変更はありますか？\n\nChanges:\n[code diffを貼り付け]\n\n以下を確認してください：\n1. APIシグネチャの変更\n2. publicメソッドの削除またはリネーム\n3. 戻り値の型の変更\n4. データベーススキーマの変更\n5. 設定の破壊的変更\n```\n\n**効果**: デプロイ中に破壊的変更が発見されると、ロールバックやインシデントにつながります。このプロンプトにより、その発見をマージリクエストの段階に前倒しできるため、修正がより迅速かつ低コストになります。\n\n## セキュリティをシフトレフトしながら速度を落とさないには？\n\nセキュリティスキャンは数百件もの検出結果を生成します。開発者がデプロイの承認を待つ間、セキュリティチームはそれぞれを手動でトリアージしています。検出結果の多くはフォルスポジティブや低リスクの問題ですが、実際の脅威を特定するには専門知識と時間が必要です。AIは実際の悪用可能性に基づいて検出結果を優先順位付けし、一般的な脆弱性を自動修復することで、セキュリティチームが本当に重要な脅威に集中できるようにします。\n\n### セキュリティスキャン結果を分析する\n\n**複雑さ**: 中級\n\n**カテゴリ**: セキュリティ\n\n**エージェント**: Duo Security Analyst\n\n**ライブラリのプロンプト**:\n\n```text\n@security_analyst このセキュリティスキャン結果を分析してください:\n\n[スキャン結果を貼り付け]\n\n各検出結果について:\n1. 実際のリスクかフォルスポジティブかを評価する\n2. 脆弱性を説明する\n3. 修復方法を提案する\n4. 深刻度で優先順位をつける\n```\n\n**効果**: セキュリティスキャンの検出結果の多くはフォルスポジティブや低リスクの問題です。このプロンプトはセキュリティチームが本当に重要な検出結果に集中できるようにし、修復にかかる時間を数週間から数日に短縮します。\n\n### コードのセキュリティ問題をレビューする\n\n**複雑さ**: 中級\n\n**カテゴリ**: セキュリティ\n\n**エージェント**: Duo Security Analyst\n\n**ライブラリのプロンプト**:\n\n```text\n@security_analyst このコードのセキュリティ問題をレビューしてください:\n\n[コードを貼り付け]\n\n以下を確認してください：\n1. インジェクション脆弱性\n2. 認証・認可の欠陥\n3. データ漏洩リスク\n4. 安全でない依存関係\n5. 暗号化の問題\n```\n\n**効果**: 従来のセキュリティレビューはコードが書かれた後に行われます。このプロンプトにより、開発者はマージリクエストを作成する前にセキュリティ問題を発見・修正でき、デプロイを遅らせる往復のやり取りを解消します。\n\n## コードの変更に合わせてドキュメントを最新に保つには？\n\nコードはドキュメントよりも速く変化します。ドキュメントが古かったり不足していたりするため、新しい開発者のオンボーディングには数週間かかります。ドキュメントの重要性はチーム全員が理解していますが、締め切りが近づくと常に後回しになります。標準ワークフローの一部としてドキュメントの生成と更新を自動化することで、手動作業を増やすことなくドキュメントを最新の状態に保てます。\n\n### マージリクエストからリリースノートを生成する\n\n**複雑さ**: 初級\n\n**カテゴリ**: ドキュメント\n\n**ライブラリのプロンプト**:\n\n```text\nマージ済みのこれらのMRのリリースノートを生成してください:\n[MRのURL一覧またはタイトルを貼り付け]\n\n以下のカテゴリでグループ化してください:\n1. 新機能\n2. バグ修正\n3. パフォーマンス改善\n4. 破壊的変更\n5. 非推奨事項\n```\n\n**効果**: リリースノートを手動でまとめるには数時間かかり、誤りや漏れが生じることもあります。自動生成により、リリースプロセスに負担をかけることなく、すべてのリリースに包括的なノートが揃います。\n\n### コード変更後にドキュメントを更新する\n\n**複雑さ**: 初級\n\n**カテゴリ**: ドキュメント\n\n**ライブラリのプロンプト**:\n\n```text\nこのコードを変更しました:\n\n[コード変更内容を貼り付け]\n\nどのドキュメントを更新する必要がありますか？以下を確認してください:\n1. READMEファイル\n2. APIドキュメント\n3. アーキテクチャ図\n4. オンボーディングガイド\n```\n\n**効果**: ドキュメントの乖離は、コード変更後にどのドキュメントを更新すべきかをチームが忘れることで起きます。このプロンプトにより、ドキュメントのメンテナンスが後回しにされる別タスクではなく、開発ワークフローの一部になります。\n\n## 計画の複雑さを分解するには？\n\n大規模な機能は計画段階で行き詰まりがちです。チームは作業範囲の定義と依存関係の特定のために何週間も会議を重ねます。複雑さに圧倒され、どこから始めればよいかわからなくなります。AIは複雑な作業を具体的で実装可能なタスクに体系的に分解し、明確な依存関係と受け入れ基準を設定することで、何週間もの計画を集中した実装へと変えます。\n\n### エピックをイシューに分解する\n\n**複雑さ**: 中級\n\n**カテゴリ**: ドキュメント\n\n**エージェント**: Duo Planner\n\n**ライブラリのプロンプト**:\n\n```text\nこのエピックを実装可能なイシューに分解してください：\n\n[エピックの説明]\n\n以下を考慮してください：\n1. 技術的な依存関係\n2. 適切なイシューのサイズ\n3. 明確な受け入れ基準\n4. 論理的な実装順序\n```\n\n**効果**: このプロンプトにより、1週間分の計画会議が30分のAI支援による分解とチームレビューに変わります。チームはより明確な方向性を持って、より早く実装を開始できます。\n\n## 工数を増やさずにテストカバレッジを拡大するには？\n\n開発者はコードをより速く書けるようになりましたが、テストが追いつかないとカバレッジが低下してバグが見逃されます。包括的なテストを手動で書くには時間がかかり、締め切りのプレッシャーの下でエッジケースを見落とすことも多くあります。テストを自動生成することで、開発者はゼロから書く代わりにレビューと改善に集中でき、速度を犠牲にすることなく品質を維持できます。\n\n### ユニットテストを生成する\n\n**複雑さ**: 初級\n\n**カテゴリ**: テスト\n\n**ライブラリのプロンプト**:\n\n```text\nこの関数のユニットテストを生成してください：\n\n[関数を貼り付け]\n\n以下のテストを含めてください：\n1. 正常系\n2. エッジケース\n3. エラー条件\n4. 境界値\n5. 不正な入力\n```\n\n**効果**: テストを手動で書くには時間がかかり、エッジケースが見落とされることもあります。このプロンプトは数秒で網羅的なテストスイートを生成し、開発者はゼロから書く代わりにレビューと調整に集中できます。\n\n### テストカバレッジのギャップをレビューする\n\n**複雑さ**: 初級\n\n**カテゴリ**: テスト\n\n**ライブラリのプロンプト**:\n\n```text\n[モジュール/コンポーネント]のテストカバレッジを分析してください：\n\n現在のカバレッジ：[パーセンテージ]\n\n以下を特定してください：\n1. テストされていない関数・メソッド\n2. カバーされていないエッジケース\n3. 不足しているエラーシナリオのテスト\n4. テストのない統合ポイント\n5. 次にテストすべき優先領域\n```\n\n**効果**: このプロンプトは、本番インシデントを引き起こす前にテストスイートのブラインドスポットを明らかにします。チームはより重要な箇所から体系的にカバレッジを改善できます。\n\n## デバッグ時の平均解決時間を短縮するには？\n\n本番インシデントの診断には数時間かかります。顧客がダウンタイムを経験する中、開発者はログやスタックトレースを調べ続けます。デバッグの1分1分が、生産性と潜在的な収益の損失につながります。AIは複雑なエラーメッセージを解析して具体的な修正案を提示することで根本原因分析を加速し、診断時間を数時間から数分に短縮します。\n\n### 失敗したパイプラインをデバッグする\n\n**複雑さ**: 初級\n\n**カテゴリ**: デバッグ\n\n**ライブラリのプロンプト**:\n\n```text\nこのパイプラインが失敗しています：\n\nジョブ：[ジョブ名]\nステージ：[ステージ]\nエラー：[エラーメッセージ/ログを貼り付け]\n\n\n以下を助けてください:\n1. 根本原因を特定する\n2. 修正方法を提案する\n3. なぜ失敗し始めたかを説明する\n4. 同様の問題を防ぐ\n```\n\n**効果**: CI/CDの失敗はチーム全体をブロックします。このプロンプトは、開発者が通常15〜30分かけて調査する問題を数秒で診断し、デプロイの速度を維持します。\n\n## 個人の成果からチームの加速へ\n\nこれらのプロンプトは、チームがソフトウェア提供にAIを活用する方法の転換を示しています。個人の開発者生産性だけに注目するのではなく、チームの速度を実際に制約している調整・品質・ナレッジ共有の課題に対処します。\n\n[プロンプトライブラリ](https://about.gitlab.com/gitlab-duo/prompt-library/)には、計画、開発、セキュリティ、テスト、デプロイ、運用といったソフトウェアライフサイクルの全ステージにわたる100以上のプロンプトが収録されています。各プロンプトは複雑さのレベル（初級・中級・上級）でタグ付けされ、ユースケース別に分類されているため、チームに合ったスタート地点を簡単に見つけられます。\n\nまずはチームの最も緊急な課題に対応する「初級」タグのプロンプトから始めましょう。チームが自信をつけるにつれ、より高度なワークフローを実現する中級・上級のプロンプトへと探求の幅を広げてください。目標は単に速いコーディングではなく、計画から本番まで、より速く、より安全で、より高品質なソフトウェア提供の実現です。",[760],"Chandler Gibbons","2026-03-13","2026-03-04","チームのソフトウェア提供を加速する10のAIプロンプト",[25,765],"DevOps platform","ソフトウェアライフサイクル全体をカバーするすぐに使えるAIプロンプトで、レビューの滞留、セキュリティの遅延、調整の手間を解消します。",{"featured":35,"template":14,"slug":768},"10-ai-prompts-to-speed-your-teams-software-delivery",{"promotions":770},[771,784,795,806],{"id":772,"categories":773,"header":774,"text":775,"button":776,"image":781},"ai-modernization",[10],"Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":777,"config":778},"Get your AI maturity score",{"href":779,"dataGaName":780,"dataGaLocation":249},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":782},{"src":783},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":785,"categories":786,"header":787,"text":775,"button":788,"image":792},"devops-modernization",[27,571],"Are you just managing tools or shipping innovation?",{"text":789,"config":790},"Get your DevOps maturity score",{"href":791,"dataGaName":780,"dataGaLocation":249},"/assessments/devops-modernization-assessment/",{"config":793},{"src":794},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":796,"categories":797,"header":798,"text":775,"button":799,"image":803},"security-modernization",[26],"Are you trading speed for security?",{"text":800,"config":801},"Get your security maturity score",{"href":802,"dataGaName":780,"dataGaLocation":249},"/assessments/security-modernization-assessment/",{"config":804},{"src":805},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":807,"paths":808,"header":811,"text":812,"button":813,"image":818},"github-azure-migration",[809,810],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","Is your team ready for GitHub's Azure move?","GitHub is already rebuilding around Azure. Find out what it means for you.",{"text":814,"config":815},"See how GitLab compares to GitHub",{"href":816,"dataGaName":817,"dataGaLocation":249},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":819},{"src":794},{"header":821,"blurb":822,"button":823,"secondaryButton":827},"今すぐ開発をスピードアップ","DevSecOpsに特化したインテリジェントオーケストレーションプラットフォームで実現できることをご確認ください。\n",{"text":51,"config":824},{"href":825,"dataGaName":54,"dataGaLocation":826},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/ja-jp/","feature",{"text":56,"config":828},{"href":58,"dataGaName":59,"dataGaLocation":826},1777394109382]