[{"data":1,"prerenderedAt":817},["ShallowReactive",2],{"/ja-jp/blog/automating-agile-workflows-with-the-gitlab-triage-gem":3,"navigation-ja-jp":43,"banner-ja-jp":453,"footer-ja-jp":463,"blog-post-authors-ja-jp-GitLab":698,"blog-related-posts-ja-jp-automating-agile-workflows-with-the-gitlab-triage-gem":712,"blog-promotions-ja-jp":755,"next-steps-ja-jp":808},{"id":4,"title":5,"authorSlugs":6,"authors":8,"body":10,"category":11,"categorySlug":11,"config":12,"content":16,"date":20,"description":26,"extension":27,"externalUrl":28,"featured":14,"heroImage":17,"isFeatured":14,"meta":29,"navigation":30,"path":31,"publishedDate":20,"rawbody":32,"seo":33,"slug":13,"stem":37,"tagSlugs":38,"tags":41,"template":15,"updatedDate":19,"__hash__":42},"blogPosts/ja-jp/blog/automating-agile-workflows-with-the-gitlab-triage-gem.yml","gitlab-triage gemを使ったアジャイルワークフローの自動化",[7],"gitlab",[9],"GitLab","*「GitLab入門」シリーズへようこそ。このシリーズでは新たにGitLabを使い始める方向けに、GitLab\nDevSecOpsプラットフォームに慣れ親しむために役立つ内容をお届けします。*\n\n\n今回の記事では、[`gitlab-triage`](https://gitlab.com/gitlab-org/ruby/gems/gitlab-triage)\ngemを取り上げます。この非常に強力なツールを使用すると、アジャイルワークフローを自動化するボットを作成できます。自動化により、手作業を排除して作業効率を向上させましょう。\n\n\n## ワークフローを自動化すべき理由\n\n\nソフトウェア開発では効率性は重要です。イシューやマージリクエストのトリアージなどの繰り返し発生するタスクを自動化できれば、チームの貴重な時間を確保し、一番重要な作業である「素晴らしいソフトウェアの開発」に集中できるようになります。\n\n\n`gitlab-triage`を使用すれば、次のことを実現できます。\n\n\n* **一貫性の確保**：定義済みのルールに基づいて、自動的にラベルを適用し、イシューを自動的に割り当てる  \n\n* **レスポンスタイムの短縮**：新たなイシューやマージリクエストに関するフィードバックを即座に得られる  \n\n* **手作業の削減**：手作業でトリアージや更新を行う必要がなくなる  \n\n* **生産性の向上**：チームが、コーディング作業やイノベーションの創出に集中できるようになる\n\n\n## `gitlab-triage`のご紹介\n\n\n`gitlab-triage`\ngemは、GitLabプロジェクトとやり取りするボットを作成できるRubyのライブラリです。作成したボットを使用すると、次のようなさまざまなアクションの実行を自動化できます。\n\n\n* **ラベル付け**：イシューやマージリクエストを自動的に分類する  \n\n* **コメントの追加**：最新情報やフィードバックの提供、または情報の提供依頼を行う  \n\n* **割り当て**：イシューやマージリクエストを適切なチームメンバーに割り当てる  \n\n* **クローズ**：解決済み、または古くなったイシューやマージリクエストをクローズする  \n\n* **作成**：特定のイベントや条件に基づいて新しいイシューを作成する  \n\n* **ほかにもさまざまなことを行えます！**\n\n\nぜひ[`gitlab-triage`\ngemリポジトリ](https://gitlab.com/gitlab-org/ruby/gems/gitlab-triage)をチェックしてみてください。\n\n\n## トリアージボットのセットアップ\n\n\nでは、最初のトリアージボットをセットアップして動かしてみましょう！\n\n\n1. gemをインストールします。（注：gemコマンドは、プログラミング言語のRubyがインストールされている場合に利用できます）。\n\n\n```bash\ngem install gitlab-triage\n```\n\n\n2. GitLab APIトークンを取得します。\n\n\n* GitLab[プロファイル設定](https://gitlab.com/-/profile/preferences)に移動します。  \n\n* 「**アクセストークン**」に移動します。  \n\n* `api`スコープを指定して、新しいトークンを作成します。  \n\n* **作成したトークンを安全な場所に保存し、このガイドがいつ頃終わるかに基づいて有効期限を設定します。**\n\n\n3. トリアージポリシーを定義します。\n\n\nプロジェクトのルートディレクトリに`.triage-policies.yml`という名前のファイルを作成します。このファイルには、ボットの動作を制御するルールを含めます。以下に簡単な例をご紹介します。\n\n\n```yaml\n---\n\n- name: \"Apply 'WIP' label\"\n  condition:\n    draft: true\n  action:\n    labels:\n      - status::wip\n\n- name: \"Request more information on old issue\"\n  condition:\n   date:\n    attribute: updated_at\n    condition: older_than\n    interval_type: months\n    interval: 12\n  action:\n    comment: |\n      {{author}} This issue has been open for more than 12 months, is this still an issue?\n\n```\n\n\n上記の設定では、2つのポリシーを定義しています。\n\n\n* 1つ目のポリシーは、ドラフトモードにあるすべてのイシューに`status::wip`ラベルを適用します。  \n\n* 2つ目のポリシーは、12か月間更新がないイシューに、その旨のコメントを追加します。\n\n\n4. ボットを実行します。\n\n\n以下のコマンドを使用すると、手動でボットを実行できます。\n\n\n```bash\ngitlab-triage -t \u003Cyour_api_token> -p \u003Cyour_project_id>\n```\n\n\n`\u003Cyour_api_token>`の部分をご自身のGitLab\nAPIトークンに、また`\u003Cyour_project_id>`を[ご自身のGitLabプロジェクトID](https://docs.gitlab.com/ja-jp/user/project/working_with_projects/#access-a-project-by-using-the-project-id)に変更してください。実行前にこれらのアクションの影響を確認したい場合は、`-n`または`--dry-run`を追加すれば、ポリシーをまずはテストできます。\n\n\n## GitLab CI/CDによる自動化\n\n\nトリアージボットの実行を自動化するには、[GitLab\nCI/CD](https://about.gitlab.com/blog/ultimate-guide-to-ci-cd-fundamentals-to-advanced-implementation/)と統合します。以下は`.gitlab-ci.yml`の設定例です。\n\n\n```yaml\ntriage:\n  script:\n    - gem install gitlab-triage\n    - gitlab-triage -t $GITLAB_TOKEN -p $CI_PROJECT_ID\n  only:\n    - schedules\n\n```\n\n\n上記の設定では、「triage」という名前のジョブを定義しています。このジョブは、`gitlab-triage`\ngemをインストールし、`$GITLAB_TOKEN`（定義済みの[CI/CD変数](https://docs.gitlab.com/ja-jp/ci/variables/)）変数と`$CI_PROJECT_ID`変数を使用してボットを実行します。`only:\nschedules`によって、ジョブが必ずスケジュールに従って実行されることを保証します。\n\n\n[スケジュール](https://docs.gitlab.com/ja-jp/ci/pipelines/schedules/)を設定するには、プロジェクトの「**CI/CD**」設定にアクセスし、「**スケジュール**」に進みます。新しいスケジュールを作成したら、ボットを実行する頻度（毎日、毎時間など）を設定します。\n\n\n## 高度なトリアージポリシー\n\n\n`gitlab-triage`には、さらに複雑なトリアージポリシーを作成できるように、次のような高度な機能が用意されています。\n\n\n* **正規表現**：正規表現を使用すると、より強力なパターン一致を実現できます。  \n\n* **サマリーポリシー**：関連する複数のイシューを1つのサマリーイシューにまとめます。  \n\n*\n**カスタムアクション**：[Rubyコードブロック](https://gitlab.com/gitlab-org/ruby/gems/gitlab-triage#can-i-customize)を使用してカスタムアクションを定義し、GitLab\nAPI を使ったより複雑な操作を実行できます。\n\n\nGitLabのデベロッパーアドボカシーチームによる、高度なトリアージボットの実際の使用例をご紹介します。全ポリシーは、[こちらのファイル](https://gitlab.com/gitlab-da/projects/devrel-bot/-/blob/master/.triage-policies.yml?ref_type=heads)でご覧いただけます。\n\n\n```yaml\n- name: Issues where DA team member is an assignee outside DA-Meta project\ni.e. DevRel-Influenced\n  conditions:\n    assignee_member:\n      source: group\n      condition: member_of\n      source_id: 1008\n    state: opened\n    ruby: get_project_id != 18 \n    forbidden_labels:\n      - developer-advocacy\n  actions:   \n    labels:\n      - developer-advocacy\n      - DevRel-Influenced\n      - DA-Bot::Skip\n\n```\n\n\nこちらの例では、グループ全体のイシュー（IDが18のプロジェクトに含まれるイシューを除く）から、IDが1008のグループに所属し、`developer-advocacy`というラベルが付いていないメンバーが担当者であるイシューを割り出し、ラベルを適用しています。GitLabデベロッパーアドボカシーチームは、このポリシーを使用して、チームメンバーが担当しているものの、チームのプロジェクトとして割り当てられていないイシューを探し出しています。チームのラベルを追加することで、チーム外からのコントリビュートを特定・追跡しやすくなります。\n\n\n```text\n- name: Missing Due Dates\n  conditions:\n    ruby: missing_due_date\n    state: opened\n    labels:\n      - developer-advocacy\n    forbidden_labels:\n      - DA-Due::N/A\n      - DA-Bot::Skip\n      - DA-Status::FYI\n      - DA-Status::OnHold\n      - CFP\n      - DA-Bot::Triage\n  actions:\n    labels:\n      - DA-Bot-Auto-Due-Date\n    comment: |\n      /due #{get_current_quarter_last_date}\n\n```\n\n\n上記の2つ目の例では、forbidden_labelsに含まれるラベルが適用されておらず、期限を過ぎていて、`developer-advocacy`ラベルが付いているイシューをすべて探し出します。スラッシュコマンドとRubyを使って生成した日付を用いてイシューにコメントすることで、自動的に期限が更新されます。\n\n\nポリシーで使用されているRubyスクリプトは、以下のように別のファイルで定義しています。この機能を使用すれば、フィルターとアクションを柔軟に扱えます。ご覧のように、ポリシーで使用したさまざまなRubyコマンド用に関数を作成しています。\n\n\n```text\nrequire 'json'\n\nrequire 'date'\n\nrequire \"faraday\"\n\nrequire 'dotenv/load'\n\n\nmodule DATriagePlugin\n  def last_comment_at\n    conn = Faraday.new(\n      url: notes_url+\"?sort=desc&order_by=created_at&pagination=keyset&per_page=1\",\n      headers: {'PRIVATE-TOKEN' => ENV.fetch(\"PRIV_KEY\"), 'Content-Type' => 'application/json' }\n    )\n\n    response = conn.get()\n    if response.status == 200\n      jsonData = JSON.parse(response.body)\n      if jsonData.length > 0\n        Date.parse(jsonData[0]['created_at'])\n      else\n        Date.parse(resource[:created_at])\n      end\n    else\n      Date.parse(resource[:created_at])\n    end\n  end\n\n  def notes_url\n    resource[:_links][:notes]\n  end\n\n  def get_project_id\n    resource[:project_id]\n  end\n\n  def get_current_quarter_last_date()\n    yr = Time.now.year\n    case Time.now.month\n    when 2..4\n      lm = 4\n    when 5..7\n      lm = 7\n    when 8..10\n      lm = 10\n    when 11..12\n      lm = 1\n      yr = yr + 1\n    else\n      lm = 1    \n    end\n\n    return Date.new(yr, lm, -1) \n  end\n\n  def one_week_to_due_date\n    if(resource[:due_date] == nil)\n      false\n    else\n      days_to_due = (Date.parse(resource[:due_date]) - Date.today).to_i\n      if(days_to_due > 0 && days_to_due \u003C 7)\n        true\n      else\n        false\n      end\n    end\n  end\n\n  def due_date_past\n    if(resource[:due_date] == nil)\n      false\n    else\n      Date.today > Date.parse(resource[:due_date])\n    end\n  end\n\n  def missing_due_date\n    if(resource[:due_date] == nil)\n      true\n    else\n      false\n    end\n  end\n\nend\n\n\nGitlab::Triage::Resource::Context.include DATriagePlugin\n```\n\nトリアージボットを実行する際は、次のコマンドを使用します。\n\n\n```text\n`gitlab-triage -r ./triage_bot/issue_triage_plugin.rb --debug --token\n$PRIV_KEY --source-id gitlab-com --source groups`  \n```\n\n\n- `-r`：トリアージを実行するための要件ファイルを渡します。この場合は、Ruby関数を渡します。  \n\n- `--debug`：出力の一部としてデバッグ情報を表示します。  \n\n- `--token`：有効なGitLab APIトークンを渡すために使用します。  \n\n- `--source`：検索対象のイシューのソースがグループ内またはプロジェクト内かを指定します。  \n\n- `--source-id`:： 選択したソースタイプのID（この場合はグループ）を受け取ります。\n\n\n\nもう1つの実際の活用例としては、GitLab\n[triage-ops](https://gitlab.com/gitlab-org/quality/triage-ops)プロジェクトが挙げられます。こちらはさらに複雑で、専用のトリアージボットの作成方法を学ぶのに最適です。\n\n\n## ベストプラクティス\n\n\n* **まずは簡単なものから始める**：基本的なポリシーから始めて、必要に応じて徐々に複雑な設定にしていきましょう。 \n\n* **テストは徹底的に行う**：本番環境にデプロイする前に、ステージング環境でポリシーをテストします。  \n\n* **定期的にモニタリングする**：ボットの動作をモニタリングし、想定どおりに機能しているか確認してください。 \n\n* **わかりやすい名前を付ける**：メンテナンスしやすいように、ポリシーには明確でわかりやすい名前を付けましょう。 \n\n*\n**フィルターの適用範囲に注意する**：何千ものイシューが存在する全グループを対象に、イシューを絞り込むのはおすすめしません。トリアージに時間がかかってしまう可能性があるだけでなく、GitLab\nAPIのレート制限によってプロセス自体が失敗に終わることもあります。  \n\n*\n**トリアージの際にはラベルを使って優先順位付けする**：関係ないコメントやイシューがあふれて、ほかのユーザーの邪魔になることのないよう、トリアージを行う際はラベルを使用することをおすすめします。\n\n\n## ワークフローを制御する\n\n\n`gitlab-triage`\ngemを使用すれば、GitLabワークフローを自動化して、新たなレベルの効率化を実現できます。まずはシンプルなトリアージボットの作成から始めて、徐々に高度な機能を使ってみてください。どれだけ多くの時間や作業負荷を削減できるか、きっと驚かれると思います！\n\n\n## GitLab入門シリーズ\n\n\n「GitLab入門」シリーズのその他の記事をぜひご覧ください。\n\n\n* [GitLab入門：ユーザーの管理方法](https://about.gitlab.com/ja-jp/blog/getting-started-with-gitlab-mastering-project-management/)\n* [GitLab入門：プロジェクトをGitLabにインポートする方法](https://about.gitlab.com/ja-jp/blog/getting-started-with-gitlab-how-to-import-your-projects-to-gitlab/)\n* [GitLab入門：プロジェクト管理をマスターする](https://about.gitlab.com/ja-jp/blog/getting-started-with-gitlab-mastering-project-management/)\n* [gitlab-triage gemを使ったアジャイルワークフローの自動化](https://about.gitlab.com/ja-jp/blog/automating-agile-workflows-with-the-gitlab-triage-gem/)\n* [GitLab入門：CI/CDについて理解する](https://about.gitlab.com/ja-jp/blog/getting-started-with-gitlab-understanding-ci-cd/)\n* [GitLab入門：CI/CD変数を使用する](https://about.gitlab.com/ja-jp/blog/getting-started-with-gitlab-working-with-ci-cd-variables/)\n\n","product",{"slug":13,"featured":14,"template":15},"automating-agile-workflows-with-the-gitlab-triage-gem",false,"BlogPost",{"heroImage":17,"body":10,"authors":18,"updatedDate":19,"date":20,"title":5,"tags":21,"description":26,"category":11},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659525/Blog/Hero%20Images/blog-getting-started-with-gitlab-banner-0497-option4-fy25.png",[9],"2025-10-07","2025-03-13",[22,23,11,24,25],"DevSecOps platform","tutorial","agile","CI/CD","「GitLab入門」シリーズでは、イシューやマージリクエストのトリアージなどの繰り返し発生するタスクを自動化して、デベロッパーの貴重な時間を確保する方法をご紹介します。","yml",null,{},true,"/ja-jp/blog/automating-agile-workflows-with-the-gitlab-triage-gem","seo:\n  ogTitle: gitlab-triage gemを使ったアジャイルワークフローの自動化\n  ogImage: https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659525/Blog/Hero%20Images/blog-getting-started-with-gitlab-banner-0497-option4-fy25.png\n  ogDescription: 「GitLab入門」シリーズでは、イシューやマージリクエストのトリアージなどの繰り返し発生するタスクを自動化して、デベロッパーの貴重な時間を確保する方法をご紹介します。\n  ogSiteName: https://about.gitlab.com\n  noIndex: false\n  ogType: article\n  ogUrl: https://about.gitlab.com/blog/automating-agile-workflows-with-the-gitlab-triage-gem\n  title: gitlab-triage gemを使ったアジャイルワークフローの自動化\n  canonicalUrls: https://about.gitlab.com/blog/automating-agile-workflows-with-the-gitlab-triage-gem\n  description: 「GitLab入門」シリーズでは、イシューやマージリクエストのトリアージなどの繰り返し発生するタスクを自動化して、デベロッパーの貴重な時間を確保する方法をご紹介します。\ncontent:\n  heroImage: https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659525/Blog/Hero%20Images/blog-getting-started-with-gitlab-banner-0497-option4-fy25.png\n  body: >+\n    *「GitLab入門」シリーズへようこそ。このシリーズでは新たにGitLabを使い始める方向けに、GitLab\n\n    DevSecOpsプラットフォームに慣れ親しむために役立つ内容をお届けします。*\n\n\n\n    今回の記事では、[`gitlab-triage`](https://gitlab.com/gitlab-org/ruby/gems/gitlab-triage)\n\n    gemを取り上げます。この非常に強力なツールを使用すると、アジャイルワークフローを自動化するボットを作成できます。自動化により、手作業を排除して作業効率を向上させましょう。\n\n\n\n    ## ワークフローを自動化すべき理由\n\n\n\n    ソフトウェア開発では効率性は重要です。イシューやマージリクエストのトリアージなどの繰り返し発生するタスクを自動化できれば、チームの貴重な時間を確保し、一番重要な作業である「素晴らしいソフトウェアの開発」に集中できるようになります。\n\n\n\n    `gitlab-triage`を使用すれば、次のことを実現できます。\n\n\n\n    * **一貫性の確保**：定義済みのルールに基づいて、自動的にラベルを適用し、イシューを自動的に割り当てる  \n\n\n    * **レスポンスタイムの短縮**：新たなイシューやマージリクエストに関するフィードバックを即座に得られる  \n\n\n    * **手作業の削減**：手作業でトリアージや更新を行う必要がなくなる  \n\n\n    * **生産性の向上**：チームが、コーディング作業やイノベーションの創出に集中できるようになる\n\n\n\n    ## `gitlab-triage`のご紹介\n\n\n\n    `gitlab-triage`\n\n    gemは、GitLabプロジェクトとやり取りするボットを作成できるRubyのライブラリです。作成したボットを使用すると、次のようなさまざまなアクションの実行を自動化できます。\n\n\n\n    * **ラベル付け**：イシューやマージリクエストを自動的に分類する  \n\n\n    * **コメントの追加**：最新情報やフィードバックの提供、または情報の提供依頼を行う  \n\n\n    * **割り当て**：イシューやマージリクエストを適切なチームメンバーに割り当てる  \n\n\n    * **クローズ**：解決済み、または古くなったイシューやマージリクエストをクローズする  \n\n\n    * **作成**：特定のイベントや条件に基づいて新しいイシューを作成する  \n\n\n    * **ほかにもさまざまなことを行えます！**\n\n\n\n    ぜひ[`gitlab-triage`\n\n    gemリポジトリ](https://gitlab.com/gitlab-org/ruby/gems/gitlab-triage)をチェックしてみてください。\n\n\n\n    ## トリアージボットのセットアップ\n\n\n\n    では、最初のトリアージボットをセットアップして動かしてみましょう！\n\n\n\n    1. gemをインストールします。（注：gemコマンドは、プログラミング言語のRubyがインストールされている場合に利用できます）。\n\n\n\n    ```bash\n\n    gem install gitlab-triage\n\n    ```\n\n\n\n    2. GitLab APIトークンを取得します。\n\n\n\n    * GitLab[プロファイル設定](https://gitlab.com/-/profile/preferences)に移動します。  \n\n\n    * 「**アクセストークン**」に移動します。  \n\n\n    * `api`スコープを指定して、新しいトークンを作成します。  \n\n\n    * **作成したトークンを安全な場所に保存し、このガイドがいつ頃終わるかに基づいて有効期限を設定します。**\n\n\n\n    3. トリアージポリシーを定義します。\n\n\n\n    プロジェクトのルートディレクトリに`.triage-policies.yml`という名前のファイルを作成します。このファイルには、ボットの動作を制御するルールを含めます。以下に簡単な例をご紹介します。\n\n\n\n    ```yaml\n\n    ---\n\n\n    - name: \"Apply 'WIP' label\"\n      condition:\n        draft: true\n      action:\n        labels:\n          - status::wip\n\n    - name: \"Request more information on old issue\"\n      condition:\n       date:\n        attribute: updated_at\n        condition: older_than\n        interval_type: months\n        interval: 12\n      action:\n        comment: |\n          {{author}} This issue has been open for more than 12 months, is this still an issue?\n\n    ```\n\n\n\n    上記の設定では、2つのポリシーを定義しています。\n\n\n\n    * 1つ目のポリシーは、ドラフトモードにあるすべてのイシューに`status::wip`ラベルを適用します。  \n\n\n    * 2つ目のポリシーは、12か月間更新がないイシューに、その旨のコメントを追加します。\n\n\n\n    4. ボットを実行します。\n\n\n\n    以下のコマンドを使用すると、手動でボットを実行できます。\n\n\n\n    ```bash\n\n    gitlab-triage -t \u003Cyour_api_token> -p \u003Cyour_project_id>\n\n    ```\n\n\n\n    `\u003Cyour_api_token>`の部分をご自身のGitLab\n\n    APIトークンに、また`\u003Cyour_project_id>`を[ご自身のGitLabプロジェクトID](https://docs.gitlab.com/ja-jp/user/project/working_with_projects/#access-a-project-by-using-the-project-id)に変更してください。実行前にこれらのアクションの影響を確認したい場合は、`-n`または`--dry-run`を追加すれば、ポリシーをまずはテストできます。\n\n\n\n    ## GitLab CI/CDによる自動化\n\n\n\n    トリアージボットの実行を自動化するには、[GitLab\n\n    CI/CD](https://about.gitlab.com/blog/ultimate-guide-to-ci-cd-fundamentals-to-advanced-implementation/)と統合します。以下は`.gitlab-ci.yml`の設定例です。\n\n\n\n    ```yaml\n\n    triage:\n      script:\n        - gem install gitlab-triage\n        - gitlab-triage -t $GITLAB_TOKEN -p $CI_PROJECT_ID\n      only:\n        - schedules\n\n    ```\n\n\n\n    上記の設定では、「triage」という名前のジョブを定義しています。このジョブは、`gitlab-triage`\n\n    gemをインストールし、`$GITLAB_TOKEN`（定義済みの[CI/CD変数](https://docs.gitlab.com/ja-jp/ci/variables/)）変数と`$CI_PROJECT_ID`変数を使用してボットを実行します。`only:\n\n    schedules`によって、ジョブが必ずスケジュールに従って実行されることを保証します。\n\n\n\n    [スケジュール](https://docs.gitlab.com/ja-jp/ci/pipelines/schedules/)を設定するには、プロジェクトの「**CI/CD**」設定にアクセスし、「**スケジュール**」に進みます。新しいスケジュールを作成したら、ボットを実行する頻度（毎日、毎時間など）を設定します。\n\n\n\n    ## 高度なトリアージポリシー\n\n\n\n    `gitlab-triage`には、さらに複雑なトリアージポリシーを作成できるように、次のような高度な機能が用意されています。\n\n\n\n    * **正規表現**：正規表現を使用すると、より強力なパターン一致を実現できます。  \n\n\n    * **サマリーポリシー**：関連する複数のイシューを1つのサマリーイシューにまとめます。  \n\n\n    *\n\n    **カスタムアクション**：[Rubyコードブロック](https://gitlab.com/gitlab-org/ruby/gems/gitlab-triage#can-i-customize)を使用してカスタムアクションを定義し、GitLab\n\n    API を使ったより複雑な操作を実行できます。\n\n\n\n    GitLabのデベロッパーアドボカシーチームによる、高度なトリアージボットの実際の使用例をご紹介します。全ポリシーは、[こちらのファイル](https://gitlab.com/gitlab-da/projects/devrel-bot/-/blob/master/.triage-policies.yml?ref_type=heads)でご覧いただけます。\n\n\n\n    ```yaml\n\n    - name: Issues where DA team member is an assignee outside DA-Meta project\n\n    i.e. DevRel-Influenced\n      conditions:\n        assignee_member:\n          source: group\n          condition: member_of\n          source_id: 1008\n        state: opened\n        ruby: get_project_id != 18 \n        forbidden_labels:\n          - developer-advocacy\n      actions:   \n        labels:\n          - developer-advocacy\n          - DevRel-Influenced\n          - DA-Bot::Skip\n\n    ```\n\n\n\n    こちらの例では、グループ全体のイシュー（IDが18のプロジェクトに含まれるイシューを除く）から、IDが1008のグループに所属し、`developer-advocacy`というラベルが付いていないメンバーが担当者であるイシューを割り出し、ラベルを適用しています。GitLabデベロッパーアドボカシーチームは、このポリシーを使用して、チームメンバーが担当しているものの、チームのプロジェクトとして割り当てられていないイシューを探し出しています。チームのラベルを追加することで、チーム外からのコントリビュートを特定・追跡しやすくなります。\n\n\n\n    ```text\n\n    - name: Missing Due Dates\n      conditions:\n        ruby: missing_due_date\n        state: opened\n        labels:\n          - developer-advocacy\n        forbidden_labels:\n          - DA-Due::N/A\n          - DA-Bot::Skip\n          - DA-Status::FYI\n          - DA-Status::OnHold\n          - CFP\n          - DA-Bot::Triage\n      actions:\n        labels:\n          - DA-Bot-Auto-Due-Date\n        comment: |\n          /due #{get_current_quarter_last_date}\n\n    ```\n\n\n\n    上記の2つ目の例では、forbidden_labelsに含まれるラベルが適用されておらず、期限を過ぎていて、`developer-advocacy`ラベルが付いているイシューをすべて探し出します。スラッシュコマンドとRubyを使って生成した日付を用いてイシューにコメントすることで、自動的に期限が更新されます。\n\n\n\n    ポリシーで使用されているRubyスクリプトは、以下のように別のファイルで定義しています。この機能を使用すれば、フィルターとアクションを柔軟に扱えます。ご覧のように、ポリシーで使用したさまざまなRubyコマンド用に関数を作成しています。\n\n\n\n    ```text\n\n    require 'json'\n\n\n    require 'date'\n\n\n    require \"faraday\"\n\n\n    require 'dotenv/load'\n\n\n\n    module DATriagePlugin\n      def last_comment_at\n        conn = Faraday.new(\n          url: notes_url+\"?sort=desc&order_by=created_at&pagination=keyset&per_page=1\",\n          headers: {'PRIVATE-TOKEN' => ENV.fetch(\"PRIV_KEY\"), 'Content-Type' => 'application/json' }\n        )\n\n        response = conn.get()\n        if response.status == 200\n          jsonData = JSON.parse(response.body)\n          if jsonData.length > 0\n            Date.parse(jsonData[0]['created_at'])\n          else\n            Date.parse(resource[:created_at])\n          end\n        else\n          Date.parse(resource[:created_at])\n        end\n      end\n\n      def notes_url\n        resource[:_links][:notes]\n      end\n\n      def get_project_id\n        resource[:project_id]\n      end\n\n      def get_current_quarter_last_date()\n        yr = Time.now.year\n        case Time.now.month\n        when 2..4\n          lm = 4\n        when 5..7\n          lm = 7\n        when 8..10\n          lm = 10\n        when 11..12\n          lm = 1\n          yr = yr + 1\n        else\n          lm = 1    \n        end\n\n        return Date.new(yr, lm, -1) \n      end\n\n      def one_week_to_due_date\n        if(resource[:due_date] == nil)\n          false\n        else\n          days_to_due = (Date.parse(resource[:due_date]) - Date.today).to_i\n          if(days_to_due > 0 && days_to_due \u003C 7)\n            true\n          else\n            false\n          end\n        end\n      end\n\n      def due_date_past\n        if(resource[:due_date] == nil)\n          false\n        else\n          Date.today > Date.parse(resource[:due_date])\n        end\n      end\n\n      def missing_due_date\n        if(resource[:due_date] == nil)\n          true\n        else\n          false\n        end\n      end\n\n    end\n\n\n\n    Gitlab::Triage::Resource::Context.include DATriagePlugin\n\n    ```\n\n\n    トリアージボットを実行する際は、次のコマンドを使用します。\n\n\n\n    ```text\n\n    `gitlab-triage -r ./triage_bot/issue_triage_plugin.rb --debug --token\n\n    $PRIV_KEY --source-id gitlab-com --source groups`  \n\n    ```\n\n\n\n    - `-r`：トリアージを実行するための要件ファイルを渡します。この場合は、Ruby関数を渡します。  \n\n\n    - `--debug`：出力の一部としてデバッグ情報を表示します。  \n\n\n    - `--token`：有効なGitLab APIトークンを渡すために使用します。  \n\n\n    - `--source`：検索対象のイシューのソースがグループ内またはプロジェクト内かを指定します。  \n\n\n    - `--source-id`:： 選択したソースタイプのID（この場合はグループ）を受け取ります。\n\n\n\n\n    もう1つの実際の活用例としては、GitLab\n\n    [triage-ops](https://gitlab.com/gitlab-org/quality/triage-ops)プロジェクトが挙げられます。こちらはさらに複雑で、専用のトリアージボットの作成方法を学ぶのに最適です。\n\n\n\n    ## ベストプラクティス\n\n\n\n    * **まずは簡単なものから始める**：基本的なポリシーから始めて、必要に応じて徐々に複雑な設定にしていきましょう。 \n\n\n    * **テストは徹底的に行う**：本番環境にデプロイする前に、ステージング環境でポリシーをテストします。  \n\n\n    * **定期的にモニタリングする**：ボットの動作をモニタリングし、想定どおりに機能しているか確認してください。 \n\n\n    * **わかりやすい名前を付ける**：メンテナンスしやすいように、ポリシーには明確でわかりやすい名前を付けましょう。 \n\n\n    *\n\n    **フィルターの適用範囲に注意する**：何千ものイシューが存在する全グループを対象に、イシューを絞り込むのはおすすめしません。トリアージに時間がかかってしまう可能性があるだけでなく、GitLab\n\n    APIのレート制限によってプロセス自体が失敗に終わることもあります。  \n\n\n    *\n\n    **トリアージの際にはラベルを使って優先順位付けする**：関係ないコメントやイシューがあふれて、ほかのユーザーの邪魔になることのないよう、トリアージを行う際はラベルを使用することをおすすめします。\n\n\n\n    ## ワークフローを制御する\n\n\n\n    `gitlab-triage`\n\n    gemを使用すれば、GitLabワークフローを自動化して、新たなレベルの効率化を実現できます。まずはシンプルなトリアージボットの作成から始めて、徐々に高度な機能を使ってみてください。どれだけ多くの時間や作業負荷を削減できるか、きっと驚かれると思います！\n\n\n\n    ## GitLab入門シリーズ\n\n\n\n    「GitLab入門」シリーズのその他の記事をぜひご覧ください。\n\n\n\n    *\n    [GitLab入門：ユーザーの管理方法](https://about.gitlab.com/ja-jp/blog/getting-started-with-gitlab-mastering-project-management/)\n\n    *\n    [GitLab入門：プロジェクトをGitLabにインポートする方法](https://about.gitlab.com/ja-jp/blog/getting-started-with-gitlab-how-to-import-your-projects-to-gitlab/)\n\n    *\n    [GitLab入門：プロジェクト管理をマスターする](https://about.gitlab.com/ja-jp/blog/getting-started-with-gitlab-mastering-project-management/)\n\n    * [gitlab-triage\n    gemを使ったアジャイルワークフローの自動化](https://about.gitlab.com/ja-jp/blog/automating-agile-workflows-with-the-gitlab-triage-gem/)\n\n    *\n    [GitLab入門：CI/CDについて理解する](https://about.gitlab.com/ja-jp/blog/getting-started-with-gitlab-understanding-ci-cd/)\n\n    *\n    [GitLab入門：CI/CD変数を使用する](https://about.gitlab.com/ja-jp/blog/getting-started-with-gitlab-working-with-ci-cd-variables/)\n\n  authors:\n    - GitLab\n  updatedDate: 2025-10-07\n  date: 2025-03-13\n  title: gitlab-triage gemを使ったアジャイルワークフローの自動化\n  tags:\n    - DevSecOps platform\n    - tutorial\n    - product\n    - agile\n    - CI/CD\n  description: 「GitLab入門」シリーズでは、イシューやマージリクエストのトリアージなどの繰り返し発生するタスクを自動化して、デベロッパーの貴重な時間を確保する方法をご紹介します。\n  category: product\nconfig:\n  slug: automating-agile-workflows-with-the-gitlab-triage-gem\n  featured: false\n  template: BlogPost\n",{"ogTitle":5,"ogImage":17,"ogDescription":26,"ogSiteName":34,"noIndex":14,"ogType":35,"ogUrl":36,"title":5,"canonicalUrls":36,"description":26},"https://about.gitlab.com","article","https://about.gitlab.com/blog/automating-agile-workflows-with-the-gitlab-triage-gem","ja-jp/blog/automating-agile-workflows-with-the-gitlab-triage-gem",[39,23,11,24,40],"devsecops-platform","cicd",[22,23,11,24,25],"ndXbHwadhEl6vR2YPwlYwNhyZX7v4GRjtLvBfJOJJ-k",{"data":44},{"logo":45,"freeTrial":50,"sales":55,"login":60,"items":65,"search":373,"minimal":406,"duo":423,"switchNav":432,"pricingDeployment":443},{"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,189,194,295,355],{"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":30,"config":95,"link":97,"lists":101,"footer":171},"製品",{"dataNavLevelOne":96},"solutions",{"text":98,"config":99},"すべてのソリューションを表示",{"href":100,"dataGaName":96,"dataGaLocation":49},"/ja-jp/solutions/",[102,126,149],{"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,114,117,122],{"text":25,"config":112},{"href":113,"dataGaLocation":49,"dataGaName":25},"/ja-jp/solutions/continuous-integration/",{"text":78,"config":115},{"href":83,"dataGaLocation":49,"dataGaName":116},"gitlab duo agent platform - product menu",{"text":118,"config":119},"ソースコード管理",{"href":120,"dataGaLocation":49,"dataGaName":121},"/ja-jp/solutions/source-code-management/","Source Code Management",{"text":123,"config":124},"自動化されたソフトウェアデリバリー",{"href":108,"dataGaLocation":49,"dataGaName":125},"Automated software delivery",{"title":127,"description":128,"link":129,"items":134},"セキュリティ","セキュリティを犠牲にすることなくコード作成を高速化",{"config":130},{"href":131,"dataGaName":132,"dataGaLocation":49,"icon":133},"/ja-jp/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[135,139,144],{"text":136,"config":137},"アプリケーションセキュリティテスト",{"href":131,"dataGaName":138,"dataGaLocation":49},"Application security testing",{"text":140,"config":141},"ソフトウェアサプライチェーンの安全性",{"href":142,"dataGaLocation":49,"dataGaName":143},"/ja-jp/solutions/supply-chain/","Software supply chain security",{"text":145,"config":146},"ソフトウェアコンプライアンス",{"href":147,"dataGaName":148,"dataGaLocation":49},"/ja-jp/solutions/software-compliance/","software compliance",{"title":150,"link":151,"items":156},"測定",{"config":152},{"icon":153,"href":154,"dataGaName":155,"dataGaLocation":49},"DigitalTransformation","/ja-jp/solutions/visibility-measurement/","visibility and measurement",[157,161,166],{"text":158,"config":159},"可視性と測定",{"href":154,"dataGaLocation":49,"dataGaName":160},"Visibility and Measurement",{"text":162,"config":163},"バリューストリーム管理",{"href":164,"dataGaLocation":49,"dataGaName":165},"/ja-jp/solutions/value-stream-management/","Value Stream Management",{"text":167,"config":168},"分析とインサイト",{"href":169,"dataGaLocation":49,"dataGaName":170},"/ja-jp/solutions/analytics-and-insights/","Analytics and insights",{"title":172,"items":173},"GitLabが活躍する場所",[174,179,184],{"text":175,"config":176},"大企業",{"href":177,"dataGaLocation":49,"dataGaName":178},"/ja-jp/enterprise/","enterprise",{"text":180,"config":181},"スモールビジネス",{"href":182,"dataGaLocation":49,"dataGaName":183},"/ja-jp/small-business/","small business",{"text":185,"config":186},"公共部門",{"href":187,"dataGaLocation":49,"dataGaName":188},"/ja-jp/solutions/public-sector/","public sector",{"text":190,"config":191},"価格",{"href":192,"dataGaName":193,"dataGaLocation":49,"dataNavLevelOne":193},"/ja-jp/pricing/","pricing",{"text":195,"config":196,"link":198,"lists":202,"feature":282},"リソース",{"dataNavLevelOne":197},"resources",{"text":199,"config":200},"すべてのリソースを表示",{"href":201,"dataGaName":197,"dataGaLocation":49},"/ja-jp/resources/",[203,236,254],{"title":204,"items":205},"はじめに",[206,211,216,221,226,231],{"text":207,"config":208},"インストール",{"href":209,"dataGaName":210,"dataGaLocation":49},"/ja-jp/install/","install",{"text":212,"config":213},"クイックスタートガイド",{"href":214,"dataGaName":215,"dataGaLocation":49},"/ja-jp/get-started/","quick setup checklists",{"text":217,"config":218},"学ぶ",{"href":219,"dataGaLocation":49,"dataGaName":220},"https://university.gitlab.com/","learn",{"text":222,"config":223},"製品ドキュメント",{"href":224,"dataGaName":225,"dataGaLocation":49},"https://docs.gitlab.com/ja-jp/","product documentation",{"text":227,"config":228},"ベストプラクティスビデオ",{"href":229,"dataGaName":230,"dataGaLocation":49},"/ja-jp/getting-started-videos/","best practice videos",{"text":232,"config":233},"インテグレーション",{"href":234,"dataGaName":235,"dataGaLocation":49},"/ja-jp/integrations/","integrations",{"title":237,"items":238},"検索する",[239,244,249],{"text":240,"config":241},"お客様成功事例",{"href":242,"dataGaName":243,"dataGaLocation":49},"/ja-jp/customers/","customer success stories",{"text":245,"config":246},"ブログ",{"href":247,"dataGaName":248,"dataGaLocation":49},"/ja-jp/blog/","blog",{"text":250,"config":251},"リモート",{"href":252,"dataGaName":253,"dataGaLocation":49},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":255,"items":256},"つなげる",[257,262,267,272,277],{"text":258,"config":259},"GitLabサービス",{"href":260,"dataGaName":261,"dataGaLocation":49},"/ja-jp/services/","services",{"text":263,"config":264},"コミュニティ",{"href":265,"dataGaName":266,"dataGaLocation":49},"/community/","community",{"text":268,"config":269},"フォーラム",{"href":270,"dataGaName":271,"dataGaLocation":49},"https://forum.gitlab.com/","forum",{"text":273,"config":274},"イベント",{"href":275,"dataGaName":276,"dataGaLocation":49},"/events/","events",{"text":278,"config":279},"パートナー",{"href":280,"dataGaName":281,"dataGaLocation":49},"/ja-jp/partners/","partners",{"background":283,"textColor":284,"text":285,"image":286,"link":290},"#2f2a6b","#fff","ソフトウェア開発の未来への洞察",{"altText":287,"config":288},"ソースプロモカード",{"src":289},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":291,"config":292},"最新情報を読む",{"href":293,"dataGaName":294,"dataGaLocation":49},"/ja-jp/the-source/","the source",{"text":296,"config":297,"lists":299},"会社情報",{"dataNavLevelOne":298},"company",[300],{"items":301},[302,307,313,315,320,325,330,335,340,345,350],{"text":303,"config":304},"GitLabについて",{"href":305,"dataGaName":306,"dataGaLocation":49},"/ja-jp/company/","about",{"text":308,"config":309,"footerGa":312},"採用情報",{"href":310,"dataGaName":311,"dataGaLocation":49},"/jobs/","jobs",{"dataGaName":311},{"text":273,"config":314},{"href":275,"dataGaName":276,"dataGaLocation":49},{"text":316,"config":317},"経営陣",{"href":318,"dataGaName":319,"dataGaLocation":49},"/company/team/e-group/","leadership",{"text":321,"config":322},"チーム",{"href":323,"dataGaName":324,"dataGaLocation":49},"/company/team/","team",{"text":326,"config":327},"ハンドブック",{"href":328,"dataGaName":329,"dataGaLocation":49},"https://handbook.gitlab.com/","handbook",{"text":331,"config":332},"投資家向け情報",{"href":333,"dataGaName":334,"dataGaLocation":49},"https://ir.gitlab.com/","investor relations",{"text":336,"config":337},"トラストセンター",{"href":338,"dataGaName":339,"dataGaLocation":49},"/ja-jp/security/","trust center",{"text":341,"config":342},"AI Transparency Center",{"href":343,"dataGaName":344,"dataGaLocation":49},"/ja-jp/ai-transparency-center/","ai transparency center",{"text":346,"config":347},"ニュースレター",{"href":348,"dataGaName":349,"dataGaLocation":49},"/company/contact/#contact-forms","newsletter",{"text":351,"config":352},"プレス",{"href":353,"dataGaName":354,"dataGaLocation":49},"/press/","press",{"text":56,"config":356,"lists":357},{"dataNavLevelOne":298},[358],{"items":359},[360,363,368],{"text":56,"config":361},{"href":58,"dataGaName":362,"dataGaLocation":49},"talk to sales",{"text":364,"config":365},"サポートを受ける",{"href":366,"dataGaName":367,"dataGaLocation":49},"https://support.gitlab.com","support portal",{"text":369,"config":370},"カスタマーポータル",{"href":371,"dataGaName":372,"dataGaLocation":49},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":374,"login":375,"suggestions":382},"閉じる",{"text":376,"link":377},"リポジトリとプロジェクトを検索するには、次にログインします",{"text":378,"config":379},"GitLab.com",{"href":63,"dataGaName":380,"dataGaLocation":381},"search login","search",{"text":383,"default":384},"提案",[385,387,392,394,398,402],{"text":78,"config":386},{"href":83,"dataGaName":78,"dataGaLocation":381},{"text":388,"config":389},"コード提案（AI）",{"href":390,"dataGaName":391,"dataGaLocation":381},"/ja-jp/solutions/code-suggestions/","Code Suggestions (AI)",{"text":25,"config":393},{"href":113,"dataGaName":25,"dataGaLocation":381},{"text":395,"config":396},"GitLab on AWS",{"href":397,"dataGaName":395,"dataGaLocation":381},"/ja-jp/partners/technology-partners/aws/",{"text":399,"config":400},"GitLab on Google Cloud",{"href":401,"dataGaName":399,"dataGaLocation":381},"/ja-jp/partners/technology-partners/google-cloud-platform/",{"text":403,"config":404},"GitLabを選ぶ理由",{"href":91,"dataGaName":405,"dataGaLocation":381},"Why GitLab?",{"freeTrial":407,"mobileIcon":411,"desktopIcon":416,"secondaryButton":419},{"text":51,"config":408},{"href":409,"dataGaName":54,"dataGaLocation":410},"https://gitlab.com/-/trials/new/","nav",{"altText":412,"config":413},"GitLabアイコン",{"src":414,"dataGaName":415,"dataGaLocation":410},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":412,"config":417},{"src":418,"dataGaName":415,"dataGaLocation":410},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":204,"config":420},{"href":421,"dataGaName":422,"dataGaLocation":410},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp/get-started/","get started",{"freeTrial":424,"mobileIcon":428,"desktopIcon":430},{"text":425,"config":426},"GitLab Duoの詳細について",{"href":83,"dataGaName":427,"dataGaLocation":410},"gitlab duo",{"altText":412,"config":429},{"src":414,"dataGaName":415,"dataGaLocation":410},{"altText":412,"config":431},{"src":418,"dataGaName":415,"dataGaLocation":410},{"button":433,"mobileIcon":438,"desktopIcon":440},{"text":434,"config":435},"/switch",{"href":436,"dataGaName":437,"dataGaLocation":410},"#contact","switch",{"altText":412,"config":439},{"src":414,"dataGaName":415,"dataGaLocation":410},{"altText":412,"config":441},{"src":442,"dataGaName":415,"dataGaLocation":410},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":444,"mobileIcon":449,"desktopIcon":451},{"text":445,"config":446},"料金ページに戻る",{"href":192,"dataGaName":447,"dataGaLocation":410,"icon":448},"back to pricing","GoBack",{"altText":412,"config":450},{"src":414,"dataGaName":415,"dataGaLocation":410},{"altText":412,"config":452},{"src":418,"dataGaName":415,"dataGaLocation":410},{"title":454,"button":455,"config":460},"エージェント型AIがソフトウェア配信をどのように変革するかをご覧ください",{"text":456,"config":457},"GitLab Transcendを今すぐ視聴",{"href":458,"dataGaName":459,"dataGaLocation":49},"/ja-jp/events/transcend/virtual/","transcend event",{"layout":461,"icon":462,"disabled":30},"release","AiStar",{"data":464},{"text":465,"source":466,"edit":472,"contribute":477,"config":482,"items":487,"minimal":689},"GitはSoftware Freedom Conservancyの商標です。当社は「GitLab」をライセンスに基づいて使用しています",{"text":467,"config":468},"ページのソースを表示",{"href":469,"dataGaName":470,"dataGaLocation":471},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":473,"config":474},"このページを編集",{"href":475,"dataGaName":476,"dataGaLocation":471},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":478,"config":479},"ご協力をお願いします",{"href":480,"dataGaName":481,"dataGaLocation":471},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":483,"facebook":484,"youtube":485,"linkedin":486},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[488,533,585,628,655],{"title":190,"links":489,"subMenu":504},[490,494,499],{"text":491,"config":492},"プランの表示",{"href":192,"dataGaName":493,"dataGaLocation":471},"view plans",{"text":495,"config":496},"Premiumを選ぶ理由",{"href":497,"dataGaName":498,"dataGaLocation":471},"/ja-jp/pricing/premium/","why premium",{"text":500,"config":501},"Ultimateを選ぶ理由",{"href":502,"dataGaName":503,"dataGaLocation":471},"/ja-jp/pricing/ultimate/","why ultimate",[505],{"title":56,"links":506},[507,509,511,513,518,523,528],{"text":56,"config":508},{"href":58,"dataGaName":59,"dataGaLocation":471},{"text":364,"config":510},{"href":366,"dataGaName":367,"dataGaLocation":471},{"text":369,"config":512},{"href":371,"dataGaName":372,"dataGaLocation":471},{"text":514,"config":515},"ステータス",{"href":516,"dataGaName":517,"dataGaLocation":471},"https://status.gitlab.com/","status",{"text":519,"config":520},"利用規約",{"href":521,"dataGaName":522,"dataGaLocation":471},"/terms/","terms of use",{"text":524,"config":525},"プライバシーに関する声明",{"href":526,"dataGaName":527,"dataGaLocation":471},"/ja-jp/privacy/","privacy statement",{"text":529,"config":530},"Cookie 優先設定",{"dataGaName":531,"dataGaLocation":471,"id":532,"isOneTrustButton":30},"cookie preferences","ot-sdk-btn",{"title":94,"links":534,"subMenu":543},[535,539],{"text":536,"config":537},"DevSecOpsプラットフォーム",{"href":76,"dataGaName":538,"dataGaLocation":471},"devsecops platform",{"text":540,"config":541},"AI支援開発",{"href":83,"dataGaName":542,"dataGaLocation":471},"ai-assisted development",[544],{"title":545,"links":546},"トピック",[547,550,555,560,565,570,575,580],{"text":25,"config":548},{"href":549,"dataGaName":40,"dataGaLocation":471},"/ja-jp/topics/ci-cd/",{"text":551,"config":552},"GitOps",{"href":553,"dataGaName":554,"dataGaLocation":471},"/ja-jp/topics/gitops/","gitops",{"text":556,"config":557},"DevOps",{"href":558,"dataGaName":559,"dataGaLocation":471},"/ja-jp/topics/devops/","devops",{"text":561,"config":562},"バージョン管理",{"href":563,"dataGaName":564,"dataGaLocation":471},"/ja-jp/topics/version-control/","version control",{"text":566,"config":567},"DevSecOps",{"href":568,"dataGaName":569,"dataGaLocation":471},"/ja-jp/topics/devsecops/","devsecops",{"text":571,"config":572},"クラウドネイティブ",{"href":573,"dataGaName":574,"dataGaLocation":471},"/ja-jp/topics/cloud-native/","cloud native",{"text":576,"config":577},"コーディングのためのAI",{"href":578,"dataGaName":579,"dataGaLocation":471},"/ja-jp/topics/devops/ai-for-coding/","ai for coding",{"text":581,"config":582},"エージェント型AI",{"href":583,"dataGaName":584,"dataGaLocation":471},"/ja-jp/topics/agentic-ai/","agentic ai",{"title":586,"links":587},"ソリューション",[588,591,593,598,602,605,608,611,613,615,618,623],{"text":136,"config":589},{"href":131,"dataGaName":590,"dataGaLocation":471},"Application Security Testing",{"text":123,"config":592},{"href":108,"dataGaName":109,"dataGaLocation":471},{"text":594,"config":595},"アジャイル開発",{"href":596,"dataGaName":597,"dataGaLocation":471},"/ja-jp/solutions/agile-delivery/","agile delivery",{"text":599,"config":600},"SCM",{"href":120,"dataGaName":601,"dataGaLocation":471},"source code management",{"text":25,"config":603},{"href":113,"dataGaName":604,"dataGaLocation":471},"continuous integration & delivery",{"text":162,"config":606},{"href":164,"dataGaName":607,"dataGaLocation":471},"value stream management",{"text":551,"config":609},{"href":610,"dataGaName":554,"dataGaLocation":471},"/ja-jp/solutions/gitops/",{"text":175,"config":612},{"href":177,"dataGaName":178,"dataGaLocation":471},{"text":180,"config":614},{"href":182,"dataGaName":183,"dataGaLocation":471},{"text":616,"config":617},"公共機関",{"href":187,"dataGaName":188,"dataGaLocation":471},{"text":619,"config":620},"教育",{"href":621,"dataGaName":622,"dataGaLocation":471},"/ja-jp/solutions/education/","education",{"text":624,"config":625},"金融サービス",{"href":626,"dataGaName":627,"dataGaLocation":471},"/ja-jp/solutions/finance/","financial services",{"title":195,"links":629},[630,632,634,636,639,641,643,645,647,649,651,653],{"text":207,"config":631},{"href":209,"dataGaName":210,"dataGaLocation":471},{"text":212,"config":633},{"href":214,"dataGaName":215,"dataGaLocation":471},{"text":217,"config":635},{"href":219,"dataGaName":220,"dataGaLocation":471},{"text":222,"config":637},{"href":224,"dataGaName":638,"dataGaLocation":471},"docs",{"text":245,"config":640},{"href":247,"dataGaName":248,"dataGaLocation":471},{"text":240,"config":642},{"href":242,"dataGaName":243,"dataGaLocation":471},{"text":250,"config":644},{"href":252,"dataGaName":253,"dataGaLocation":471},{"text":258,"config":646},{"href":260,"dataGaName":261,"dataGaLocation":471},{"text":263,"config":648},{"href":265,"dataGaName":266,"dataGaLocation":471},{"text":268,"config":650},{"href":270,"dataGaName":271,"dataGaLocation":471},{"text":273,"config":652},{"href":275,"dataGaName":276,"dataGaLocation":471},{"text":278,"config":654},{"href":280,"dataGaName":281,"dataGaLocation":471},{"title":296,"links":656},[657,659,661,663,665,667,669,673,678,680,682,684],{"text":303,"config":658},{"href":305,"dataGaName":298,"dataGaLocation":471},{"text":308,"config":660},{"href":310,"dataGaName":311,"dataGaLocation":471},{"text":316,"config":662},{"href":318,"dataGaName":319,"dataGaLocation":471},{"text":321,"config":664},{"href":323,"dataGaName":324,"dataGaLocation":471},{"text":326,"config":666},{"href":328,"dataGaName":329,"dataGaLocation":471},{"text":331,"config":668},{"href":333,"dataGaName":334,"dataGaLocation":471},{"text":670,"config":671},"Sustainability",{"href":672,"dataGaName":670,"dataGaLocation":471},"/sustainability/",{"text":674,"config":675},"ダイバーシティ、インクルージョン、ビロンギング（DIB）",{"href":676,"dataGaName":677,"dataGaLocation":471},"/ja-jp/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":336,"config":679},{"href":338,"dataGaName":339,"dataGaLocation":471},{"text":346,"config":681},{"href":348,"dataGaName":349,"dataGaLocation":471},{"text":351,"config":683},{"href":353,"dataGaName":354,"dataGaLocation":471},{"text":685,"config":686},"現代奴隷制の透明性に関する声明",{"href":687,"dataGaName":688,"dataGaLocation":471},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":690},[691,693,696],{"text":519,"config":692},{"href":521,"dataGaName":522,"dataGaLocation":471},{"text":694,"config":695},"Cookieの設定",{"dataGaName":531,"dataGaLocation":471,"id":532,"isOneTrustButton":30},{"text":524,"config":697},{"href":526,"dataGaName":527,"dataGaLocation":471},[699],{"id":700,"title":701,"body":28,"config":702,"content":704,"description":28,"extension":27,"meta":707,"navigation":30,"path":708,"seo":709,"stem":710,"__hash__":711},"blogAuthors/en-us/blog/authors/gitlab.yml","Gitlab",{"template":703},"BlogAuthor",{"name":9,"config":705},{"headshot":706,"ctfId":9},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659488/Blog/Author%20Headshots/gitlab-logo-extra-whitespace.png",{},"/en-us/blog/authors/gitlab",{},"en-us/blog/authors/gitlab","XCBKIcPoCs6zi2oHG7o-bAp52Jhaw8_zGhIJ2jNrEjU",[713,729,743],{"content":714,"config":727},{"heroImage":715,"body":716,"authors":717,"updatedDate":720,"date":721,"title":722,"tags":723,"description":726,"category":11},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1776362275/ozbwn9tk0dditpnfddlz.png","GitLabを利用し、AWSを活用した開発体制を整えているチームに最適なソリューションが登場しました。Duo Agent PlatformとAmazon Bedrockの新しい組み合わせです。仕組みはシンプルで、GitLabがオーケストレーションレイヤーとしてエージェント型AIによるソフトウェアライフサイクル全体の加速を支援し、Bedrockが安全でコンプライアンスに準拠した基盤モデルレイヤーとしてAI推論を担います。\n\nGitLab Duo Agent Platformでは、計画、パイプライン、セキュリティスキャン、脆弱性の修復など、さまざまな作業をGitLabワークフローの一環として処理できます。GitLab AIゲートウェイがモデル呼び出しをBedrock（または構成に応じてGitLabが管理するBedrock対応エンドポイント）にルーティングするため、AWS上で既に構築済みのIAMポリシー、VPC境界、リージョン制御、AWS契約額をそのまま活用できます。\n\nAmazon Bedrockをすでに利用しており、スタンドアロンのチャットツールではなく、GitLabでの日常作業の中でAIを活用したいとお考えであれば、この組み合わせが最適です。\n\n本記事ではまず、多くのチームが直面している課題を取り上げます。AIが分断され、データの流れが不透明で、AIがソフトウェア開発ライフサイクルの外にあるためにBedrockへの投資が十分に活かされていないという現状です。続いて、GitLab Duo Agent Platformのデプロイオプションについて詳しく説明します。\n\n* GitLab Self-Managed＋セルフホスト型AIゲートウェイで、Amazon Bedrock上のセルフホスト型モデルと統合\n* GitLab Self-Managed＋GitLabホスト型AIゲートウェイで、Amazon Bedrock上のGitLabマネージド型モデル（GitLab所有のキーを使用）と統合\n* GitLab.com＋GitLabホスト型AIゲートウェイで、Amazon Bedrock上のGitLabマネージド型モデル（GitLab所有のキーを使用）と統合\n\n最後に、シャドーAIやポイントツールの乱立を、別途AIスタックを構築することなく回避する方法をまとめます。\n\n## AI導入は加速、ガバナンスは停滞\n\n今まさに社内のどこかで、セキュリティチームの承認を受けていないAIツールがソフトウェアチームに使われているかもしれません。プロンプトデータが、誰も完全には把握していない経路を通じて環境外に流出しているかもしれません。そしてAmazon Bedrockへの投資が十分に活用されていない一方で、個々のチームが別のAIツールを独自に導入し、既存の契約先プラットフォームからワークロードやクラウド支出を流出させているかもしれません。\n\nこれは人の問題ではなく、アーキテクチャの問題です。そして、ほぼすべてのエンタープライズで同じ3つの制約が浮き彫りになります。\n\n**運用の断片化**\n\n各チーム、場合によっては個々のデベロッパーが、AIツールやモデルの選定を含め独自の開発ツールセットを選択しています。このような断片化により、ソフトウェア開発ライフサイクル全体にわたるエンドツーエンドのガバナンスがほぼ不可能になっています。\n\n**セキュリティとデータ主権**\n\nプロンプトデータやコードデータは実際にどこに流れているのか？ログの所有者は誰なのか？\n\n**クラウド支出の最適化**\n\nAWSをはじめとする主要クラウドプロバイダーとの契約額が、契約外のポイントツールへワークロードやAI利用が流出することで希薄化しています。\n\nGitLab Duo Agent PlatformとAmazon Bedrockは、この課題を共に解決します。役割分担は明確です。Duo Agent Platformがソフトウェア開発向けエージェント型AIによるワークフローオーケストレーションを担い、Bedrockが推論レイヤーとして承認済みの基盤モデルをホストし、組織はAWS上で定義済みのデータおよびポリシー境界を完全にコントロールできます。3つの役割、3つの担い手、断片化はありません。\n\n## GitLab Duo Agent Platform：エージェント型コントロールプレーン\n\nGitLab Duo Agent PlatformはGitLabのエージェント型AIレイヤーです。専門特化したエージェントとフローで構成され、従来のステージベースの受け渡しを超えて、ソフトウェアライフサイクル全体にわたる作業の自動化を支援します。単一のアシスタントがプロンプトに応答するのではなく、チームはイシュー、マージリクエスト、パイプライン、セキュリティ検出結果といった統合データとプロジェクトコンテキストを活用しながら、多数のAIエージェントを非同期にオーケストレーションできます。従来の線形ワークフローが、ソフトウェアチームとAIエージェントの継続的なコラボレーションへと変わります。\n\nこのコントロールプレーンが確立されると、次に浮かぶ疑問は、これらのエージェントを支えるAI基盤に何を選ぶべきかということです。AWS上でGitLab Self-Managedを運用し、推論トラフィック、プロンプトデータ、ログもソフトウェアライフサイクルデータと同じAWS環境内に保持する必要があるお客様にとって、AI推論レイヤーとしてのAmazon Bedrockは最適な選択です。\n\n## Amazon Bedrock：信頼できるAI基盤\n\nAmazon Bedrockは、AWS環境内で完全に動作するフルマネージドのサーバーレス基盤モデルレイヤーです。お客様のデータはお客様のAWSアカウント内にとどまります。入出力データは転送中および保存時に暗号化され、モデルプロバイダーと共有されることはなく、ベースモデルのトレーニングに使用されることもありません。BedrockはGDPR、HIPAA、FedRAMP Highのコンプライアンス認証を取得しており、多くの規制業界の要件に標準で対応しています。Custom Model Importにより、他の環境でファインチューニングしたモデルを持ち込み、ネイティブのBedrockモデルと同じインフラストラクチャ上にデプロイすることも可能です。別途デプロイパイプラインを管理する必要はありません。Bedrock Guardrailsは、コンテンツフィルタリング、ハルシネーション検出、機密データ保護のための設定可能なセーフガードをすべてのモデルに追加します。\n\nGitLab Duo Agent PlatformとBedrockの組み合わせにより、DevSecOpsオーケストレーションとAIモデルガバナンスが統合され、チームごとにAIツールを個別導入することで生じる断片化を解消できます。\n\n## デプロイパスの選択\n\nデプロイ方法にかかわらず、GitLab Duo Agent Platformのコア機能は同一です。異なるのは、GitLabを誰が運用するか、AIゲートウェイを誰が運用するか、そして推論がどのBedrockアカウントで実行されるかという点です。最適なパターンは、組織の現在の運用環境によって決まります。\n\n概要として、統合には3つの主要コンポーネントがあります。\n\n* **GitLab Duo Agent Platform：**\n\n  ソフトウェア開発ライフサイクル全体に組み込まれたエージェント型ワークフロー\n\n* **AIゲートウェイ（GitLabマネージドまたはセルフホスト）：**\n\n  Duo Agent Platformと基盤モデルバックエンドの間の抽象化レイヤー\n\n* **Amazon Bedrock：**\n\n  AIモデルおよび推論基盤\n\n![GitLabとAWS Bedrockのデプロイメント](https://res.cloudinary.com/about-gitlab-com/image/upload/v1776362365/udmvmv2efpmwtkxgydch.png)\n\nデプロイパターンの選択は、組織がどこに制御の軸を置くかによって決まります。SaaSファースト、コンプライアンス要件によるセルフマネージド、既存のBedrock投資を活用したAWS中心、いずれの環境にも対応できるパターンを用意しています。\n\n| デプロイモデル     | GitLab.comインスタンス＋GitLabホスト型AIゲートウェイ＋GitLabマネージド型Bedrockモデル                                   | GitLab Self-Managed＋GitLabホスト型AIゲートウェイ＋GitLabマネージド型Bedrockモデル                       | GitLab Self-Managed＋セルフホスト型AIゲートウェイ＋お客様運用Bedrockモデル                                                  |\n| ----------- | -------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |\n| **最適なケース：** | 主にGitLab.comを利用しており、AIゲートウェイやBedrockモデルのセルフホストは不要                                            | コンプライアンスや運用上の理由でGitLab Self-Managedが必要だが、AIレイヤーの管理は不要                               | 既存のBedrock利用実績を持つAWS中心のアプローチで、厳格なデータ管理・制御要件がある                                                       |\n| **主なメリット**  | Duo Agent Platformワークフローを最速で導入できるターンキー方式。GitLabがGitLab.com、AIゲートウェイ、Bedrock AIモデルとの統合をすべて運用。 | GitLabを自社環境内にデプロイしつつ、GitLabが管理するAIゲートウェイを通じてBedrockモデルを利用可能。デプロイの制御性と簡素化されたAI運用を両立。 | GitLabとAIゲートウェイを自社のAWSアカウント内で運用し、既存のIAM/VPC/リージョンを再利用。ログとデータを自社環境内に保持しつつ、既存のAWS契約額からBedrock利用分を充当可能。 |\n\n## お客様によるGitLab Duo Agent PlatformとAmazon Bedrockの活用事例\n\nプラットフォームチームは、GitLab Duo Agent PlatformとAmazon Bedrockを利用して、コード提案、セキュリティ分析、パイプライン修復を担当するモデルを標準化できます。これにより、個々のチームが独自にツールを導入するのではなく、ガードレールとログ記録を一元的に適用できるようになります。\n\n特にセキュリティワークフローで大きなメリットが得られます。GitLab Duo Agent Platformのエージェントは、GitLab内でセキュリティ検出結果に対する修正を提案・検証し、開発者がプラットフォーム外で処理していた手動のトリアージ作業を削減します。\n\n既存のAWS契約額を活用している企業にとって、GitLab内からBedrockを通じてAIワークロードをルーティングすることで、計画外の支出を発生させることなく、契約の範囲内で開発者のAI利用を拡大できます。\n\n## まとめ\n\nエンタープライズにおけるAI導入を遅らせている制約は、多くの場合、技術的なものではありません。ツールの断片化、管理されていないデータフロー、統合されないクラウド支出という組織的な課題です。これらの問題は、パイロットが成功した後であっても、AIプログラムの推進を停滞させる原因となります。\n\nGitLab Duo Agent PlatformとAmazon Bedrockは、これらの課題それぞれに直接対応します。プラットフォームチームには、ソフトウェア開発ライフサイクル全体にわたる一貫したガバナンス、監査性、AI利用の標準化されたパスが提供されます。開発チームは、GitLabにネイティブに統合された効率的なエージェント型ワークフローを活用できます。そしてAWS中心の組織は、並行するAIインフラストラクチャを新たに構築するのではなく、既存のBedrock投資を拡張できます。\n\nその結果、断片化することなくスケールするAIプログラムが実現します。同じスタック上でガバナンスと開発速度を両立し、同じチームにサービスを提供し、組織が既に所有するポリシーの下で運用できます。\n\n> 組織の既存AWS戦略に最適なデプロイパターンについては、[GitLab営業チームにお問い合わせください](https://about.gitlab.com/sales/)。お客様の環境に合わせたアーキテクチャの設計と実装をお手伝いします。詳細は、[AWSパートナーページ](https://about.gitlab.com/partners/technology-partners/aws/)もご覧ください。",[718,719],"Joe Mann","Mark Kriaf","2026-04-22","2026-04-21","GitLab + Amazon: 信頼できるAI基盤上でのプラットフォームオーケストレーション",[281,724,725],"AWS","AI/ML","GitLab Duo Agent PlatformとAmazon Bedrockを組み合わせて、エージェント型ソフトウェア開発とオーケストレーションを実現します。",{"featured":30,"template":15,"slug":728},"gitlab-amazon-platform-orchestration-on-a-trusted-ai-foundation",{"content":730,"config":741},{"heroImage":731,"body":732,"authors":733,"updatedDate":735,"date":736,"title":737,"tags":738,"description":740,"category":11},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1776259080/cakqnwo5ecp255lo8lzo.png","本ブログは、[GitLab 18.11 release notes](https://docs.gitlab.com/ja-jp/releases/18/gitlab-18-11-released/)の抄訳です。内容に相違がある場合は、原文が優先されます。\n\n# GitLab 18.11リリースノート\n\n2026年4月16日、GitLab 18.11が以下の機能とともにリリースされました。\n\nまた、すべてのコントリビューターの皆さまに感謝申し上げます。今月の注目コントリビューターもご紹介します。\n\n## 今月の注目コントリビューター：Rinku Cさん\n\n[Rinku C](https://gitlab.com/therealrinku)さんは、2025年9月の参加以降、GitLab全体で80件以上の改善をマージしたレベル4コントリビューターです。\n\nDeveloper Relationsチームのシニアフルスタックエンジニア、[Arianna Haradon](https://gitlab.com/aharadon)さんの推薦により、今回の表彰が実現しました。この賞は、長期にわたるRinkuさんの持続的かつ意義あるインパクトを称えるものです。Rinkuさんは、[プロジェクトおよびグループアクセストークンの作成フォームにスコープを必須とする](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/219236)ことでセキュリティに敏感なフローを強化し、[ジョブログのnext/previousナビゲーション](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/217618)、[空の検索を最近の検索から除外する改善](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/223570)、[ファイルツリーの整理](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/224628)など、日常的なGitLab体験を向上させる数多くのアップデートを行いました。これらはすべて、一般的なワークフローをより明確で使いやすくするためのUIの改善です。Rinkuさんは、誰も手を付けないような作業にも積極的に取り組み、コードベースの健全性を保ち、意義ある持続的な価値をもたらしています。コントリビュートに感謝します！\n\n- - -\n\n## 主要な機能\n\n### 脆弱性修正がGitLab Duo Agent Platformで一般提供開始\n\n* **利用可能プラン：** Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/user/application_security/vulnerabilities/agentic_vulnerability_resolution/) | [関連イシュー](https://gitlab.com/gitlab-org/gitlab/-/work_items/585626)\n\nエージェント型SASTの脆弱性修正機能が、GitLab 18.11のGitLab Duo Agent Platformで一般提供開始（GA）となりました。SASTスキャンの一環として、SAST誤検知の検出後、または個別のSAST脆弱性に対して手動でトリガーした場合に実行されます。\n\nエージェント型SAST脆弱性修正の特長：\n\n* 検出内容を自律的に分析し、周辺のコードコンテキストを推論します。\n* 重大度が「重大」および「高」のSAST脆弱性に対して、提案されたコード修正を含むレビュー可能なマージリクエストを自動作成します。\n* 品質評価を提供し、レビュアーが提案された修正に対する信頼度を素早く把握できます。\n* 脆弱性詳細ページから直接修正を適用できます。\n\nフィードバックは[イシュー585626](https://gitlab.com/gitlab-org/gitlab/-/issues/585626)にてお待ちしています。\n\n### GitLabデータ分析基本エージェントが一般提供開始\n\n* **利用可能プラン：** Free、Premium、Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/user/duo_agent_platform/agents/foundational_agents/data_analyst/) | [関連エピック](https://gitlab.com/groups/gitlab-org/-/work_items/20337)\n\nデータ分析エージェントはAIチャットアシスタントで、GitLabプラットフォーム全体のデータをクエリ、可視化し、インサイトを導き出せます。\n\n[GitLab Query Language（GLQL）](https://docs.gitlab.com/ja-jp/user/glql/)を基盤として、サポート対象の[データソース](https://docs.gitlab.com/ja-jp/user/glql/data_sources/)に関するデータを取得・分析し、ソフトウェア開発の健全性やエンジニアリング効率について明確で実用的なインサイトを提供します。\n\nこれらのインサイトはエージェントの出力内で直接可視化でき、イシューやエピックに埋め込んでさらに評価できます。\n\n### CIエキスパートエージェントがベータ版として公開\n\n* **利用可能プラン：** Free、Premium、Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/user/duo_agent_platform/agents/foundational_agents/ci_expert_agent/) | [関連イシュー](https://gitlab.com/gitlab-org/gitlab/-/work_items/587460)\n\nAIを活用したCIエキスパートエージェントがベータ版として利用可能になりました。このエージェントは、空の`.gitlab-ci.yml`からではなく、GitLab上のコードを基に、最初の動作するパイプラインを作れるよう支援します。\n\nGitLab Duo Agent Platformを使用してリポジトリを検査した後、ビルドやテストプロセスについていくつかのガイド付き質問を行います。その結果をもとに、レビュー・編集・コミットが可能なすぐに実行できるパイプラインを生成します。\n\nパイプラインの作成が会話形式のコンテキストに沿った体験になると同時に、YAMLを本格的に調整・最適化したい段階になれば、すべてを自分で制御できます。\n\n### 脆弱性の重大度が自動オーバーライド可能に\n\n* **利用可能プラン：** Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/user/application_security/policies/vulnerability_management_policy/#severity-override-policies) | [関連エピック](https://gitlab.com/groups/gitlab-org/-/epics/15839)\n\n脆弱性のデフォルト重大度は、必ずしも組織の実際のリスクを反映しているわけではありません。たとえば、内部専用サービスにおける重大なCVEが、公開アプリケーションと同じ緊急度で対応すべきとは限りません。それにもかかわらず、チームは自社のリスクモデルに合わない検出結果のトリアージに多くの時間を費やしています。\n\n脆弱性管理ポリシーにより、CVE ID、CWE ID、ファイルパス、ディレクトリなどの条件に基づいて脆弱性の重大度を自動調整できるようになりました。ポリシーが適用されると、デフォルトブランチ上の条件に一致する脆弱性の重大度が更新されます。手動によるオーバーライドは引き続き優先され、すべての変更は脆弱性の履歴と監査イベントに記録されます。\n\nトリアージ作業を削減し、ビジネスにとって最も重要な検出結果にデベロッパーが集中できるようにします。\n\n### サブグループおよびプロジェクトでサービスアカウントの作成が可能に\n\n* **利用可能プラン：** Free、Premium、Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/user/profile/service_accounts/) | [関連エピック](https://gitlab.com/groups/gitlab-org/-/work_items/17754)\n\nサブグループおよびプロジェクトでサービスアカウントを作成できるようになりました。トップレベルグループの広範なボットの代わりに、単一のサブグループまたはプロジェクトに専用のサービスアカウントを関連付け、そのネームスペースの他のメンバーと同様にアクセスを管理できます。グループおよびサブグループのサービスアカウントは、作成されたグループまたはその配下のサブグループやプロジェクトに招待できます。プロジェクトサービスアカウントは、そのプロジェクト内に限定されます。\n\n### サービスアカウントがGitLab Freeで利用可能に\n\n* **利用可能プラン：** Free、Premium、Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/user/profile/service_accounts/) | [関連エピック](https://gitlab.com/groups/gitlab-org/-/work_items/20439)\n\nサービスアカウントがGitLab.comのすべてのプランで利用可能になりました。以前はPremiumおよびUltimateに限定されていたサービスアカウントにより、個々のチームメンバーに認証情報を紐付けることなく、自動化されたアクション、データアクセス、スケジュール処理を実行できます。チームの変更に関係なく認証情報を安定的に維持する必要があるパイプラインやサードパーティのインテグレーションで広く使用されています。GitLab Freeでは、トップレベルグループごとに最大100個のサービスアカウント（サブグループやプロジェクトで作成されたものを含む）を作成できます。\n\n### **詳細制限付き**パーソナルアクセストークンが利用可能に（ベータ版）\n\n* **利用可能プラン：** Free、Premium、Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/auth/tokens/fine_grained_access_tokens/) | [関連エピック](https://gitlab.com/groups/gitlab-org/-/work_items/18555)\n\n詳細権限付きパーソナルアクセストークン（PAT）がベータ版として利用可能になりました。従来のPATはユーザーが所属するすべてのプロジェクトとグループへのアクセスを付与しますが、詳細権限付きPATでは各トークンのアクセス先を特定のリソースやアクションに絞り込めます。万が一トークンが漏洩・侵害された場合の影響範囲を大幅に縮小できます。\n\n既存のPATはこれまでどおり動作し、詳細権限なしのレガシーPATも引き続き作成できます。\n\n今回のベータリリースではGitLab REST APIの約75%をカバーしています。REST APIの完全なカバレッジ、GraphQLの適用、管理者によるポリシーコントロールはGAリリースで対応予定です。\n\nフィードバックは[エピック18555](https://gitlab.com/groups/gitlab-org/-/epics/18555)にてお待ちしています。\n\n### セキュリティダッシュボードにトップCWEチャートを追加\n\n* **利用可能プラン：** Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/user/application_security/security_dashboard/#top-10-cwes) | [関連エピック](https://gitlab.com/groups/gitlab-org/-/epics/17422)\n\n新しいセキュリティダッシュボードでトップCWEチャートが利用可能になりました。プロジェクトまたはインスタンス全体で最も一般的なCWEを特定し、トレーニング、改善、プログラムの最適化の機会を見つけられます。ダッシュボードデータを重大度別にグループ化したり、重大度、プロジェクト、レポートタイプでフィルタリングできます。\n\n### KubernetesへのGitalyデプロイ\n\n* **利用可能プラン：** Free、Premium、Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/administration/gitaly/kubernetes/) | [関連イシュー](https://gitlab.com/groups/gitlab-org/-/work_items/6127)\n\n完全にサポートされたデプロイ方法として、Kubernetes上にGitalyをデプロイできるようになりました。Kubernetesのオーケストレーション機能を活用したスケーリング、高可用性、リソース管理により、GitLabインフラストラクチャの管理の柔軟性が向上します。以前は、Kubernetesへのデプロイにはカスタム構成が必要で公式サポートがなかったため、コンテナ化された環境で信頼性の高いGitalyクラスターを維持することが困難でした。\n\n### マージリクエストパイプラインの手動実行時にインプットを再設定可能に\n\n* **利用可能プラン：** Free、Premium、Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/ci/pipelines/merge_request_pipelines/#run-a-merge-request-pipeline-with-custom-inputs) | [関連イシュー](https://gitlab.com/gitlab-org/gitlab/-/work_items/547861)\n\nCI/CDインプットを使うと、パイプラインの実行時にパラメータ値を変更して動作をカスタマイズできます。これまでこの機能はマージリクエスト（MR）パイプラインでは利用できませんでしたが、今回のリリースでMRパイプラインにも対応しました。\n\nMRパイプライン向けにインプットを設定した後、マージリクエストの新しいパイプラインを実行するたびに、インプットを変更してパイプラインの動作を変更できます。\n\n- - -\n\n## Agent Platformの中核機能\n\n### GitLab Duo Agentic Chatのデフォルトモデルがhaiku 4.5からSonnet 4.6に更新\n\n* **利用可能プラン：** Premium、Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/user/duo_agent_platform/model_selection/#default-models) | [関連イシュー](https://gitlab.com/gitlab-org/gitlab/-/work_items/595042)\n\nGitLabのAgentic Chat体験を向上させるアップデートを行いました。Agentic ChatのデフォルトモデルがVertex AIでホストされるClaude Haiku 4.5からClaude Sonnet 4.6にアップグレードされました。Claude Sonnet 4.6は推論と応答品質が向上していますが、Haiku 4.5と比べてGitLabクレジット消費量が多くなります。\n\n[モデル選択](https://docs.gitlab.com/ja-jp/user/duo_agent_platform/model_selection/#select-a-model-for-a-feature)設定から、Haikuを含む代替モデルを選択できます。すでに特定のモデルを選択している場合、その選択は維持されます。このアップデートはデフォルトのみに影響し、既存の選択を上書きしません。モデルごとのクレジット消費量の詳細については、[GitLabクレジットのドキュメント](https://docs.gitlab.com/ja-jp/subscriptions/gitlab_credits/)をご確認ください。\n\n### カスタムフロー定義でツールを設定可能に\n\n* **利用可能プラン：** Free、Premium、Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/user/duo_agent_platform/flows/custom/#create-a-flow) | [関連イシュー](https://gitlab.com/gitlab-org/modelops/applied-ml/code-suggestions/ai-assist/-/work_items/2147)\n\nカスタムフロー定義内でツールオプションとパラメータ値を直接設定し、LLMのデフォルト値を上書きできるようになりました。カスタムフロー内でのツールの動作をより正確かつ一貫して制御でき、ガードレールや特定のパラメータ値の適用が容易になります。\n\n### Mistral AIがGitLab Duo Agent Platformのセルフホストモデルとして利用可能に\n\n* **利用可能プラン：** Premium、Ultimate\n* **提供形態：** GitLab Self-Managed\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/administration/gitlab_duo_self_hosted/supported_llm_serving_platforms/#cloud-hosted-model-deployments) | [関連イシュー](https://gitlab.com/gitlab-org/gitlab/-/work_items/587872)\n\nGitLab Duo Agent Platformが、セルフホストモデルデプロイ向けのLLMプラットフォームとしてMistral AIをサポートしました。GitLab Self-Managedをご利用のお客様は、既存のサポート対象プラットフォーム（AWS Bedrock、Google Vertex AI、Azure OpenAI、Anthropic、OpenAI）と並行してMistral AIを設定できます。AI機能の運用方法の選択肢がさらに広がりました。\n\n- - -\n\n## スケールとデプロイ\n\n### GitLabクレジットダッシュボードで過去の月を表示可能に\n\n* **利用可能プラン：** Premium、Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/subscriptions/gitlab_credits/#view-credit-usage-details) | [関連イシュー](https://gitlab.com/gitlab-org/gitlab/-/work_items/590843)\n\nカスタマーポータルのGitLabクレジットダッシュボードで、過去の請求月を遡って確認できるようになりました。請求管理者は日々の使用状況の推移や期間ごとの消費パターンを比較し、請求書の内容と照らし合わせて確認できます。以前はダッシュボードに当月の請求月のみが表示されていました。この改善により、管理者はクレジット配分についてより的確な判断を行い、過去のデータに基づいて将来のニーズを予測できます。\n\n### GitLabクレジットのサブスクリプションレベル使用量上限の設定\n\n* **利用可能プラン：** Premium、Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/subscriptions/gitlab_credits/#set-a-monthly-usage-cap-for-on-demand-credits)\n\n管理者がサブスクリプションレベルでオンデマンドクレジットの月間使用量上限を設定できるようになりました。オンデマンドクレジットの消費総量が設定された上限に達すると、そのサブスクリプションのすべてのユーザーに対してGitLab Duo Agent Platformへのアクセスが自動的に一時停止され、次の請求期間の開始時または管理者が上限を調整するまで継続されます。この設定により、予期しない超過料金に対する確実なガードレールを提供し、Agent Platformのより広範な展開における主要な障壁を取り除きます。上限は請求期間ごとに自動的にリセットされ、管理者には上限到達時にメール通知が送信されます。\n\n### ユーザーごとのGitLabクレジット上限の設定\n\n* **利用可能プラン：** Premium、Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/subscriptions/gitlab_credits/#set-a-per-user-usage-cap)\n\n管理者が請求期間ごとにGitLabクレジットのユーザーごとの使用量上限をオプションで設定できるようになりました。個々のユーザーの総クレジット消費量が設定された上限に達すると、そのユーザーのみGitLab Duo Agent Platformへのアクセスが一時停止されます。他のユーザーは影響を受けません。特定のユーザーが組織全体のクレジットを偏って消費することを防ぎ、管理者が使用量の配分をきめ細かく制御できます。ユーザーごとの使用量上限はサブスクリプションレベルの使用量上限と連動し、先に到達した上限が適用されます。\n\n### Linuxパッケージの改善\n\n* **利用可能プラン：** Free、Premium、Ultimate\n* **提供形態：** GitLab Self-Managed\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/omnibus/settings/database/#upgrade-packaged-postgresql-server) | [関連イシュー](https://gitlab.com/gitlab-org/omnibus-gitlab/-/work_items/9734)\n\nGitLab 19.0では、PostgreSQLの最低サポートバージョンがバージョン17になります。この変更に備えて、[PostgreSQLクラスター](https://docs.gitlab.com/ja-jp/administration/postgresql/replication_and_failover/)を使用していないインスタンスでは、GitLab 18.11へのアップグレード時にPostgreSQL 17への自動アップグレードが試行されます。\n\n[PostgreSQLクラスター](https://docs.gitlab.com/ja-jp/administration/postgresql/replication_and_failover/)を使用している場合、またはこの[自動アップグレードをオプトアウト](https://docs.gitlab.com/ja-jp/omnibus/settings/database/#opt-out-of-automatic-postgresql-upgrades)する場合は、GitLab 19.0にアップグレードするために[PostgreSQL 17に手動でアップグレード](https://docs.gitlab.com/ja-jp/omnibus/settings/database/#upgrade-packaged-postgresql-server)する必要があります。\n\n### コンテナレジストリメタデータデータベースのバックアップとリストアのサポート\n\n* **利用可能プラン：** Free、Premium、Ultimate\n* **提供形態：** GitLab Self-Managed\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/administration/backup_restore/#metadata-database) | [関連イシュー](https://gitlab.com/groups/gitlab-com/gl-infra/data-access/durability/-/work_items/45)\n\nLinuxパッケージインストール向けのGitLab[バックアップRakeタスク](https://docs.gitlab.com/ja-jp/administration/backup_restore/)と、Cloud Native（Helm）インストール向けの[backup-utility](https://docs.gitlab.com/ja-jp/charts/backup-restore/)が、[コンテナレジストリメタデータデータベース](https://docs.gitlab.com/ja-jp/administration/packages/container_registry_metadata_database/)に対応しました。メタデータデータベースに格納されているblob、manifest、タグなどのデータへの参照をバックアップでき、悪意のあるまたは偶発的なデータ破損からの復旧が可能になります。\n\n### 検索のグループ向け新しいナビゲーション体験\n\n* **利用可能プラン：** Free、Premium、Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/user/group/manage/) | [関連エピック](https://gitlab.com/groups/gitlab-org/-/work_items/20521)\n\n検索のグループ一覧が改善され、GitLabインスタンス全体でのグループの発見が容易になりました。再設計されたインターフェースでは、2つのビューを持つタブレイアウトを採用しています。\n\n* **アクティブタブ：** アクセス可能なすべてのグループを閲覧し、関連するコミュニティやプロジェクトを発見できます。\n* **非アクティブタブ：** アーカイブされたグループや削除保留中のグループを表示し、グループのライフサイクルステータスを確認できます。\n\nこれらの変更により、グループの発見が効率化され、参加可能なグループの可視性が向上します。\n\n### プロジェクトの非同期転送\n\n* **利用可能プラン：** Free、Premium、Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/user/group/manage/) | [関連エピック](https://gitlab.com/groups/gitlab-org/-/work_items/20521)\n\n以前のバージョンのGitLabでは、大規模なグループやプロジェクトの転送がタイムアウトになることがありました。今回、転送・アーカイブ・削除などの操作に統一された状態管理モデルを導入したことで、動作の一貫性が向上し、状態履歴や監査詳細の可視性が改善されました。また、転送処理が非同期化され、長時間の操作でもタイムアウトが発生しにくくなっています。\n\n- - -\n\n## 統合DevOpsとセキュリティ\n\n### ClickHouseがSelf-Managedデプロイで一般提供開始\n\n* **利用可能プラン：** Free、Premium、Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/integration/clickhouse/#set-up-clickhouse) | [関連イシュー](https://gitlab.com/groups/gitlab-org/architecture/gitlab-data-analytics/-/work_items/51)\n\nGitLab Self-Managedインスタンス向けに、GitLab [ClickHouseインテグレーション](https://docs.gitlab.com/ja-jp/integration/clickhouse/)の推奨事項と設定ガイダンスが改善されました。独自のクラスターを持ち込むか、ClickHouse Cloud（推奨）セットアップオプションを使用できます。このインテグレーションは複数のダッシュボードを支え、分析領域内のさまざまなAPIエンドポイントへのアクセスを提供します。\n\nこのスケーラブルで高パフォーマンスなデータベースは、GitLab分析インフラストラクチャにおける大規模なアーキテクチャ改善計画の一環です。\n\n### Duo・SDLCトレンドダッシュボードでのGitLab Duo Agent Platform分析の強化\n\n* **利用可能プラン：** Premium、Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated\n* **アドオン：** Duo Pro、Duo Enterprise\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/user/analytics/duo_and_sdlc_trends/) | [関連エピック](https://gitlab.com/groups/gitlab-org/-/work_items/20540)\n\nGitLab DuoおよびSDLCトレンドダッシュボードが改善され、ソフトウェアデリバリーへのGitLab Duoの影響を測定するための分析機能が強化されました。月間Agent Platformユニークユーザー数とAgentic Chatセッション数の新しいシングルスタットパネルが追加されました。また、シート割り当てに対する使用率（%）として表示されていたメトリクスが、使用回数のみを報告するように更新されました。この変更により、新しい使用量課金モデルのAgent Platform使用量が反映されていなかった[問題](https://gitlab.com/gitlab-org/gitlab/-/work_items/590326)が解消されます。\n\n### GLQLがプロジェクト、パイプライン、ジョブのデータソースにアクセス可能に\n\n* **利用可能プラン：** Free、Premium、Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/user/glql/data_sources/)\n\n[GitLab Query Language（GLQL）](https://docs.gitlab.com/ja-jp/user/glql/)が3つの新しいデータソース（プロジェクト、パイプライン、ジョブ）にアクセスできるようになりました。これらの新しいデータソースは埋め込みビューとしても利用でき、パイプライン結果、ジョブステータス、プロジェクト概要をWiki、イシューやマージリクエストの説明、リポジトリのMarkdownファイルに直接表示できます。GLQLは[データ分析エージェント](https://docs.gitlab.com/ja-jp/user/duo_agent_platform/agents/foundational_agents/data_analyst/)の基盤でもあり、これらの新しいタイプにより、エージェントはCI/CDジョブの結果の検査、障害のデバッグ、パイプライン実行の詳細な概要の提供、およびネームスペース内のプロジェクトの正確な概要の提供が可能になります。\n\n### MavenおよびPythonのSBOMスキャンにおける依存関係の解決\n\n* **利用可能プラン：** Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/user/application_security/dependency_scanning/dependency_scanning_sbom/#dependency-resolution) | [関連エピック](https://gitlab.com/groups/gitlab-org/-/work_items/20461)\n\nSBOMを使用したGitLabの依存関係スキャンが、MavenおよびPythonプロジェクトの依存関係グラフの自動生成に対応しました。以前は、正確な依存関係分析にはロックファイルまたはグラフファイルの提供が必要でした。今回の改善により、これらのファイルが利用できない場合はアナライザーが自動的に生成を試みるようになり、MavenおよびPythonプロジェクトでロックファイルなしでも依存関係スキャンを有効にしやすくなりました。\n\n### 高度なSASTのインクリメンタルスキャン\n\n* **利用可能プラン：** Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/user/application_security/sast/gitlab_advanced_sast/#incremental-scanning) | [関連エピック](https://gitlab.com/groups/gitlab-org/-/work_items/20508)\n\nGitLab高度なSASTで、コードベースの変更された部分のみを分析するインクリメンタルスキャンが可能になりました。リポジトリ全体のスキャンと比較してスキャン時間が大幅に短縮されます。この機能は差分ベースのスキャンをさらに進化させたもので、コードベース全体の完全な結果を生成します。\n\n変更されたコードのみをスキャンすることで、速度を犠牲にしたり摩擦を増やしたりすることなく、セキュリティテストを開発ワークフローにシームレスに統合できます。\n\n### 未検証の脆弱性（ベータ版）\n\n* **利用可能プラン：** Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/user/application_security/sast/gitlab_advanced_sast/#report-unverified-vulnerabilities) | [関連エピック](https://gitlab.com/groups/gitlab-org/-/work_items/15649)\n\n高度なSASTが、未検証の脆弱性（ソースからシンクまで完全にトレースできない検出結果）を脆弱性レポートに直接表示できるようになりました。検出漏れ（偽陰性）よりも誤検出（偽陽性）が多くなることを許容できる場合には、この機能を有効にしてください。\n\nこの機能はベータ版です。フィードバックは[イシュー596512](https://gitlab.com/gitlab-org/gitlab/-/work_items/596512)にてお待ちしています。\n\n### Kubernetes 1.35のサポート\n\n* **利用可能プラン：** Free、Premium、Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/user/clusters/agent/#supported-kubernetes-versions-for-gitlab-features) | [関連イシュー](https://gitlab.com/gitlab-org/gitlab/-/work_items/584225)\n\nGitLabがKubernetesバージョン1.35を正式にサポートしました。アプリケーションをKubernetesにデプロイしてすべての機能にアクセスするには、接続されたクラスターを最新バージョンにアップグレードしてください。詳細については、[GitLabの機能でサポートされているKubernetesのバージョン](https://docs.gitlab.com/ja-jp/user/clusters/agent/#supported-kubernetes-versions-for-gitlab-features)をご確認ください。\n\n### コンテナレジストリ メタデータ データベースのpreferモード\n\n* **利用可能プラン：** Free、Premium、Ultimate\n* **提供形態：** GitLab Self-Managed\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/administration/packages/container_registry_metadata_database/#prefer-mode) | [関連イシュー](https://gitlab.com/gitlab-org/gitlab/-/issues/595480)\n\nコンテナレジストリ メタデータ データベースを`prefer`モードに設定できるようになりました。これは、既存の`true`および`false`の値に加わる新しい設定オプションです。preferモードでは、レジストリがインストールの現在の状態に基づいて、メタデータデータベースを使用するかレガシーストレージにフォールバックするかを自動的に検出します。\n\nデータベースにインポートされていない既存のファイルシステムメタデータがある場合、メタデータのインポートが完了するまでレガシーストレージが引き続き使用されます。データベースがすでに使用されている場合、または新規インストールの場合は、レジストリがデータベースを直接使用します。\n\n今後のリリースで、`prefer`モードは新規Linuxパッケージインストールのデフォルトになる予定です。既存のインストールには影響しません。詳細については、[イシュー595480](https://gitlab.com/gitlab-org/gitlab/-/work_items/595480)をご確認ください。\n\n### パッケージ保護ルールがTerraformモジュールに対応\n\n* **利用可能プラン：** Free、Premium、Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/user/packages/package_registry/package_protection_rules/) | [関連イシュー](https://gitlab.com/gitlab-org/gitlab/-/issues/592761)\n\nこれまで、ビルトインのGitLab Terraformモジュールレジストリからモジュールを公開しているチームには、新しいモジュールバージョンのプッシュを制限する手段がありませんでした。パッケージ保護ルールは複数のパッケージ形式に対応していたものの、`terraform_module`は対象外だったため、インフラストラクチャチームはプロジェクトレベルでプッシュを制御できませんでした。\n\n今回、`terraform_module`を対象としたパッケージ保護ルールを作成できるようになり、最小ロールに基づいてプッシュアクセスを制限できます。この機能はUI、REST API、GraphQL API、GitLab Terraformプロバイダーリソースから利用できます。\n\n### リリースエビデンスにパッケージが含まれるように\n\n* **利用可能プラン：** Free、Premium、Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/user/project/releases/release_evidence/#include-packages-as-release-evidence) | [関連イシュー](https://gitlab.com/gitlab-org/gitlab/-/work_items/283995)\n\nGitLabリリースの作成時、パッケージレジストリに公開されたパッケージは自動的にリリースに関連付けられませんでした。チームはパッケージURLを手動で構築し、APIやパイプラインスクリプトを通じてリリースリンクとして添付する必要があり、手間がかかるうえ不完全なリリースレコードのリスクがありました。\n\nパッケージのバージョンがリリースタグと一致する場合、GitLabがリリースエビデンスにパッケージを自動的に含めるようになりました。手動の手順なしにリリースと関連パッケージ間の検証可能で監査可能なリンクが作成され、ソースコード、アーティファクト、パッケージが1つの完全なリリーススナップショットにまとめられます。\n\n### Wikiサイドバートグルの位置変更によるアクセス性向上\n\n* **利用可能プラン：** Free、Premium、Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/user/project/wiki/#sidebar) | [関連イシュー](https://gitlab.com/gitlab-org/gitlab/-/work_items/580569)\n\nWikiサイドバートグルが、制御対象のサイドバーのすぐ横の左側に配置されるようになりました。\n\nサイドバーが折りたたまれている場合でも、フローティングコントロールとしてトグルが表示されたままになるため、ページの先頭までスクロールすることなく再度開けます。\n\n### Wikiページのアクションバーが固定表示に\n\n* **利用可能プラン：** Free、Premium、Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/user/project/wiki/) | [関連イシュー](https://gitlab.com/gitlab-org/gitlab/-/work_items/590255)\n\nWikiページのアクションバーが固定表示されるようになり、ページをスクロールしても常に画面上に表示されます。以前は、編集やページ履歴の表示、テンプレートの管理などにアクセスするにはページの先頭までスクロールする必要がありました。ページタイトルと主要なアクション（編集、新しいページ、テンプレート、ページ履歴など）が、ページのどこにいても手の届く場所に表示されます。\n\n### エピックのウェイト\n\n* **利用可能プラン：** Premium、Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/user/work_items/weight/) | [関連エピック](https://gitlab.com/groups/gitlab-org/-/work_items/12273)\n\nエピックがウェイトに対応し、計画時に大規模なイニシアティブの見積もりと優先順位付けが容易になりました。\n\nエピックを子イシューに分解する前に、初期見積もりを表す暫定ウェイトを割り当てられます。エピックを分解すると、すべての子イシューからのロールアップ合計を反映してウェイトが自動的に更新されます。これは、イシューやタスクのウェイトロールアップの動作と一貫しています。\n\nエピック詳細ページでは、暫定ウェイトと子イシューからのロールアップウェイトの両方を確認でき、時間の経過とともに見積もりを洗練するために必要なインサイトを得られます。\n\n### 悪用可能性リスクの高いマージリクエストのブロック\n\n* **利用可能プラン：** Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/user/application_security/policies/merge_request_approval_policies/#vulnerability_attributes-object) | [関連エピック](https://gitlab.com/groups/gitlab-org/-/epics/16311)\n\n以前は、マージリクエスト（MR）の承認ポリシーは脆弱性の重大度に基づいてMRをブロックできましたが、すべての脆弱性が同じリスクを持つわけではありません。CVSSの重大度だけでは、CVEが実際に悪用されているかどうかや悪用の可能性はわかりません。その結果、承認ポリシーがノイズの多いものとなり、デベロッパーとセキュリティチームの時間が浪費されていました。\n\n既知のエクスプロイト（KEV）およびエクスプロイト予測スコアリングシステムモデル（EPSS）データを使用してMR承認ポリシーを設定できるようになりました。検出結果がKEVカタログに含まれている場合（実際に悪用されている場合）、またはEPSSスコアがしきい値を超えている場合に、ブロックまたは承認を要求できます。MRのポリシー違反にはKEVおよびEPSSのコンテキストが含まれ、デベロッパーはセキュリティゲートがトリガーされた理由を理解できます。\n\nセキュリティチームにどの検出結果をブロックまたは警告するかの正確な制御を提供し、アラート疲労を軽減し、現在の脅威状況に沿った適用を実現します。\n\n### 脆弱性へのCVSS 4.0スコアの割り当て\n\n* **利用可能プラン：** Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/user/application_security/vulnerabilities/severities/) | [関連エピック](https://gitlab.com/groups/gitlab-org/-/epics/18697)\n\nCVSS 4.0は、脆弱性の重大度を評価・格付けするための業界標準の最新バージョンです。UIでCVSS 4.0スコアを表示・確認できるようになりました（脆弱性詳細ページおよび脆弱性レポートを含む）。APIを使用したスコアのクエリも可能です。\n\n### 脆弱性レポートの行操作の改善\n\n* **利用可能プラン：** Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/user/application_security/vulnerability_report/) | [関連イシュー](https://gitlab.com/gitlab-org/gitlab/-/work_items/561414)\n\n以前は、脆弱性レポートから詳細ページに移動するには、行内の説明テキストをクリックする必要がありました。\n\n今回の改善で、行のどこをクリックしても詳細ページに直接移動できるようになりました。脆弱性の説明やファイルの場所のリンク表示はマウスを合わせたときのみ表示されるようになり、キーボードナビゲーションも改善されています。\n\nこれらの変更により、脆弱性レポートがより直感的で使いやすくなりました。\n\n### セキュリティダッシュボードのPDFエクスポート\n\n* **利用可能プラン：** Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/user/application_security/security_dashboard/#export-as-pdf) | [関連エピック](https://gitlab.com/groups/gitlab-org/-/epics/18203)\n\nセキュリティダッシュボードをレポートやプレゼンテーション用にPDFとしてエクスポートできるようになりました。エクスポートには、アクティブなフィルターを含むダッシュボードのすべてのチャートとパネルの現在の状態が反映されます。\n\n### セキュリティ設定プロファイルでのSASTスキャン\n\n* **利用可能プラン：** Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/user/application_security/configuration/security_configuration_profiles/) | [関連エピック](https://gitlab.com/groups/gitlab-org/-/work_items/19951)\n\nGitLab 18.9では、**シークレット検出 - デフォルト**プロファイルによりセキュリティ設定プロファイルを導入しました。GitLab 18.11では、**静的アプリケーションセキュリティテスト（SAST） - デフォルト**プロファイルが追加され、SASTにも対応しました。CI/CD設定ファイルを一切編集することなく、標準化された静的解析のスキャン設定をすべてのプロジェクトに適用できます。\n\nこのプロファイルは2つのスキャントリガーを有効にします。\n\n* **マージリクエストパイプライン：** オープンなマージリクエストのあるブランチに新しいコミットがプッシュされるたびに、SASTスキャンを自動実行します。結果にはマージリクエストによって導入された新しい脆弱性のみが含まれます。\n* **ブランチパイプライン（デフォルトのみ）：** 変更がデフォルトブランチにマージまたはプッシュされた際に自動実行され、デフォルトブランチのSAST態勢の包括的なビューを提供します。\n\n### グループセキュリティダッシュボードのセキュリティ属性フィルター\n\n* **利用可能プラン：** Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/user/application_security/security_dashboard/#filter-the-entire-dashboard) | [関連エピック](https://gitlab.com/groups/gitlab-org/-/epics/18201)\n\nグループセキュリティダッシュボードの結果を、グループ内のプロジェクトに適用されたセキュリティ属性に基づいてフィルタリングできるようになりました。\n\n利用可能なセキュリティ属性は以下のとおりです。\n\n* ビジネスインパクト\n* アプリケーション\n* ビジネスユニット\n* インターネット露出\n* ロケーション\n\n### セキュリティマネージャーロール（ベータ版）\n\n* **利用可能プラン：** Free、Premium、Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/user/permissions/#security-manager)\n\nセキュリティマネージャーロールがベータ版として利用可能になりました。セキュリティ専門家向けに設計された新しいデフォルトの権限セットを提供します。セキュリティチームはセキュリティ機能にアクセスするためにデベロッパーやメンテナーロールを必要とせず、過剰な権限付与の懸念を解消しながら職務分離を維持できます。\n\nセキュリティマネージャーロールのユーザーには以下のアクセス権限があります。\n\n* **脆弱性管理：** グループおよびプロジェクト全体の脆弱性の表示、トリアージ、管理（脆弱性レポートおよびセキュリティダッシュボードを含む）。\n* **セキュリティインベントリ：** グループのセキュリティインベントリを表示し、全プロジェクトのスキャナーカバレッジを把握。\n* **セキュリティ設定プロファイル：** グループのセキュリティ設定プロファイルの表示。\n* **コンプライアンスツール：** グループまたはプロジェクトの監査イベント、コンプライアンスセンター、コンプライアンスフレームワーク、依存関係リストの表示。\n* **シークレットプッシュ保護：** グループのシークレットプッシュ保護の有効化。\n* **オンデマンドDAST：** グループのオンデマンドDASTスキャンの作成と実行。\n\n開始するには、グループに移動し、**管理 > メンバー**を選択してメンバーを招待し、セキュリティマネージャーロールを割り当ててください。\n\n### 脆弱性レポートの識別子リストポップオーバー\n\n* **利用可能プラン：** Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/user/application_security/vulnerability_report/) | [関連イシュー](https://gitlab.com/gitlab-org/gitlab/-/work_items/564939)\n\n脆弱性レポートの各行にプライマリCVE識別子がクリック可能なリンクとして表示されるようになりました。複数の識別子が存在する場合、**「+N more」**のポップオーバーですべての識別子が一覧表示されます。リスト内の各識別子は外部参照（CVE、CWE、WASCデータベースなど）にリンクしており、レポートを離れることなく詳細にすばやくアクセスできます。\n\n### GitLab Runner 18.11\n\n* **利用可能プラン：** Free、Premium、Ultimate\n* **提供形態：** GitLab Self-Managed、GitLab.com、GitLab Dedicated、GitLab Dedicated for Government\n* **リンク：** [ドキュメント](https://docs.gitlab.com/ja-jp/runner/)\n\nGitLab Runner 18.11もリリースしました。GitLab Runnerは、CI/CDジョブを実行し、結果をGitLabインスタンスに返送する高いスケーラビリティを備えたビルドエージェントです。GitLab Runnerは、GitLabに含まれるオープンソースの継続的インテグレーションサービスであるGitLab CI/CDと連携して動作します。\n\n#### 新機能：\n\n* [バンドルされた依存関係を含む`concrete`ヘルパーイメージの作成](https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/39286)\n* [環境変数ではなくRunner設定からジョブルーターのフィーチャーフラグを読み取り](https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/39280)\n\n#### バグ修正：\n\n* [リファクタリング後のRunnerバイナリパスの誤り](https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/39329)\n* [キャッシュ操作時のパイプラインハング](https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/39279)\n* [GitLab Runner 18.9.0の`docker-machine`バイナリがCVE-2025-68121を参照](https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/39276)\n* [`DOCKER_AUTH_CONFIG`からのクレデンシャルヘルパーバイナリが見つからない場合にRunnerがジョブペイロードの認証情報にサイレントフォールバック](https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/39201)\n* [`CONCURRENT_PROJECT_ID`が異なるジョブ間で一意でなく、ビルドディレクトリで競合が発生](https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/38307)\n* [アーティファクトのアップロードがレスポンスヘッダーのタイムアウトで失敗](https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/37220)\n* [失敗した`pre_build_script`の後にユーザー定義の`after_script`が実行され、`post_build_script`がバイパスされる](https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/3116)\n\nすべての変更の一覧はGitLab Runner [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-runner/blob/18-11-stable/CHANGELOG.md)をご覧ください。\n\n- - -\n\n## 関連トピック\n\n* [バグ修正](https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&state=closed&label_name%5B%5D=type%3A%3Abug&or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&milestone_title=18.11)\n* [パフォーマンスの改善](https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&state=closed&label_name%5B%5D=bug%3A%3Aperformance&or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&milestone_title=18.11)\n* [UIの改善](https://papercuts.gitlab.com/?milestone=18.11)\n* [非推奨と削除](https://docs.gitlab.com/ja-jp/update/deprecations/)\n* [アップグレードノート](https://docs.gitlab.com/ja-jp/update/versions/)\n\n- - -\n\n### インストール\n\n新規にGitLabをセットアップする場合は、[GitLabダウンロードページ](https://about.gitlab.com/install/)をご覧ください。\n\n### アップデート\n\n[アップデートページ](https://about.gitlab.com/update/)をご確認ください。\n\n### ご不明な点がある場合\n\nご質問やご意見をお聞かせください。本リリースについてご不明な点がある場合は、[GitLabフォーラム](https://forum.gitlab.com/)にアクセスして質問を投稿してください。\n\n### GitLabサブスクリプションプラン\n\n* [Free](https://about.gitlab.com/pricing/)\n  ユーザー向けの永久無料機能を提供\n* [Premium](https://about.gitlab.com/pricing/premium/)\n  チームの生産性と調整を強化\n* [Ultimate](https://about.gitlab.com/pricing/ultimate/)\n   組織全体のセキュリティ、コンプライアンス、プランニングに対応\n  GitLabのすべての機能を[無料](https://about.gitlab.com/free-trial/?hosted=saas)でお試しいただけます。\n\n*\\--------------------*\n\n*監修：ソリス ジェレズ / Jerez Solis [@jerezs](https://gitlab.com/jerezs) （GitLab合同会社 ソリューションアーキテクト本部 ソリューションアーキテクト）*\n\n### 過去の日本語リリース情報\n\n* [GitLab 18.10](https://about.gitlab.com/ja-jp/blog/gitlab-18-10-release/)\n* [GitLab 18.9](https://about.gitlab.com/ja-jp/blog/gitlab-18-09-release/)\n* [GitLab 18.8](https://about.gitlab.com/ja-jp/blog/gitlab-18-08-release/)\n* [GitLab 18.7](https://about.gitlab.com/ja-jp/blog/gitlab-18-07-release/)\n* [GitLab 18.6](https://about.gitlab.com/ja-jp/blog/gitlab-18-06-release/)\n* [GitLab 18.5](https://about.gitlab.com/ja-jp/blog/gitlab-18-05-release/)\n* [GitLab 18.4](https://about.gitlab.com/ja-jp/blog/gitlab-18-04-release)\n* [GitLab 18.3](https://about.gitlab.com/ja-jp/blog/gitlab-18-03-release)\n* [GitLab 18.2](https://about.gitlab.com/ja-jp/blog/gitlab-18-02-release/)\n* [GitLab 18.1](https://about.gitlab.com/ja-jp/blog/gitlab-18-01-release/)\n* [GitLab 18.0](https://about.gitlab.com/ja-jp/blog/gitlab-18-0-release/)\n* [GitLab 17.11](https://about.gitlab.com/ja-jp/blog/gitlab-17-11-release/)\n* [GitLab 17.10](https://about.gitlab.com/ja-jp/blog/gitlab-17-10-release/)\n* [GitLab 17.9](https://about.gitlab.com/ja-jp/blog/gitlab-17-9-release/)\n* [GitLab 17.8](https://about.gitlab.com/ja-jp/blog/gitlab-17-8-release/)\n* [GitLab 17.7](https://about.gitlab.com/ja-jp/blog/gitlab-17-7-release/)\n* [GitLab 17.6](https://about.gitlab.com/ja-jp/blog/gitlab-17-6-release/)\n* [GitLab 17.5](https://about.gitlab.com/ja-jp/blog/gitlab-17-5-released/)\n* [GitLab 17.4](https://about.gitlab.com/ja-jp/blog/gitlab-17-4-released/)\n* [GitLab 17.3](https://about.gitlab.com/ja-jp/blog/gitlab-17-3-released/)\n* [GitLab 17.2](https://about.gitlab.com/ja-jp/blog/gitlab-17-2-released/)\n* [GitLab 17.1](https://about.gitlab.com/ja-jp/blog/gitlab-17-1-released/)\n* [GitLab 16.11](https://about.gitlab.com/ja-jp/blog/gitlab-16-11-released/)",[734],"GitLab Japan Team","2026-04-20","2026-04-16","GitLab 18.11リリース",[739,725,11,25],"releases","GitLab 18.11でリリースした最新機能を公開します。",{"featured":30,"template":15,"slug":742},"gitlab-18-11-release",{"content":744,"config":753},{"heroImage":731,"body":745,"authors":746,"updatedDate":748,"date":736,"title":749,"tags":750,"description":752,"category":11},"GitLab Duo Agent PlatformをオンデマンドのGitLabクレジットとともに活用しているチームは、以前よりも速くリリースし、バグを早期に発見し、かつては数スプリントを要していた作業を自動化しています。しかし、導入が拡大するにつれ、財務・調達・プラットフォームの各チームから、AIへの支出が適切に管理され、予測可能で制御可能であることを示すよう求める声も高まっています。\n\nAI導入拡大の最大の障壁は、テクノロジーへの懐疑心ではありません。支出管理に対する不安です。予算上限がなければ、忙しい月に予期しない費用が発生するリスクがあります。ユーザーごとの上限がなければ、一部のヘビーユーザーが月末前にチームのクレジットを使い切ってしまう可能性があります。どちらの仕組みもなければ、ソフトウェア開発においてエージェント型AIの活用を拡大したいエンジニアリングリーダーは、予算承認のために多くの手順を踏まなければなりません。\n\n[一般提供（GA）](https://about.gitlab.com/ja-jp/blog/gitlab-duo-agent-platform-is-generally-available/)の開始以来、GitLab Duo Agent Platformは利用状況のガバナンスと可視化の機能を提供してきました。GitLab 18.11では、[GitLabクレジット](https://about.gitlab.com/ja-jp/blog/introducing-gitlab-credits/)の利用制御機能として、支出上限と予算ガードレールを新たに導入します。これにより、組織はクレジットの消費状況をさらに細かく管理し、透明性を高めることができます。\n\n## GitLabクレジットの管理\n\nGitLab 18.11では、GitLabクレジットの消費を管理する3つの層を追加します。サブスクリプションレベルの支出上限、ユーザーごとのクレジット上限、そして上限の状態と適用状況の可視化です。\n\n### サブスクリプションレベルの支出上限\n\n請求アカウントマネージャーは、サブスクリプション全体のオンデマンドGitLabクレジット消費に対して、月次の上限を設定できるようになりました。\n\n設定の流れは次のとおりです。\n\n* **上限の設定：** サブスクリプションの「GitLabクレジット」設定にある`Customers Portal`で上限を設定します。  \n* **支出上限の自動適用：** オンデマンドの利用量が上限に達すると、次の月次期間が始まるまで、そのサブスクリプションの全ユーザーのDAP（Duo Agent Platform）アクセスが一時停止されます。  \n* **柔軟な調整：** 月の途中で上限を引き上げたり無効にしたりすることで、アクセスを復元できます。\n\n上限は月次期間ごとにリセットされ、変更しない限り設定した上限が引き継がれます。利用データはリアルタイムではなく定期的に同期されるため、上限に達してから適用が有効になるまでの間に、わずかな追加利用が発生する場合があります。詳しくは[GitLabクレジットのドキュメント](https://docs.gitlab.com/ja-jp/subscriptions/gitlab_credits/)をご参照ください。\n\n### ユーザーレベルの支出上限\n\nクレジットの消費量はユーザーによって異なります。これは想定の範囲内ですが、一部のヘビーユーザーがクレジットプールの大部分を占めると、他のメンバーが月末前にアクセスできなくなる可能性があります。\n\nユーザーごとのクレジット上限を設定することで、特定のユーザーが公平な上限を超えて消費することを防げます。\n\n* **一律のユーザー上限：** GitLab GraphQL APIを通じて、サブスクリプション上のすべてのユーザーに均一のクレジット上限を設定できます。サブスクリプションレベルの上限とは異なり、ユーザーごとの上限はすべてのクレジットソースにまたがる、そのユーザーの総消費量に適用されます。  \n* **カスタムのユーザー個別オーバーライド：** 差別化した上限が必要な組織向けに、GraphQL APIを通じて特定ユーザーに個別のクレジット上限を設定できます。たとえば、スタッフエンジニアには高めの割り当てを設定し、それ以外のメンバーには標準の上限を適用するといった運用が可能です。  \n* **個別の適用：** ユーザーが上限に達しても、GitLab全体へのアクセスは維持されます。停止されるのは、次の請求サイクルが始まるまでのDuo Agent Platformのクレジット利用のみです。他のユーザーは、自分自身の上限またはサブスクリプションレベルの上限のいずれか早い方に達するまで、中断なく作業を続けられます。\n\n### 可視化と通知\n\nサブスクリプションレベルの上限に達した場合、GitLabは請求アカウントマネージャーにメール通知を送信します。これにより、上限の引き上げ、次の期間まで待機、クレジットの再配分といった対応を速やかに行えます。\n\nGitLab内では、グループオーナー（GitLab.com）とインスタンス管理者（Self-Managed）が、ユーザーごとの上限に達してブロックされたユーザーを確認し、GraphQL APIを通じて上限を調整することでアクセスを復元できます。\n\n## 予算ガードレールがAI利用のスケールを支援する理由\n\n組織がAI導入を加速させるにあたり、ガードレールは不可欠です。その理由を以下に説明します。\n\n### 予測可能なAI予算\n\nGitLab Duo Agent Platformの利用制御機能は、オンデマンドのGitLabクレジットを活用することで、AIを予算として管理しやすい予測可能な支出項目に変えます。これにより、ソフトウェア開発ライフサイクル全体にわたってエージェントを展開しやすくなり、財務部門への説明、更新の正当化、四半期ごとの支出計画が容易になります。\n\n### ガバナンスとチャージバック\n\n大規模な組織では、AIの消費量を社内予算やコストセンター、部門方針と連携させる必要があります。ユーザーごとの上限は、プラットフォームチームがクレジットを公平に配分し、個人レベルで消費量を追跡するための明確な仕組みを提供します。APIによるインポート機能により、エンタープライズ規模での上限管理も現実的に行えます。GitLabクレジットダッシュボードのユーザーごとの利用データと組み合わせることで、消費パターンを把握し、社内のチャージバックや予算配分プロセスの参考にすることができます。\n\n### スケールへの自信\n\n多くのお客様は、少人数のパイロットグループからGitLab Duo Agent Platformを始めます。利用制御機能は、そのパイロットを組織全体に拡大する際のリスクを排除します。予算を保護するハードな上限が設けられているため、数百人から数千人の開発者にDuo Agent Platformを展開しても安心です。想定より早く利用量が増加した場合でも、上限に達するだけで、予期しない請求は発生しません。\n\n## シートベース課金と可視性の課題に向き合う\n\n多くのAIコーディングツールは、コスト管理にシートベースのアプローチを採用しています。一定数のシートを定額のユーザー単価で購入する、シンプルながらも柔軟性に欠けるモデルです。開発者がツールを1日10回使っても、まったく使わなくても同じ料金を支払います。さらにベンダーがシート料金に加えてプレミアムモデルや超過料金を導入すると、シートベースのライセンスが約束していたコストの予測可能性が損なわれていきます。\n\nGitLabは異なるアプローチを取っています。ハードな上限と一元化されたガバナンスダッシュボードを備えた従量課金制です。チームが実際に使った分だけ支払うという柔軟性と、強制力のある支出上限によるコストの予測可能性を両立しています。\n\n## 実際の利用制御シナリオ\n\n**一例として、月次予算を守りたい中規模のSaaSカスタマーを挙げます。** 200名のエンジニアリング組織が、オンデマンド利用の想定量に合わせたサブスクリプションレベルの上限を設定します。エンジニアリングVPは、新しいチームのオンボーディング中であっても、GitLab Duo Agent Platformの支出が承認済み金額を超えないことを財務部門に自信を持って説明できます。月の途中で上限に近づいた場合、請求アカウントマネージャーが通知を受け取り、上限を引き上げるか次の期間まで待つかを判断できます。\n\n**GitLabでは、チーム間の利用を公平に保ちたい大企業とも多く連携しています。** 開発者2,000名を擁するグローバルな金融サービス会社がユーザーごとの上限を活用し、公平なアクセスを確保しています。複雑なリファクタリングプロジェクトに取り組むスタッフエンジニアにはAPIを通じて高い個別割り当てを設定し、多くの開発者には標準の一律上限を適用しています。クレジットプールを使い切るユーザーはなく、プラットフォームチームはGitLabクレジットダッシュボードのユーザーごとの利用データを活用して消費パターンを把握し、四半期ごとの予算計画に役立てています。\n\n## はじめ方\n\n利用制御機能は、GitLab 18.11を実行しているGitLab.comおよびSelf-Managedの両方のお客様にご利用いただけます。設定場所は、範囲とお客様の役割によって異なります。\n\n**サブスクリプションレベルの上限**\n\n請求アカウントマネージャーは、Customers PortalでサブスクリプションレベルのオンデマンドGitLabクレジット上限を設定します。\n\n1. `Customers Portal`にサインインします。  \n2. サブスクリプションカードで**GitLabクレジット**の設定に移動します。  \n3. 月次のオンデマンドクレジット上限を有効にし、希望する上限値を入力します。\n\n**一律のユーザー上限**\n\n一律のユーザー上限は、名前空間オーナー（GitLab.com）またはインスタンス管理者（Self-Managed）がGitLab GraphQL APIを通じて設定できます。利用可能な設定方法の最新情報については、[GitLabクレジットのドキュメント](https://docs.gitlab.com/ja-jp/subscriptions/gitlab_credits/)をご確認ください。\n\n**カスタムのユーザー個別オーバーライド**\n\n差別化した上限を設定する場合、名前空間オーナー（GitLab.com）とインスタンス管理者（Self-Managed）はプログラムで個別の上限を設定できます。これは自動化やInfrastructure as Codeのワークフローにも適しています。\n\n**利用状況と上限のステータスを確認する**\n\n* **Customers Portal：** 詳細な利用状況と上限のステータスを確認できます。  \n* **GitLab.com：** グループオーナーは**設定 > GitLabクレジット**でブロックされたユーザーを確認できます。  \n* **Self-Managed：** インスタンス管理者は**管理 > GitLabクレジット**で上限のステータスとブロックされたユーザーを確認できます。\n\n## GitLab Duo Agent Platformはスケールの準備ができています\n\n利用制御機能はGitLab 18.11でご利用いただけます。組織全体にGitLab Duo Agent Platformを展開する前に適切なガードレールを待っていた方にとって、今がその時です。上限を設定し、より多くのチームにDuo Agent Platformを展開して、より速いリリースを実現しましょう！\n\n> [GitLabクレジットと利用制御の詳細はこちら](https://docs.gitlab.com/ja-jp/subscriptions/gitlab_credits/)。",[747],"Bryan Rothwell","2026-04-17","GitLab 18.11: GitLabクレジットの予算管理機能",[11,725,751],"news","GitLab 18.11で新たに導入された支出上限とユーザーごとのクレジット上限により、組織はGitLab Duo Agent Platformを安心してスケールできる予算ガードレールを手に入れます。AIへの支出を予測可能に保ちながら、より多くのチームへの展開を実現します。",{"featured":14,"template":15,"slug":754},"gitlab-18-11-budget-guardrails-for-gitlab-credits",{"promotions":756},[757,771,782,794],{"id":758,"categories":759,"header":761,"text":762,"button":763,"image":768},"ai-modernization",[760],"ai-ml","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":764,"config":765},"Get your AI maturity score",{"href":766,"dataGaName":767,"dataGaLocation":248},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":769},{"src":770},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":772,"categories":773,"header":774,"text":762,"button":775,"image":779},"devops-modernization",[11,569],"Are you just managing tools or shipping innovation?",{"text":776,"config":777},"Get your DevOps maturity score",{"href":778,"dataGaName":767,"dataGaLocation":248},"/assessments/devops-modernization-assessment/",{"config":780},{"src":781},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":783,"categories":784,"header":786,"text":762,"button":787,"image":791},"security-modernization",[785],"security","Are you trading speed for security?",{"text":788,"config":789},"Get your security maturity score",{"href":790,"dataGaName":767,"dataGaLocation":248},"/assessments/security-modernization-assessment/",{"config":792},{"src":793},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":795,"paths":796,"header":799,"text":800,"button":801,"image":806},"github-azure-migration",[797,798],"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":802,"config":803},"See how GitLab compares to GitHub",{"href":804,"dataGaName":805,"dataGaLocation":248},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":807},{"src":781},{"header":809,"blurb":810,"button":811,"secondaryButton":815},"今すぐ開発をスピードアップ","DevSecOpsに特化したインテリジェントオーケストレーションプラットフォームで実現できることをご確認ください。\n",{"text":51,"config":812},{"href":813,"dataGaName":54,"dataGaLocation":814},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/ja-jp/","feature",{"text":56,"config":816},{"href":58,"dataGaName":59,"dataGaLocation":814},1777493636918]