[{"data":1,"prerenderedAt":754},["ShallowReactive",2],{"/ja-jp/blog/understanding-flows-multi-agent-workflows":3,"navigation-ja-jp":37,"banner-ja-jp":436,"footer-ja-jp":446,"blog-post-authors-ja-jp-Itzik Gan Baruch":652,"blog-related-posts-ja-jp-understanding-flows-multi-agent-workflows":666,"assessment-promotions-ja-jp":707,"next-steps-ja-jp":745},{"id":4,"title":5,"authorSlugs":6,"body":8,"categorySlug":9,"config":10,"content":14,"description":8,"extension":27,"isFeatured":12,"meta":28,"navigation":29,"path":30,"publishedDate":20,"seo":31,"stem":33,"tagSlugs":34,"__hash__":36},"blogPosts/ja-jp/blog/understanding-flows-multi-agent-workflows.yml","Understanding Flows Multi Agent Workflows",[7],"itzik-gan-baruch",null,"ai-ml",{"slug":11,"featured":12,"template":13},"understanding-flows-multi-agent-workflows",false,"BlogPost",{"tags":15,"category":9,"date":20,"heroImage":21,"authors":22,"description":24,"title":25,"body":26},[16,17,18,19],"AI/ML","product","features","tutorial","2026-01-14","https://res.cloudinary.com/about-gitlab-com/image/upload/v1765809212/noh0mdfn9o94ry9ykura.png",[23],"Itzik Gan Baruch","GitLab Duo Agent Platformのフローを詳しく解説。基本フロー、カスタムユーザー定義ワークフローの作成、フローオーケストレーションパターンについて学びます。","フローを理解する：マルチエージェントワークフロー","\n*8部構成ガイド「[GitLab Duo Agent Platformを始める](https://about.gitlab.com/ja-jp/blog/gitlab-duo-agent-platform-complete-getting-started-guide/)」のパート4へようこそ。開発ライフサイクル内でのAIエージェントとワークフローの構築・デプロイをマスターします。最初の対話から完全カスタマイズ可能なプロダクション対応の自動化ワークフローまで、段階的なチュートリアルに従ってください。*\n\n**この記事の内容:**\n\n- [フローとは何か、どのように機能するか](#introduction-to-flows)\n- [GitLabが提供する基本フロー](#foundational-flows)\n- [カスタムフローの作成](#how-to-create-custom-flows)\n- [フローの実行とオーケストレーション](#flow-execution)\n- [実例とユースケース](#example-custom-flow-yaml)\n\n> 🎯 今すぐ[**GitLab Duo Agent Platform**](https://about.gitlab.com/ja-jp/gitlab-duo-agent-platform/)をお試しください！\n## フローの紹介\nフローは、1つ以上のエージェントが協働する組み合わせです。複雑な問題を解決するために複数ステップのワークフローを調整し、GitLabプラットフォームコンピュート上で実行されます。\n\n**フローの主な特徴:**\n\n- **マルチエージェントオーケストレーション**: 複数の専門エージェントを組み合わせ\n- **ビルトイン**: プラットフォームコンピュート上で実行、追加環境不要\n- **イベント駆動**: メンション、割り当て、レビュアーとしての割り当てでトリガー\n- **非同期**: 作業を続けながらバックグラウンドで実行\n- **完全なワークフロー**: 分析から実装までエンドツーエンドのタスクを処理\n\nフローは、情報収集から意思決定、変更の実行、結果の提供まで、すべて自動で行う自律的なワークフローです。あなたは他の作業に集中できます。\n\n## フロー vs. エージェント: 違いを理解する\nエージェントはあなたと対話的に作業します。フローはあなたのために自律的に作業します。\n\n| 側面 | エージェント | フロー |\n|--------|--------|-------|\n| **インタラクション** | 対話型チャット | 自律的な実行 |\n| **使用タイミング** | 質問、ガイダンス、対話的なタスク実行 | 自律的な複数ステップワークフロー |\n| **ユーザーの関与** | アクティブな会話 | トリガーと結果のレビュー |\n| **実行時間** | リアルタイム応答 | バックグラウンド処理 |\n| **複雑さ** | 単一エージェントタスク | マルチエージェントオーケストレーション |\n\n## フロータイプの概要\n\n| タイプ | インターフェース | メンテナー | ユースケース |\n|------|-------------|---------------|----------|\n| **[基本フロー](https://docs.gitlab.com/ja-jp/user/duo_agent_platform/flows/foundational_flows/)** | UIアクション、IDEインターフェース | GitLab | ソフトウェア開発、イシュー内のデベロッパー、CI/CDパイプライン修正、GitLab CI/CDへの変換、コードレビュー、SAST誤検知判定 |\n| **[カスタムフロー](https://docs.gitlab.com/ja-jp/user/duo_agent_platform/flows/custom/)** | メンション、割り当て、レビュアー割り当て | 自分 | 例: 大規模な移行/最新化、リリース自動化、依存関係更新管理 |\n\n## 基本フロー\n基本フローは、GitLabが作成・保守するプロダクション対応のワークフローです。専用のUIコントロールまたはIDEインターフェースからアクセスできます。\n### 現在利用可能な基本フロー\n\n| フロー | 利用可能な場所 | アクセス方法 | 最適な用途 |\n|------|-----------------|---------------|----------|\n| [**ソフトウェア開発フロー**](https://docs.gitlab.com/ja-jp/user/duo_agent_platform/flows/foundational_flows/software_development.html) | IDE(VS Code、JetBrains、Visual Studio) | IDEのFlowsタブ | 機能実装、複雑なリファクタリング、複数ファイルの変更 |\n| [**デベロッパーフロー**](https://docs.gitlab.com/ja-jp/user/duo_agent_platform/flows/foundational_flows/developer.html) | GitLab Web UI | イシューの「Duoでマージリクエストを生成」ボタン | 明確に定義された機能、明確な手順のあるバグ修正 |\n| [**CI/CDパイプライン修復フロー**](https://docs.gitlab.com/ja-jp/user/duo_agent_platform/flows/foundational_flows/fix_pipeline.html) | GitLab Web UI | 失敗したパイプラインインターフェース | パイプラインデバッグ、CI/CD設定の問題 |\n| [**GitLab CI/CD変換フロー**](https://docs.gitlab.com/ja-jp/user/duo_agent_platform/flows/foundational_flows/convert_to_gitlab_ci.html) | GitLab Web UI | Jenkinsfileの「Convert to GitLab CI/CD」ボタン | JenkinsからGitLab CI/CDへの移行 |\n| [**コードレビューフロー**](https://docs.gitlab.com/ja-jp/user/duo_agent_platform/flows/foundational_flows/code_review.html) | GitLab Web UI | MRでレビュアーとして割り当て | AIネイティブ分析とフィードバックによる自動コードレビュー |\n| [**SAST誤検出判定フロー**](https://docs.gitlab.com/ja-jp/user/duo_agent_platform/flows/foundational_flows/sast_false_positive_detection.html) | GitLab Web UI | セキュリティスキャン結果 | SAST検出結果の誤検知を自動的に特定してフィルタリング |\n\n## カスタムフロー\n\nカスタムフローは、チームの特定のニーズに合わせて作成するYAML定義のワークフローです。GitLab Runnerで実行され、GitLabイベントによってトリガーできます。\n\n> **🎯 今すぐ試す:**[カスタムフローのインタラクティブデモ](https://gitlab.navattic.com/custom-flows) — カスタムフローの作成と設定方法を探索します。\n\n### カスタムフローを作成する理由\n\nカスタムフローは、チームのワークフローに固有の反復的な複数ステップタスクを自動化します。一般的な目的に使用される基本フローとは異なり、カスタムフローは組織のプロセス、ツール、要件に合わせて調整されます。\n\n**一般的なユースケース:**\n\n- **自動コードレビュー**: 複数段階のレビュープロセス(セキュリティスキャン → 品質チェック → スタイル検証)\n- **コンプライアンスチェック**: 各MRで規制要件、ライセンスコンプライアンス、セキュリティポリシーを確認\n- **ドキュメント生成**: コード変更に基づいてAPIドキュメント、READMEファイル、変更ログを自動更新\n- **依存関係管理**: 週次セキュリティスキャン、自動更新、脆弱性レポート\n- **カスタムテスト**: 技術スタック用の特殊なテストスイートまたは統合テスト\n\n### 実例\n\nフィンテック企業は、すべてのマージリクエストで実行されるコンプライアンスフローを作成します。`@compliance-flow`でトリガーされると、フローは次のステップを実行します。\n1. **セキュリティエージェント**がPCI-DSS違反のコードをスキャンし、露出した機密データをチェックします。\n2. **コードレビューエージェント**が変更がセキュアコーディング標準とベストプラクティスに従っていることを確認します。\n3. **ドキュメントエージェント**がAPI変更に更新されたドキュメントが含まれているかチェックします。\n4. **サマリーエージェント**が検出結果を集約し、合格/不合格ステータスのコンプライアンスレポートを投稿します。\n\nコンプライアンスレビュー全体が5〜10分で自動的に実行され、すべてのマージリクエストで一貫したチェックが提供されます。\n\n### カスタムフローのトリガー方法\n\nカスタムフローは複数の方法でトリガーできます。\n\n**1. イシュー/MRでのメンション:**\nコメントでフローをメンションしてトリガーします。ドキュメント生成フローの例:\n```text\n@doc-generator Generate API documentation for this feature\n```\n\n**2. イシューまたはMRへのフローの割り当て:**\n次のいずれかを使用してフローを割り当てます。\n- **GitLab UI**: イシュー/MRの「アサイン」ボタンをクリックしてフローを選択\n- **コマンド**: コメントで`/assign`コマンドを使用。例:\n```shell\n/assign @doc-generator\n```\n\n**3. レビュアーとしてのフローの割り当て:**\n次のいずれかを使用してマージリクエストにレビュアーとしてフローを割り当てます。\n- **GitLab UI**: マージリクエストの「レビュアーをアサインする」ボタンをクリックしてフローを選択\n- **コマンド**:コメントで`/assign_reviewer`コマンドを使用。例:\n```shell\n/assign_reviewer @doc-reviewer\n```\nこれらの方法のいずれかにより、フローが自動的にトリガーされ、タスクを実行します。\n\n### カスタムフローの作成方法\n\nカスタムフローは、プロジェクトの**自動化 → フロー → 新しいフロー**、または**検索 → AIカタログ → フロー → 新しいフロー**からGitLab UIを通じて作成されます。コンポーネント、プロンプト、ルーティング、実行フローを指定するYAML設定を使用してフローを定義します。YAMLスキーマにより、エージェントの動作とオーケストレーションを正確に制御できる洗練されたマルチエージェントワークフローを作成できます。\n\n\n**カスタムフローの主要要素:**\n\n- **コンポーネント**: ワークフロー内のエージェントとステップを定義\n- **プロンプト**: AIモデルの動作と指示を設定\n- **ルーター**: コンポーネント間のフローを制御\n- **ツールセット**: エージェントが使用できるGitLab APIツールを指定\n\n### カスタムフローYAMLの例\n**背景**: この例は、旅行予約プラットフォームの機能実装フローを示しています。デベロッパーが機能要件を含むイシューを作成すると、このフローをトリガーして、要件の分析、コードベースのレビュー、ソリューションの実装、マージリクエストの作成まで、すべて手動介入なしで自動的に実行できます。\nYAML設定は次のとおりです。\n\n```yaml\nversion: \"v1\"\nenvironment: ambient\ncomponents:\n  - name: \"implement_feature\"\n    type: AgentComponent\n    prompt_id: \"implementation_prompt\"\n    inputs:\n      - from: \"context:goal\"\n        as: \"user_goal\"\n      - from: \"context:project_id\"\n        as: \"project_id\"\n    toolset:\n      - \"get_issue\"\n      - \"get_repository_file\"\n      - \"list_repository_tree\"\n      - \"find_files\"\n      - \"blob_search\"\n      - \"create_file\"\n      - \"create_commit\"\n      - \"create_merge_request\"\n      - \"create_issue_note\"\n    ui_log_events:\n      - \"on_agent_final_answer\"\n      - \"on_tool_execution_success\"\n      - \"on_tool_execution_failed\"\n\nprompts:\n  - name: \"Cheapflights Feature Implementation（Cheapflights機能実装）\"\n    prompt_id: \"implementation_prompt\"\n    unit_primitives: []\n    prompt_template:\n      system: |\n        You are an expert full-stack developer specializing in travel booking platforms, specifically Cheapflights（あなたは旅行予約プラットフォーム、特にCheapflightsを専門とするエキスパートフルスタックデベロッパーです）.\n\n        Your task is to（あなたのタスクは以下のとおりです）:\n        1. Extract the issue IID from the goal (look for \"Issue IID: XX\")\n        2. Use get_issue with project_id={{project_id}} and issue_iid to retrieve issue details\n        3. Analyze the requirements for the flight search feature\n        4. Review the existing codebase using list_repository_tree, find_files, and get_repository_file\n        5. Design and implement the solution following Cheapflights best practices\n        6. Create all necessary code files using create_file (call multiple times for multiple files)\n        7. Commit the changes using create_commit\n        8. Create a merge request using create_merge_request\n        9. Post a summary comment to the issue using create_issue_note with the MR link\n\n        1. ゴールからイシューIIDを抽出する(「Issue IID: XX」を探す)\n        2. project_id={{project_id}}とissue_iidを使用してget_issueでイシューの詳細を取得\n        3. フライト検索機能の要件を分析\n        4. list_repository_tree、find_files、get_repository_fileを使用して既存のコードベースをレビュー\n        5. Cheapflightsのベストプラクティスに従ってソリューションを設計・実装\n        6. create_fileを使用して必要なコードファイルをすべて作成(複数ファイルの場合は複数回呼び出し)\n        7. create_commitを使用して変更をコミット\n        8. create_merge_requestを使用してマージリクエストを作成\n        9. create_issue_noteを使用してMRリンク付きの概要コメントをイシューに投稿\n\n        Cheapflights Domain Expertise（Cheapflightsドメインの専門知識）:\n        - Flight search and booking systems (Amadeus, Sabre, Skyscanner APIs)\n        - Fare comparison and pricing strategies\n        - Real-time availability and inventory management\n        - Travel industry UX patterns\n        - Performance optimization for high-traffic flight searches\n\n        - フライト検索・予約システム(Amadeus、Sabre、Skyscanner API)\n        - 運賃比較と価格戦略\n        - リアルタイムの空席状況と在庫管理\n        - 旅行業界のUXパターン\n        - 高トラフィックのフライト検索のためのパフォーマンス最適化\n\n        Code Standards（コーディング基準）:\n        - Clean, maintainable code (TypeScript/JavaScript/Python/React)\n        - Proper state management for React components\n        - RESTful API endpoints with comprehensive error handling\n        - Mobile-first responsive design\n        - Proper timezone handling (use moment-timezone or date-fns-tz)\n        - WCAG 2.1 accessibility compliance\n\n        - クリーンで保守性の高いコード(TypeScript/JavaScript/Python/React)\n        - Reactコンポーネントの適切な状態管理\n        - 包括的なエラーハンドリングを備えたRESTful APIエンドポイント\n        - モバイルファーストのレスポンシブデザイン\n        - 適切なタイムゾーン処理(moment-timezoneまたはdate-fns-tzを使用)\n        - WCAG 2.1アクセシビリティ準拠\n\n        Flight-Specific Best Practices（フライト固有のベストプラクティス）:\n        - Accurate fare calculations (base fare + taxes + fees + surcharges)\n        - Flight duration calculations across timezones\n        - Search filter logic (price range, number of stops, airlines, departure/arrival times)\n        - Sort algorithms (best value, fastest, cheapest)\n        - Handle edge cases: date line crossing, daylight saving time, red-eye flights\n        - Currency amounts use proper decimal handling (avoid floating point errors)\n        - Dates use ISO 8601 format\n        - Flight codes follow IATA standards (3-letter airport codes)\n\n        - 正確な運賃計算(基本運賃 + 税金 + 手数料 + 追加料金)\n        - タイムゾーンをまたぐフライト時間の計算\n        - 検索フィルターロジック(価格帯、経由便数、航空会社、出発/到着時刻)\n        - ソートアルゴリズム(ベストバリュー、最速、最安値)\n        - エッジケースの処理: 日付変更線の通過、サマータイム、深夜便\n        - 通貨金額は適切な小数処理を使用(浮動小数点エラーを回避)\n        - 日付はISO 8601形式を使用\n        - フライトコードはIATA標準に従う(3文字の空港コード)\n\n        Implementation Requirements（実装要件）:\n        - No TODOs or placeholder comments\n        - All functions must be fully implemented\n        - Include proper TypeScript types or Python type hints\n        - Add JSDoc/docstring comments for all functions\n        - Comprehensive error handling and input validation\n        - Basic unit tests for critical functions\n        - Performance considerations for handling large result sets\n\n        - To-Doやプレースホルダーコメントは不可\n        - すべての関数を完全に実装\n        - 適切なTypeScript型またはPython型ヒントを含める\n        - すべての関数にJSDoc/docstringコメントを追加\n        - 包括的なエラーハンドリングと入力検証\n        - 重要な関数の基本的な単体テスト\n        - 大規模な結果セットを処理するためのパフォーマンス考慮\n\n        CRITICAL - Your final comment on the issue MUST include（重要 - イシューへの最終コメントには以下を必ず含める）:\n        - Implementation Summary: Brief description of what was implemented\n        - Files Created/Modified: List of all files with descriptions\n        - Key Features: Bullet points of main functionality\n        - Technical Approach: Brief explanation of architecture/patterns used\n        - Testing Notes: How to test the implementation\n        - Merge Request Link: Direct link to the created MR (format: [View Merge Request](MR_URL))\n\n        - 実装概要: 実装内容の簡潔な説明\n        - 作成/変更されたファイル: すべてのファイルのリストと説明\n        - 主要機能: 主な機能の箇条書き\n        - 技術的アプローチ: アーキテクチャ/パターンの簡潔な説明\n        - テストに関する注意事項: 実装のテスト方法\n        - マージリクエストリンク: 作成されたMRへの直接リンク(形式: [マージリクエストを見る](MR_URL))\n\n        IMPORTANT TOOL USAGE（重要なツールの使用方法）:\n        - Extract the issue IID from the goal first (e.g., \"Issue IID: 12\" means issue_iid=12)\n        - Use get_issue with project_id={{project_id}} and issue_iid=\u003Cextracted_iid>\n        - Create multiple files by calling create_file multiple times (once per file)\n        - Use create_commit to commit all files together with a descriptive commit message\n        - Use create_merge_request to create the MR and capture the MR URL from the response\n        - Use create_issue_note with project_id={{project_id}}, noteable_id=\u003Cissue_iid>, and body=\u003Cyour complete summary with MR link>\n        - Make sure to include the MR link in the comment body so users can easily access it\n\n        - まずゴールからイシューIIDを抽出(例: 「Issue IID: 12」はissue_iid=12を意味する)\n        - project_id={{project_id}}とissue_iid=\u003C抽出したiid>でget_issueを使用\n        - create_fileを複数回呼び出して複数のファイルを作成(ファイルごとに1回)\n        - create_commitを使用して、わかりやすいコミットメッセージですべてのファイルを一緒にコミット\n        - create_merge_requestを使用してMRを作成し、レスポンスからMR URLを取得\n        - project_id={{project_id}}、noteable_id=\u003Cissue_iid>、body=\u003CMRリンクを含む完全な概要>でcreate_issue_noteを使用\n        - ユーザーが簡単にアクセスできるように、コメント本文にMRリンクを必ず含める\n\n      user: |\n        Goal: {{user_goal}}\n        Project ID: {{project_id}}\n\n        Please complete the following steps（以下の手順を完了してください）:\n        1. Extract the issue IID and retrieve full issue details\n        2. Analyze the requirements thoroughly\n        3. Review the existing codebase structure and patterns\n        4. Implement the feature with production-ready code\n        5. Create all necessary files (components, APIs, tests, documentation)\n        6. Commit all changes with a clear commit message\n        7. Create a merge request\n        8. Post a detailed summary comment to the issue including the MR link\n\n        1. イシューIIDを抽出し、イシューの詳細を取得\n        2. 要件を徹底的に分析\n        3. 既存のコードベース構造とパターンをレビュー\n        4. 本番環境対応のコードで機能を実装\n        5. 必要なすべてのファイルを作成(コンポーネント、API、テスト、ドキュメント)\n        6. 明確なコミットメッセージですべての変更をコミット\n        7. マージリクエストを作成\n        8. MRリンクを含む詳細な概要コメントをイシューに投稿\n\n      placeholder: history\n    params:\n      timeout: 300\n\nrouters:\n  - from: \"implement_feature\"\n    to: \"end\"\n\nflow:\n  entry_point: \"implement_feature\"\n```\n**このフローの機能**: このフローは、AIエージェントがイシュー要件の分析、コードベースのレビュー、ドメイン知識に基づく本番環境対応コードの作成、詳細なサマリー付きマージリクエストの作成まで、機能実装を自動で行います。\n\n完全なドキュメントと例については、以下を参照してください。\n\n- [カスタムフロードキュメント](https://docs.gitlab.com/ja-jp/user/duo_agent_platform/flows/custom.html)\n- [フローレジストリフレームワーク（YAMLスキーマ）](https://gitlab.com/gitlab-org/modelops/applied-ml/code-suggestions/ai-assist/-/blob/main/docs/flow_registry/v1.md)\n\n## フローの実行\n\nフローはGitLabプラットフォームコンピュート上で実行されます。イベント(メンション、割り当て、ボタンクリック)によってトリガーされると、セッションが作成され、フローが実行を開始します。\n### 利用可能な環境変数\n\nフローは、トリガーとGitLabオブジェクトに関するコンテキストを提供する環境変数にアクセスできます。\n\n- **`AI_FLOW_CONTEXT`** — MR差分、イシュー説明、コメント、ディスカッションスレッドを含むJSON形式のコンテキスト\n- **`AI_FLOW_INPUT`** — フローをトリガーしたユーザーのプロンプトまたはコメントテキスト\n- **`AI_FLOW_EVENT`** — フローをトリガーしたイベントタイプ(`mention`、`assign`、`assign_reviewer`)\n\nこれらの変数により、フローは何がトリガーしたかを理解し、関連するGitLabデータにアクセスしてタスクを実行できます。\n\n### マルチエージェントフロー\n\nカスタムフローには、順次連携する複数のエージェントコンポーネントを含めることができます。フローのYAML設定は次を定義します。\n\n- **コンポーネント**: 1つ以上のエージェント（AgentComponent）または決定論的ステップ\n- **ルーター**: コンポーネント間のフローを定義(例: コンポーネントAからコンポーネントBから終了へ）\n- **プロンプト**: 各エージェントの動作とモデルを設定\n\nたとえば、コードレビューフローには、セキュリティエージェント、次に品質エージェント、次に承認エージェントがあり、ルーターがそれらを順番に接続します。\n\n### フロー実行の監視\n\nプロジェクトで実行中のフローを表示するには:\n\n1. **自動化** → **セッション**に移動します。\n2. 任意のセッションを選択して詳細を表示します。\n3. **詳細**タブにCI/CDジョブログへのリンクが表示されます。\n\nセッションには、ステップバイステップの進行状況、ツール呼び出し、推論、意思決定プロセスを含む詳細情報が表示されます。\n### フローを使用するタイミング\n- 複雑な複数ステップのタスク\n- バックグラウンド自動化\n- イベント駆動ワークフロー\n- 複数ファイルの変更\n- 時間がかかるタスク\n- 自動レビュー/チェック\n## 次のステップ\nフローの概念、作成方法、エージェントとの使い分けを理解しました。次に、[パート5: AIカタログ](https://about.gitlab.com/ja-jp/blog/ai-catalog-discover-and-share-agents/)で組織全体でエージェントとフローを検索、作成、共有する方法を学びます。AIカタログを活用して、利用可能なフローとエージェントの閲覧、プロジェクトへの追加、独自コンテンツの公開を行います。\n\n## 関連リンク\n\n- [GitLab Duo Agent Platform - フロー](https://docs.gitlab.com/ja-jp/user/duo_agent_platform/flows/)\n- [基本フローのドキュメント](https://docs.gitlab.com/ja-jp/user/duo_agent_platform/flows/foundational_flows/)\n- [カスタムフローのドキュメント](https://docs.gitlab.com/ja-jp/user/duo_agent_platform/flows/custom.html)\n- [フロー実行設定](https://docs.gitlab.com/ja-jp/user/duo_agent_platform/flows/execution.html)\n- [GitLab CI/CD変数ガイド](https://docs.gitlab.com/ja-jp/ci/variables/)\n- [サービスアカウント](https://docs.gitlab.com/ja-jp/user/profile/service_accounts/)\n\n---\n**次へ**: [パート5: AIカタログ](https://about.gitlab.com/ja-jp/blog/ai-catalog-discover-and-share-agents/)\n\n**前へ**: [パート3: エージェントを理解する](https://about.gitlab.com/ja-jp/blog/understanding-agents-foundational-custom-external/)","yml",{},true,"/ja-jp/blog/understanding-flows-multi-agent-workflows",{"noIndex":12,"title":25,"description":24,"ogImage":32},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1752678395/impw8no5tbskr6k2afgu.jpg","ja-jp/blog/understanding-flows-multi-agent-workflows",[35,17,18,19],"aiml","6CJmYlNSJd-0NmsGIIQuU7dvN8H64Q9Ng4j8r4h2yBw",{"data":38},{"logo":39,"freeTrial":44,"sales":49,"login":54,"items":59,"search":367,"minimal":400,"duo":417,"pricingDeployment":426},{"config":40},{"href":41,"dataGaName":42,"dataGaLocation":43},"/ja-jp/","gitlab logo","header",{"text":45,"config":46},"無料トライアルを開始",{"href":47,"dataGaName":48,"dataGaLocation":43},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp&glm_content=default-saas-trial/","free trial",{"text":50,"config":51},"お問い合わせ",{"href":52,"dataGaName":53,"dataGaLocation":43},"/ja-jp/sales/","sales",{"text":55,"config":56},"サインイン",{"href":57,"dataGaName":58,"dataGaLocation":43},"https://gitlab.com/users/sign_in/","sign in",[60,87,183,188,289,349],{"text":61,"config":62,"cards":64},"プラットフォーム",{"dataNavLevelOne":63},"platform",[65,71,79],{"title":61,"description":66,"link":67},"DevSecOpsに特化したインテリジェントオーケストレーションプラットフォーム",{"text":68,"config":69},"プラットフォームを詳しく見る",{"href":70,"dataGaName":63,"dataGaLocation":43},"/ja-jp/platform/",{"title":72,"description":73,"link":74},"GitLab Duo Agent Platform","ソフトウェアライフサイクル全体を支えるエージェント型AI",{"text":75,"config":76},"GitLab Duoのご紹介",{"href":77,"dataGaName":78,"dataGaLocation":43},"/ja-jp/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":80,"description":81,"link":82},"GitLabが選ばれる理由","エンタープライズがGitLabを選ぶ主な理由をご覧ください",{"text":83,"config":84},"詳細はこちら",{"href":85,"dataGaName":86,"dataGaLocation":43},"/ja-jp/why-gitlab/","why gitlab",{"text":88,"left":29,"config":89,"link":91,"lists":95,"footer":165},"製品",{"dataNavLevelOne":90},"solutions",{"text":92,"config":93},"すべてのソリューションを表示",{"href":94,"dataGaName":90,"dataGaLocation":43},"/ja-jp/solutions/",[96,121,143],{"title":97,"description":98,"link":99,"items":104},"自動化","CI/CDと自動化でデプロイを加速",{"config":100},{"icon":101,"href":102,"dataGaName":103,"dataGaLocation":43},"AutomatedCodeAlt","/ja-jp/solutions/delivery-automation/","automated software delivery",[105,109,112,117],{"text":106,"config":107},"CI/CD",{"href":108,"dataGaLocation":43,"dataGaName":106},"/ja-jp/solutions/continuous-integration/",{"text":72,"config":110},{"href":77,"dataGaLocation":43,"dataGaName":111},"gitlab duo agent platform - product menu",{"text":113,"config":114},"ソースコード管理",{"href":115,"dataGaLocation":43,"dataGaName":116},"/ja-jp/solutions/source-code-management/","Source Code Management",{"text":118,"config":119},"自動化されたソフトウェアデリバリー",{"href":102,"dataGaLocation":43,"dataGaName":120},"Automated software delivery",{"title":122,"description":123,"link":124,"items":129},"セキュリティ","セキュリティを犠牲にすることなくコード作成を高速化",{"config":125},{"href":126,"dataGaName":127,"dataGaLocation":43,"icon":128},"/ja-jp/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[130,134,139],{"text":131,"config":132},"Application Security Testing",{"href":126,"dataGaName":133,"dataGaLocation":43},"Application security testing",{"text":135,"config":136},"ソフトウェアサプライチェーンの安全性",{"href":137,"dataGaLocation":43,"dataGaName":138},"/ja-jp/solutions/supply-chain/","Software supply chain security",{"text":140,"config":141},"Software Compliance",{"href":142,"dataGaName":140,"dataGaLocation":43},"/ja-jp/solutions/software-compliance/",{"title":144,"link":145,"items":150},"測定",{"config":146},{"icon":147,"href":148,"dataGaName":149,"dataGaLocation":43},"DigitalTransformation","/ja-jp/solutions/visibility-measurement/","visibility and measurement",[151,155,160],{"text":152,"config":153},"可視性と測定",{"href":148,"dataGaLocation":43,"dataGaName":154},"Visibility and Measurement",{"text":156,"config":157},"バリューストリーム管理",{"href":158,"dataGaLocation":43,"dataGaName":159},"/ja-jp/solutions/value-stream-management/","Value Stream Management",{"text":161,"config":162},"分析とインサイト",{"href":163,"dataGaLocation":43,"dataGaName":164},"/ja-jp/solutions/analytics-and-insights/","Analytics and insights",{"title":166,"items":167},"GitLabが活躍する場所",[168,173,178],{"text":169,"config":170},"Enterprise",{"href":171,"dataGaLocation":43,"dataGaName":172},"/ja-jp/enterprise/","enterprise",{"text":174,"config":175},"スモールビジネス",{"href":176,"dataGaLocation":43,"dataGaName":177},"/ja-jp/small-business/","small business",{"text":179,"config":180},"公共機関",{"href":181,"dataGaLocation":43,"dataGaName":182},"/ja-jp/solutions/public-sector/","public sector",{"text":184,"config":185},"価格",{"href":186,"dataGaName":187,"dataGaLocation":43,"dataNavLevelOne":187},"/ja-jp/pricing/","pricing",{"text":189,"config":190,"link":192,"lists":196,"feature":276},"関連リソース",{"dataNavLevelOne":191},"resources",{"text":193,"config":194},"すべてのリソースを表示",{"href":195,"dataGaName":191,"dataGaLocation":43},"/ja-jp/resources/",[197,230,248],{"title":198,"items":199},"はじめに",[200,205,210,215,220,225],{"text":201,"config":202},"インストール",{"href":203,"dataGaName":204,"dataGaLocation":43},"/ja-jp/install/","install",{"text":206,"config":207},"クイックスタートガイド",{"href":208,"dataGaName":209,"dataGaLocation":43},"/ja-jp/get-started/","quick setup checklists",{"text":211,"config":212},"学ぶ",{"href":213,"dataGaLocation":43,"dataGaName":214},"https://university.gitlab.com/","learn",{"text":216,"config":217},"製品ドキュメント",{"href":218,"dataGaName":219,"dataGaLocation":43},"https://docs.gitlab.com/","product documentation",{"text":221,"config":222},"ベストプラクティスビデオ",{"href":223,"dataGaName":224,"dataGaLocation":43},"/ja-jp/getting-started-videos/","best practice videos",{"text":226,"config":227},"インテグレーション",{"href":228,"dataGaName":229,"dataGaLocation":43},"/ja-jp/integrations/","integrations",{"title":231,"items":232},"検索する",[233,238,243],{"text":234,"config":235},"お客様成功事例",{"href":236,"dataGaName":237,"dataGaLocation":43},"/ja-jp/customers/","customer success stories",{"text":239,"config":240},"ブログ",{"href":241,"dataGaName":242,"dataGaLocation":43},"/ja-jp/blog/","blog",{"text":244,"config":245},"リモート",{"href":246,"dataGaName":247,"dataGaLocation":43},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":249,"items":250},"つなげる",[251,256,261,266,271],{"text":252,"config":253},"GitLabサービス",{"href":254,"dataGaName":255,"dataGaLocation":43},"/ja-jp/services/","services",{"text":257,"config":258},"コミュニティ",{"href":259,"dataGaName":260,"dataGaLocation":43},"/community/","community",{"text":262,"config":263},"フォーラム",{"href":264,"dataGaName":265,"dataGaLocation":43},"https://forum.gitlab.com/","forum",{"text":267,"config":268},"イベント",{"href":269,"dataGaName":270,"dataGaLocation":43},"/events/","events",{"text":272,"config":273},"パートナー",{"href":274,"dataGaName":275,"dataGaLocation":43},"/ja-jp/partners/","partners",{"backgroundColor":277,"textColor":278,"text":279,"image":280,"link":284},"#2f2a6b","#fff","ソフトウェア開発の未来への洞察",{"altText":281,"config":282},"ソースプロモカード",{"src":283},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":285,"config":286},"最新情報を読む",{"href":287,"dataGaName":288,"dataGaLocation":43},"/ja-jp/the-source/","the source",{"text":290,"config":291,"lists":293},"会社情報",{"dataNavLevelOne":292},"company",[294],{"items":295},[296,301,307,309,314,319,324,329,334,339,344],{"text":297,"config":298},"GitLabについて",{"href":299,"dataGaName":300,"dataGaLocation":43},"/ja-jp/company/","about",{"text":302,"config":303,"footerGa":306},"採用情報",{"href":304,"dataGaName":305,"dataGaLocation":43},"/jobs/","jobs",{"dataGaName":305},{"text":267,"config":308},{"href":269,"dataGaName":270,"dataGaLocation":43},{"text":310,"config":311},"経営陣",{"href":312,"dataGaName":313,"dataGaLocation":43},"/company/team/e-group/","leadership",{"text":315,"config":316},"チーム",{"href":317,"dataGaName":318,"dataGaLocation":43},"/company/team/","team",{"text":320,"config":321},"ハンドブック",{"href":322,"dataGaName":323,"dataGaLocation":43},"https://handbook.gitlab.com/","handbook",{"text":325,"config":326},"投資家向け情報",{"href":327,"dataGaName":328,"dataGaLocation":43},"https://ir.gitlab.com/","investor relations",{"text":330,"config":331},"トラストセンター",{"href":332,"dataGaName":333,"dataGaLocation":43},"/ja-jp/security/","trust center",{"text":335,"config":336},"AI Transparency Center",{"href":337,"dataGaName":338,"dataGaLocation":43},"/ja-jp/ai-transparency-center/","ai transparency center",{"text":340,"config":341},"ニュースレター",{"href":342,"dataGaName":343,"dataGaLocation":43},"/company/contact/#contact-forms","newsletter",{"text":345,"config":346},"プレス",{"href":347,"dataGaName":348,"dataGaLocation":43},"/press/","press",{"text":50,"config":350,"lists":351},{"dataNavLevelOne":292},[352],{"items":353},[354,357,362],{"text":50,"config":355},{"href":52,"dataGaName":356,"dataGaLocation":43},"talk to sales",{"text":358,"config":359},"サポートポータル",{"href":360,"dataGaName":361,"dataGaLocation":43},"https://support.gitlab.com","support portal",{"text":363,"config":364},"カスタマーポータル",{"href":365,"dataGaName":366,"dataGaLocation":43},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":368,"login":369,"suggestions":376},"閉じる",{"text":370,"link":371},"リポジトリとプロジェクトを検索するには、次にログインします",{"text":372,"config":373},"GitLab.com",{"href":57,"dataGaName":374,"dataGaLocation":375},"search login","search",{"text":377,"default":378},"提案",[379,381,386,388,392,396],{"text":72,"config":380},{"href":77,"dataGaName":72,"dataGaLocation":375},{"text":382,"config":383},"コード提案（AI）",{"href":384,"dataGaName":385,"dataGaLocation":375},"/ja-jp/solutions/code-suggestions/","Code Suggestions (AI)",{"text":106,"config":387},{"href":108,"dataGaName":106,"dataGaLocation":375},{"text":389,"config":390},"GitLab on AWS",{"href":391,"dataGaName":389,"dataGaLocation":375},"/ja-jp/partners/technology-partners/aws/",{"text":393,"config":394},"GitLab on Google Cloud",{"href":395,"dataGaName":393,"dataGaLocation":375},"/ja-jp/partners/technology-partners/google-cloud-platform/",{"text":397,"config":398},"GitLabを選ぶ理由",{"href":85,"dataGaName":399,"dataGaLocation":375},"Why GitLab?",{"freeTrial":401,"mobileIcon":405,"desktopIcon":410,"secondaryButton":413},{"text":45,"config":402},{"href":403,"dataGaName":48,"dataGaLocation":404},"https://gitlab.com/-/trials/new/","nav",{"altText":406,"config":407},"GitLabアイコン",{"src":408,"dataGaName":409,"dataGaLocation":404},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":406,"config":411},{"src":412,"dataGaName":409,"dataGaLocation":404},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":198,"config":414},{"href":415,"dataGaName":416,"dataGaLocation":404},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp/get-started/","get started",{"freeTrial":418,"mobileIcon":422,"desktopIcon":424},{"text":419,"config":420},"GitLab Duoの詳細について",{"href":77,"dataGaName":421,"dataGaLocation":404},"gitlab duo",{"altText":406,"config":423},{"src":408,"dataGaName":409,"dataGaLocation":404},{"altText":406,"config":425},{"src":412,"dataGaName":409,"dataGaLocation":404},{"freeTrial":427,"mobileIcon":432,"desktopIcon":434},{"text":428,"config":429},"料金ページに戻る",{"href":186,"dataGaName":430,"dataGaLocation":404,"icon":431},"back to pricing","GoBack",{"altText":406,"config":433},{"src":408,"dataGaName":409,"dataGaLocation":404},{"altText":406,"config":435},{"src":412,"dataGaName":409,"dataGaLocation":404},{"title":437,"button":438,"config":443},"エージェント型AIがソフトウェア配信をどのように変革するかをご覧ください",{"text":439,"config":440},"GitLab Transcendを今すぐ視聴",{"href":441,"dataGaName":442,"dataGaLocation":43},"/ja-jp/events/transcend/virtual/","transcend event",{"layout":444,"icon":445,"disabled":29},"release","AiStar",{"data":447},{"text":448,"source":449,"edit":455,"contribute":460,"config":465,"items":470,"minimal":644},"GitはSoftware Freedom Conservancyの商標です。当社は「GitLab」をライセンスに基づいて使用しています",{"text":450,"config":451},"ページのソースを表示",{"href":452,"dataGaName":453,"dataGaLocation":454},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":456,"config":457},"このページを編集",{"href":458,"dataGaName":459,"dataGaLocation":454},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":461,"config":462},"ご協力をお願いします",{"href":463,"dataGaName":464,"dataGaLocation":454},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":466,"facebook":467,"youtube":468,"linkedin":469},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[471,494,548,578,613],{"title":61,"links":472,"subMenu":477},[473],{"text":474,"config":475},"DevSecOpsプラットフォーム",{"href":70,"dataGaName":476,"dataGaLocation":454},"devsecops platform",[478],{"title":184,"links":479},[480,484,489],{"text":481,"config":482},"プランの表示",{"href":186,"dataGaName":483,"dataGaLocation":454},"view plans",{"text":485,"config":486},"Premiumを選ぶ理由",{"href":487,"dataGaName":488,"dataGaLocation":454},"/ja-jp/pricing/premium/","why premium",{"text":490,"config":491},"Ultimateを選ぶ理由",{"href":492,"dataGaName":493,"dataGaLocation":454},"/ja-jp/pricing/ultimate/","why ultimate",{"title":495,"links":496},"ソリューション",[497,502,505,507,512,517,521,524,527,532,534,536,538,543],{"text":498,"config":499},"デジタルトランスフォーメーション",{"href":500,"dataGaName":501,"dataGaLocation":454},"/ja-jp/topics/digital-transformation/","digital transformation",{"text":503,"config":504},"セキュリティとコンプライアンス",{"href":126,"dataGaName":133,"dataGaLocation":454},{"text":118,"config":506},{"href":102,"dataGaName":103,"dataGaLocation":454},{"text":508,"config":509},"アジャイル開発",{"href":510,"dataGaName":511,"dataGaLocation":454},"/ja-jp/solutions/agile-delivery/","agile delivery",{"text":513,"config":514},"クラウドトランスフォーメーション",{"href":515,"dataGaName":516,"dataGaLocation":454},"/ja-jp/topics/cloud-native/","cloud transformation",{"text":518,"config":519},"SCM",{"href":115,"dataGaName":520,"dataGaLocation":454},"source code management",{"text":106,"config":522},{"href":108,"dataGaName":523,"dataGaLocation":454},"continuous integration & delivery",{"text":156,"config":525},{"href":158,"dataGaName":526,"dataGaLocation":454},"value stream management",{"text":528,"config":529},"GitOps",{"href":530,"dataGaName":531,"dataGaLocation":454},"/ja-jp/solutions/gitops/","gitops",{"text":169,"config":533},{"href":171,"dataGaName":172,"dataGaLocation":454},{"text":174,"config":535},{"href":176,"dataGaName":177,"dataGaLocation":454},{"text":179,"config":537},{"href":181,"dataGaName":182,"dataGaLocation":454},{"text":539,"config":540},"教育",{"href":541,"dataGaName":542,"dataGaLocation":454},"/ja-jp/solutions/education/","education",{"text":544,"config":545},"金融サービス",{"href":546,"dataGaName":547,"dataGaLocation":454},"/ja-jp/solutions/finance/","financial services",{"title":189,"links":549},[550,552,554,556,559,561,564,566,568,570,572,574,576],{"text":201,"config":551},{"href":203,"dataGaName":204,"dataGaLocation":454},{"text":206,"config":553},{"href":208,"dataGaName":209,"dataGaLocation":454},{"text":211,"config":555},{"href":213,"dataGaName":214,"dataGaLocation":454},{"text":216,"config":557},{"href":218,"dataGaName":558,"dataGaLocation":454},"docs",{"text":239,"config":560},{"href":241,"dataGaName":242},{"text":562,"config":563},"お客様の成功事例",{"href":236,"dataGaLocation":454},{"text":234,"config":565},{"href":236,"dataGaName":237,"dataGaLocation":454},{"text":244,"config":567},{"href":246,"dataGaName":247,"dataGaLocation":454},{"text":252,"config":569},{"href":254,"dataGaName":255,"dataGaLocation":454},{"text":257,"config":571},{"href":259,"dataGaName":260,"dataGaLocation":454},{"text":262,"config":573},{"href":264,"dataGaName":265,"dataGaLocation":454},{"text":267,"config":575},{"href":269,"dataGaName":270,"dataGaLocation":454},{"text":272,"config":577},{"href":274,"dataGaName":275,"dataGaLocation":454},{"title":579,"links":580},"Company",[581,583,585,587,589,591,593,597,602,604,606,608],{"text":297,"config":582},{"href":299,"dataGaName":292,"dataGaLocation":454},{"text":302,"config":584},{"href":304,"dataGaName":305,"dataGaLocation":454},{"text":310,"config":586},{"href":312,"dataGaName":313,"dataGaLocation":454},{"text":315,"config":588},{"href":317,"dataGaName":318,"dataGaLocation":454},{"text":320,"config":590},{"href":322,"dataGaName":323,"dataGaLocation":454},{"text":325,"config":592},{"href":327,"dataGaName":328,"dataGaLocation":454},{"text":594,"config":595},"Sustainability",{"href":596,"dataGaName":594,"dataGaLocation":454},"/sustainability/",{"text":598,"config":599},"ダイバーシティ、インクルージョン、ビロンギング（DIB）",{"href":600,"dataGaName":601,"dataGaLocation":454},"/ja-jp/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":330,"config":603},{"href":332,"dataGaName":333,"dataGaLocation":454},{"text":340,"config":605},{"href":342,"dataGaName":343,"dataGaLocation":454},{"text":345,"config":607},{"href":347,"dataGaName":348,"dataGaLocation":454},{"text":609,"config":610},"現代奴隷制の透明性に関する声明",{"href":611,"dataGaName":612,"dataGaLocation":454},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":50,"links":614},[615,617,622,624,629,634,639],{"text":50,"config":616},{"href":52,"dataGaName":53,"dataGaLocation":454},{"text":618,"config":619},"サポートを受ける",{"href":620,"dataGaName":621,"dataGaLocation":454},"https://support.gitlab.com/hc/en-us/articles/11626483177756-GitLab-Support","get help",{"text":363,"config":623},{"href":365,"dataGaName":366,"dataGaLocation":454},{"text":625,"config":626},"ステータス",{"href":627,"dataGaName":628,"dataGaLocation":454},"https://status.gitlab.com/","status",{"text":630,"config":631},"利用規約",{"href":632,"dataGaName":633,"dataGaLocation":454},"/terms/","terms of use",{"text":635,"config":636},"プライバシーに関する声明",{"href":637,"dataGaName":638,"dataGaLocation":454},"/ja-jp/privacy/","privacy statement",{"text":640,"config":641},"Cookieの設定",{"dataGaName":642,"dataGaLocation":454,"id":643,"isOneTrustButton":29},"cookie preferences","ot-sdk-btn",{"items":645},[646,648,650],{"text":630,"config":647},{"href":632,"dataGaName":633,"dataGaLocation":454},{"text":635,"config":649},{"href":637,"dataGaName":638,"dataGaLocation":454},{"text":640,"config":651},{"dataGaName":642,"dataGaLocation":454,"id":643,"isOneTrustButton":29},[653],{"id":654,"title":23,"body":8,"config":655,"content":657,"description":8,"extension":27,"meta":661,"navigation":29,"path":662,"seo":663,"stem":664,"__hash__":665},"blogAuthors/en-us/blog/authors/itzik-gan-baruch.yml",{"template":656},"BlogAuthor",{"name":23,"config":658},{"headshot":659,"ctfId":660},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749658921/Blog/Author%20Headshots/iganbaruch-headshot.jpg","iganbaruch",{},"/en-us/blog/authors/itzik-gan-baruch",{},"en-us/blog/authors/itzik-gan-baruch","bz9VMiTQ1ixvnoxUFk0jiUcnLG3oQsymgXNCqyRqfsk",[667,680,694],{"content":668,"config":678},{"heroImage":669,"body":670,"authors":671,"updatedDate":673,"date":674,"title":675,"tags":676,"description":677,"category":9},"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の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 setup tour](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![Redirect to MCP Atlassian website](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772643461/z5acqjgguh0damnnde9g.png \"MCPのAtlassianウェブサイトへのリダイレクト\")\n\n\u003Cbr>\u003C/br>\n\n![Approve access](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772643461/rwowamm8nsubhpixtn3i.png \"アクセスの承認\")\n\n\u003Cbr>\u003C/br>\n\n![Select your JIRA instance and approve](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772643461/chuzqd0jeptfwvoj7wjr.png \"JIRAインスタンスを選択して承認\")\n\n\u003Cbr>\u003C/br>\n\n![Success!](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 servers dashboard and status](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772643462/mmvdfchucacsydivowvn.png \"MCPサーバーのダッシュボードとステータス\")\n\n\u003Cbr>\u003C/br>\n\n![Server details and permissions](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772643462/tcocgdvovp2dl42pvfn8.png \"サーバーの詳細と権限\")\n\n\u003Cbr>\u003C/br>\n\n\n![MCP Server logs](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* [GitLab Duo Agent Platformが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/)",[672],"Albert Rabassa","2026-03-10","2026-03-05","GitLab Duo Agent Platformを拡張する：MCPであらゆるツールを接続",[17,19],"MCPを使用して外部ツールをGitLab Duo Agent Platformに接続する方法を解説します。3つの実践的なワークフローデモを含むステップバイステップのセットアップガイドです。",{"featured":12,"template":13,"slug":679},"extend-gitlab-duo-agent-platform-connect-any-tool-with-mcp",{"content":681,"config":692},{"heroImage":682,"body":683,"authors":684,"updatedDate":686,"date":687,"title":688,"tags":689,"description":691,"category":9},"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まずはチームの最も緊急な課題に対応する「初級」タグのプロンプトから始めましょう。チームが自信をつけるにつれ、より高度なワークフローを実現する中級・上級のプロンプトへと探求の幅を広げてください。目標は単に速いコーディングではなく、計画から本番まで、より速く、より安全で、より高品質なソフトウェア提供の実現です。",[685],"Chandler Gibbons","2026-03-13","2026-03-04","チームのソフトウェア提供を加速する10のAIプロンプト",[16,690],"DevOps platform","ソフトウェアライフサイクル全体をカバーするすぐに使えるAIプロンプトで、レビューの滞留、セキュリティの遅延、調整の手間を解消します。",{"featured":12,"template":13,"slug":693},"10-ai-prompts-to-speed-your-teams-software-delivery",{"content":695,"config":705},{"heroImage":696,"body":697,"authors":698,"updatedDate":673,"date":700,"title":701,"tags":702,"description":704,"category":9},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772195014/ooezwusxjl1f7ijfmbvj.png","Anthropicは先ごろ、脆弱性の検出と修正案の提示を行うAIシステム「Claude Code Security」を発表しました。投資家がAIによる従来のAppSecツールの代替可能性に疑問を持ち始めたことで市場はすぐに反応し、セキュリティ関連銘柄が下落しました。多くの人の頭にある問いは同じです。AIがコードを記述してセキュリティを担保できるなら、アプリケーションセキュリティは時代遅れになるのか、という問いです。\n\nセキュリティがコードのスキャンのみを意味するなら、答えはイエスかもしれません。しかし、エンタープライズセキュリティは検出だけを目的としたものではありません。\n\n組織が問うているのは、AIが脆弱性を発見できるかどうかではありません。はるかに難しい3つの問いがあります。\n\n* リリースしようとしているものは安全か  \n* 環境が変化し、依存関係、サードパーティサービス、ツール、インフラが絶えず移り変わる中で、リスク体制は変化していないか  \n* AIやサードパーティのソースによって構成される割合が増え、依然として説明責任を負うコードベースをどのようにガバナンスするか\n\nこれらの問いにはプラットフォームとしての答えが必要です。検出はリスクを可視化しますが、何をすべきかを決めるのはガバナンスです。\n\n[GitLab](https://about.gitlab.com/ja-jp/)は、ソフトウェアライフサイクルをエンドツーエンドでガバナンスするために構築されたオーケストレーションレイヤーです。AIを活用した開発スピードに対応するために必要な、ポリシー適用、可視性、監査証跡をチームに提供します。\n\n## AIを信頼するにはリスクのガバナンスが必要\n\nAIシステムは脆弱性の特定と修正提案の能力を急速に向上させています。これは重要かつ歓迎すべき進歩ですが、分析は説明責任とは異なります。\n\nAIは単独で会社のポリシーを適用したり、許容リスクを定義したりすることはできません。エージェントが運用される境界、ポリシー、ガードレールを設定するのは人間です。職務の分離を確立し、監査証跡を確保し、何千ものリポジトリとチームにわたって一貫したコントロールを維持するのも人間の役割です。エージェントへの信頼は自律性だけから生まれるのではなく、人間が設定した明確に定義されたガバナンスから生まれます。\n\nソフトウェアがエージェント型AIシステムによってますます記述・変更される[エージェント型AIの世界](https://about.gitlab.com/ja-jp/topics/agentic-ai/)では、ガバナンスの重要性は低下するどころか、むしろ高まります。組織がAIに与える自律性が高まれば高まるほど、ガバナンスはより強固でなければなりません。\n\nガバナンスは摩擦ではありません。AIを活用した開発を大規模に信頼できるものにするための基盤です。\n\n## LLMはコードを見るが、プラットフォームはコンテキストを見る\n\n大規模言語モデル（[LLM](https://about.gitlab.com/blog/what-is-a-large-language-model-llm/)）はコードを単体で評価します。一方、エンタープライズのアプリケーションセキュリティプラットフォームはコンテキストを理解します。リスクの判断はコンテキストに依存するため、この違いは重要です。\n\n* 変更を加えたのは誰か  \n* そのアプリケーションはビジネスにとってどれほど重要か  \n* インフラや依存関係とどのように連携しているか  \n* その脆弱性は本番環境で実際に到達可能なコードに存在するのか、それとも一度も実行されない依存関係に埋もれているのか  \n* アプリケーションの実行方法、API、その周辺環境を踏まえると、本番環境で実際に悪用可能か\n\nセキュリティの判断はこのコンテキストに基づきます。コンテキストがなければ、検出はノイズの多いアラートを生み出し、リスクを低減するどころか開発を遅延させます。コンテキストがあれば、組織はトリアージを迅速に行い、リスクを効果的に管理できます。ソフトウェアが変化し続ける中でコンテキストも絶えず変化するため、ガバナンスは一度きりの判断では済みません。\n\n## 静的スキャンは動的リスクに追いつかない\n\nソフトウェアのリスクは動的です。依存関係は変わり、環境は変化し、システムはいかなる単一の分析でも完全には予測できない方法で相互作用します。ある時点でのクリーンなスキャンが、リリース時の安全性を保証するわけではありません。\n\nエンタープライズセキュリティが依拠するのは継続的な保証です。ソフトウェアのビルド、テスト、デプロイの過程でリスクを評価する、開発ワークフローに直接組み込まれたコントロールが必要です。\n\n検出は洞察を提供します。ガバナンスは信頼を提供します。そして、組織が大規模に安全にリリースできるようにするのが、継続的なガバナンスです。\n\n## エージェント型AIの未来をガバナンスする\n\nAIはソフトウェアの作り方を根本から変えつつあります。もはや問いはチームがAIを活用するかどうかではなく、いかに安全にスケールさせるかです。\n\n今日のソフトウェアは記述されるのと同じくらい組み立てられています。AIが生成したコード、オープンソースライブラリ、何千ものプロジェクトにまたがるサードパーティの依存関係から構成されているのです。それらすべてのソースにわたってリリースするものをガバナンスすることは、アプリケーションセキュリティの中で最も困難かつ重大な部分であり、いかなる開発者向けツールも対処するように設計されていない部分です。\n\nインテリジェントなオーケストレーションプラットフォームとして、GitLabはこの問題に対処するために構築されています。GitLab Ultimateは、ソフトウェアの計画、ビルド、リリースが行われるワークフローに、ガバナンス、ポリシー適用、セキュリティスキャン、監査証跡を直接組み込んでいます。これにより、セキュリティチームはAIのスピードに合わせてガバナンスを実現できます。\n\nAIは開発を劇的に加速させるでしょう。AIから最大の恩恵を受ける組織は、最も優秀なアシスタントを持つ組織ではなく、強固なガバナンスを通じて信頼を構築した組織です。\n\n> GitLabが組織による[AIが生成したコードのガバナンスと安全なリリース](https://about.gitlab.com/ja-jp/solutions/software-compliance/?utm_medium=blog&utm_campaign=eg_global_x_x_security_en_)をどのように支援しているかについては、[今すぐチームにお問い合わせください](https://about.gitlab.com/ja-jp/sales/?utm_medium=blog&utm_campaign=eg_global_x_x_security_en_)\n\n\n ## 関連記事\n\n - [DevOpsとAIを統合してセキュリティを強化する](https://about.gitlab.com/ja-jp/topics/devops/ai-enhanced-security/)\n - [セキュリティリーダーのためのGitLab AIセキュリティフレームワーク](https://about.gitlab.com/blog/the-gitlab-ai-security-framework-for-security-leaders/)\n - [コンポジットIDでGitLabのAIセキュリティを強化する](https://about.gitlab.com/blog/improve-ai-security-in-gitlab-with-composite-identities/)",[699],"Omer Azaria","2026-02-27","AIは脆弱性を検出できる—では、誰がリスクに責任を持つのか？",[16,703],"security","AIを活用した脆弱性検出は急速に進化していますが、ポリシーの適用、ガバナンス、サプライチェーンセキュリティという難題には、包括的なプラットフォームが必要です。",{"featured":29,"template":13,"slug":706},"ai-can-detect-vulnerabilities-but-who-governs-risk",{"promotions":708},[709,722,734],{"id":710,"categories":711,"header":712,"text":713,"button":714,"image":719},"ai-modernization",[9],"Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":715,"config":716},"Get your AI maturity score",{"href":717,"dataGaName":718,"dataGaLocation":242},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":720},{"src":721},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":723,"categories":724,"header":726,"text":713,"button":727,"image":731},"devops-modernization",[17,725],"devsecops","Are you just managing tools or shipping innovation?",{"text":728,"config":729},"Get your DevOps maturity score",{"href":730,"dataGaName":718,"dataGaLocation":242},"/assessments/devops-modernization-assessment/",{"config":732},{"src":733},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":735,"categories":736,"header":737,"text":713,"button":738,"image":742},"security-modernization",[703],"Are you trading speed for security?",{"text":739,"config":740},"Get your security maturity score",{"href":741,"dataGaName":718,"dataGaLocation":242},"/assessments/security-modernization-assessment/",{"config":743},{"src":744},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"header":746,"blurb":747,"button":748,"secondaryButton":752},"今すぐ開発をスピードアップ","DevSecOpsに特化したインテリジェントオーケストレーションプラットフォームで実現できることをご確認ください。\n",{"text":45,"config":749},{"href":750,"dataGaName":48,"dataGaLocation":751},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/ja-jp/","feature",{"text":50,"config":753},{"href":52,"dataGaName":53,"dataGaLocation":751},1773871260549]