[{"data":1,"prerenderedAt":783},["ShallowReactive",2],{"/ja-jp/blog/from-code-to-production-a-guide-to-continuous-deployment-with-gitlab":3,"navigation-ja-jp":43,"banner-ja-jp":441,"footer-ja-jp":451,"blog-post-authors-ja-jp-Benjamin Skierlak|James Wormwell":657,"blog-related-posts-ja-jp-from-code-to-production-a-guide-to-continuous-deployment-with-gitlab":683,"blog-promotions-ja-jp":720,"next-steps-ja-jp":774},{"id":4,"title":5,"authorSlugs":6,"body":9,"categorySlug":10,"config":11,"content":15,"description":9,"extension":30,"isFeatured":13,"meta":31,"navigation":32,"path":33,"publishedDate":22,"seo":34,"stem":38,"tagSlugs":39,"__hash__":42},"blogPosts/ja-jp/blog/from-code-to-production-a-guide-to-continuous-deployment-with-gitlab.yml","From Code To Production A Guide To Continuous Deployment With Gitlab",[7,8],"benjamin-skierlak","james-wormwell",null,"product",{"slug":12,"featured":13,"template":14},"from-code-to-production-a-guide-to-continuous-deployment-with-gitlab",false,"BlogPost",{"heroImage":16,"body":17,"authors":18,"updatedDate":21,"date":22,"title":23,"tags":24,"description":29,"category":10},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659478/Blog/Hero%20Images/REFERENCE_-_Use_this_page_as_a_reference_for_thumbnail_sizes.png","継続的デプロイは、チームがより迅速かつ高い信頼性で価値を生み出せる画期的な手法です。しかし、GitOpsやKubernetesを用いたコンテナオーケストレーション、動的環境などの高度なデプロイワークフローに取り組むのは、継続的デプロイの導入を始めたばかりのチームにとってはハードルが高いと感じられるかもしれません。\n\nGitLabでは、シームレスかつスケーラブルなデリバリーを実現することに注力しています。チームが基本に集中できるようにすることで、時間をかけてより複雑な戦略へと発展できる、強固な基盤を構築できます。このガイドでは、GitLabを活用した継続的デプロイの導入に必要な基本的なステップを紹介し、長期的な成功のための土台作りをサポートします。\n\n## まずはワークフローの計画から\n\n技術的な実装に入る前に、デプロイワークフローをしっかりと設計する時間を取りましょう。成功の鍵は、慎重な計画と体系的なアプローチにあります。\n\n### アーティファクト管理戦略\n\n継続的デプロイにおいて、アーティファクトとは、ビルドプロセスによって生成されるパッケージ化された成果物を指し、保存、バージョン管理、デプロイが必要です。アーティファクトには、次のようなものが含まれます。\n\n* アプリケーション用のコンテナイメージ\n* パッケージ\n* コンパイル済みのバイナリや実行ファイル\n* ライブラリ\n* 設定ファイル\n* ドキュメントパッケージ\n* その他のアーティファクト\n\n各アーティファクトは、デプロイプロセスにおいて特定の役割を果たします。たとえば、一般的なWebアプリケーションでは、次のようなアーティファクトが生成されることがあります。\n\n* バックエンドサービス用のコンテナイメージ\n* コンパイル済みフロントエンドアセットのZIPアーカイブ\n* データベース変更用のSQLファイル\n* 環境ごとの設定ファイル\n\nアーティファクトの適切な管理はデプロイを成功させる鍵となります。ここからは、アーティファクト管理のアプローチについて詳しく見ていきましょう。\n\n#### アーティファクトとリリースのバージョニング戦略\n\nクリーンで整理された構造を保つためのベストプラクティスとして、アーティファクトの明確なバージョニング戦略を確立することが重要です。リリース作成時のポイントは以下のとおりです。\n\n* リリースタグにセマンティックバージョニング（major.minor.patch）を使用する\n\n  * 例：安定版リリースが`myapp:1.2.3`の場合\n  * 破壊的な変更がある場合は、メジャーバージョン変更（2.0.0）\n  * 新機能を追加する場合は、マイナーバージョン変更（1.3.0）\n  * バグ修正を行う場合は、パッチバージョン変更（1.2.4）\n* 最新の安定版を示す「latest」タグを維持する\n\n  * 例：`myapp:latest`（自動デプロイ用）\n* コミットSHAを含めることで、正確なバージョン追跡を行う\n\n  * 例：`myapp:1.2.3-abc123f`（デバッグ用）\n* 開発環境向けにブランチベースのタグを使用する\n\n  * 例：`myapp:feature-user-auth`（新機能テスト用）\n\n#### ビルドアーティファクトの保持\n\n明確な保持ルールを実装しましょう。\n\n* 一時的なアーティファクトの明確な有効期限を設定する\n* 永続的に保持する必要があるアーティファクトを定義する\n* ストレージ管理のためのクリーンアップポリシーを設定する\n\n#### レジストリアクセスと認証\n\n適切なアクセス制御でアーティファクトのセキュリティを確保しましょう。\n\n* デベロッパーのアクセス用にパーソナルアクセストークンを実装する\n* パイプラインの認証にCI/CD変数を設定する\n* 適切なアクセススコープを設定する\n\n### 環境戦略\n\n環境設計はデプロイパイプライン全体の構成に影響を与えるため、早い段階で検討しましょう。\n\n* 開発、ステージング環境、本番環境の設定\n* 環境ごとの変数とシークレットの管理\n* アクセス制御と保護ルールの設定\n* デプロイの追跡とモニタリングのアプローチ\n\n### デプロイターゲット\n\nどこに、どのようにデプロイするのかを慎重に検討しましょう。これらの決定は重要であり、それぞれのメリットとデメリットを考慮する必要があります。\n\n* インフラ要件（仮想マシン、コンテナ、クラウドサービス）\n* ネットワークアクセスとセキュリティ設定\n* 認証メカニズム（SSH鍵、アクセストークン）\n* リソースの割り当てとスケーリングの考慮\n\nこれで戦略が定まり、基盤となる決定が完了したので、これらの計画を実際に動作するパイプラインに落とし込んでいきます。それでは、実際に機能する例を作ることで概念を深掘りしていきましょう。まずはシンプルなアプリケーションから始め、徐々にデプロイの機能を追加していきます。\n\n## CDパイプラインの実装\n\n### 具体的な手順\n\nWebアプリケーション向けの基本的な継続的デプロイ（CD）パイプラインの実装手順を順を追って説明します。例としてシンプルなHTMLアプリケーションを使用しますが、ここで紹介する原則はどのタイプのアプリケーションにも応用できます。今回は、アプリケーションをDockerイメージとしてパッケージ化し、シンプルな仮想マシン上にデプロイします。これにより、最小限の依存関係を持つ厳選されたイメージを活用し、環境依存の要件が意図せず混入するのを防ぐことができます。また、仮想マシン上で動作させることで、GitLabのネイティブなインテグレーション機能を活用しない設定となります。複雑で本格的な環境ではなく、理解しやすい簡易的な環境から始めてみましょう。\n\n#### 前提条件\n\nこの例では、クラウドプロバイダーの仮想マシン上で実行するアプリケーションをコンテナ化することを目指します。また、ローカル環境でもこのアプリケーションをテストします。以下の前提条件は、このシナリオにおいてのみ必要なものです。\n\n##### [仮想マシン（VM）](https://about.gitlab.com/ja-jp/blog/what-is-vm/)のセットアップ\n\n* お好みのクラウドプロバイダーで[VM](https://about.gitlab.com/ja-jp/blog/what-is-vm/)をプロビジョニングします（例：GCP、AWS、Azure）\n* ネットワークルールを設定し、ポート22、80、443へのアクセスを許可します\n* デプロイ用にマシンのパブリックIPアドレスを記録します\n\n##### SSH認証のセットアップ：\n\n* マシン用の公開鍵と秘密鍵のペアを生成します\n* GitLabで**設定 > CI/CD > 変数**を開きます\n* `GITLAB_KEY`という変数を作成します\n* タイプを「ファイル」に設定します（SSH認証に必須）\n* 秘密鍵を「値」フィールドに貼り付けます\n* 「ユーザー」変数を定義します（VMにログインしてスクリプトを実行するユーザー）\n\n##### デプロイ変数の設定\n\n* デプロイターゲット用の変数を作成します\n\n  * `STAGING_TARGET`：ステージング環境のサーバーIPまたはドメイン\n  * `PRODUCTION_TARGET`：本番環境のサーバーIPまたはドメイン\n\n##### ローカル開発環境のセットアップ\n\n* デプロイのテスト用に、ローカルマシンにDockerをインストールします\n\n##### GitLabコンテナレジストリへのアクセス\n\n* レジストリパスを確認します：\n\n  * **デプロイ > コンテナレジストリ**を開きます\n  * レジストリパスをコピーします（例：registry.gitlab.com/group/project）\n* 認証の設定：\n\n  * **設定 > アクセストークン**を開きます\n  * レジストリアクセス権を持つ新しいトークンを作成します\n  * トークンの有効期限を最大1年に設定します\n  * トークンを安全に保存します\n* ローカルレジストリのアクセス設定：\n\n```shell\ndocker login registry.gitlab.com\n\n# パーソナルアクセストークンを使用する場合のユーザー名はgitlab-ci-tokenです\n\n# Password:（ここにアクセストークンを入力）\n```\n\n#### 1. アプリケーションを作成する\n\n基本的なWebアプリケーションから始めましょう。今回の例では、シンプルなHTMLページを使用します。\n\n```xml\n\u003C!|||UNTRANSLATED_CONTENT_START|||-- index.html -->\n\n\u003Chtml>\n  \u003Chead>\n    \u003Cstyle>\n      body {\n        background-color: #171321; /* GitLab dark */\n      }\n    \u003C/style>\n  \u003C/head>\n  \u003Cbody>\n    \u003C!|||UNTRANSLATED_CONTENT_END|||-- ここにコンテンツを追加 -->\n  \u003C/body>\n\u003C/html>\n```\n\n#### 2. アプリケーションをコンテナ化する\n\nアプリケーションをパッケージ化するために、Dockerfileを作成します：\n\n```text\nFROM nginx:1.26.2\n\nCOPY index.html /usr/share/nginx/html/index.html\n```\n\nこのDockerfileは\n\n* nginxをベースイメージとして使用し、Webコンテンツを配信できるようにします\n* 作成したindex.htmlをnginxのディレクトリ構造内の適切な場所にコピーします\n\n#### 3. CI/CDパイプラインを設定する\n\nGitLabのパイプラインステージを定義するために、`.gitlab-ci.yml`ファイル を作成します：\n\n```yaml\nvariables:\n  TAG_LATEST: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:latest\n  TAG_COMMIT: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHA\n\nstages:\n  - publish\n  - deploy\n\n```\n\n解説：\n\n`TAG_LATEST`は、次の3つの要素で構成されています：\n\n* `$CI_REGISTRY_IMAGE`：GitLabのプロジェクトのコンテナレジストリのパス\n\n例：`registry.gitlab.com/your-group/your-project`\n\n* `$CI_COMMIT_REF_NAME`：ブランチ名またはタグ名\n\n例：ブランチの場合は`/main`、フィーチャーブランチの場合は`/feature-login`\n\n* `:latest`：固定のサフィックス\n\nこれにより、mainブランチの`TAG_LATEST`は次のようになります：`registry.gitlab.com/your-group/your-project/main:latest`\n\n`TAG_COMMIT`は`TAG_LATEST`とほぼ同じですが、`:latest`の代わりにコミット識別子の`$CI_COMMIT_SHA`を使います。例：`:abc123def456`\n\nしたがって、同じmainブランチでの`TAG_COMMIT`は次のようになります：`registry.gitlab.com/your-group/your-project/main:abc123def456`\n\n両方のタグを使用する理由は、`TAG_LATEST`が常に最新バージョンを取得しやすくするのに対し、`TAG_COMMIT`は必要に応じて特定のバージョンに戻れるようにするためです。\n\n#### 4. コンテナレジストリに公開する\n\nパイプラインに公開ジョブを追加します：\n\n```yaml\npublish:\n  stage: publish\n  image: docker:latest\n  services:\n    - docker:dind\n  script:\n    - docker build -t $TAG_LATEST -t $TAG_COMMIT .\n    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY\n    - docker push $TAG_LATEST\n    - docker push $TAG_COMMIT\n\n```\n\nこのジョブは\n\n* Docker-in-Dockerを使用してイメージをビルドします\n* 2つのタグを付けたイメージを作成します\n* GitLabレジストリへの認証を行います\n* 両方のイメージをレジストリにプッシュします \n\nこれで、コンテナイメージが安全にレジストリに保存されました。次は、ターゲット環境へのデプロイを進めていきます。本番環境へ移行する前に、まずローカル環境でテストを行い、設定が正しく機能していることを確認しましょう。 \n\n#### 5. 環境へデプロイする\n\n本番環境にデプロイする前に、ローカル環境でテストできます。先ほどGitLabレジストリにイメージを公開したので、それをローカル環境でプルしてテストします。コンテナイメージのパスが分からない場合は、GitLabの\\*\\*デプロイ\n\n> コンテナレジストリ\\*\\*に移動し、該当のコンテナイメージの行末にあるアイコンをクリックすると、パスをコピーできます。\n\n```shell\ndocker login registry.gitlab.com \n\ndocker run -p 80:80 registry.gitlab.com/your-project-path/main:latest\n```\n\nこれにより、Webブラウザからlocalhostにアクセスし、ローカル環境でアプリケーションを確認できるようになります。\n\nそれでは、パイプラインにデプロイジョブを追加しましょう：\n\n```yaml\ndeploy:\n  stage: deploy\n  image: alpine:latest\n  script:\n    - chmod 400 $GITLAB_KEY\n    - apk add openssh-client\n    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY\n    - ssh -i $GITLAB_KEY -o StrictHostKeyChecking=no $USER@$TARGET_SERVER \n      docker pull $TAG_COMMIT &&\n      docker rm -f myapp || true &&\n      docker run -d -p 80:80 --name myapp $TAG_COMMIT\n\n```\n\nこのジョブは\n\n* デプロイ先のサーバーへのSSHアクセスを確立します\n* 最新のコンテナイメージをプルします\n* 既存のコンテナを削除します\n* 新しいバージョンのコンテナをデプロイします\n\n#### 6. デプロイを追跡する\n\n環境設定を追加してデプロイの追跡を有効にします：\n\n```yaml\ndeploy:\n  environment:\n    name: production\n    url: https://your-application-url.com \n\n```\n\nこれにより、GitLabの**オペレーション > 環境**セクションに環境オブジェクトが作成され、以下の情報が提供されます：\n\n* デプロイ履歴\n* 現在のデプロイ状況\n* アプリケーションへのクイックアクセス\n\n単一の環境向けのパイプラインは、最初のステップとしては有効ですが、ほとんどのチームでは適切なテストやステージングを行うために複数の環境を管理する必要があります。このより実践的なシナリオに対応するために、パイプラインを拡張していきましょう。\n\n#### 7. 複数環境をセットアップする\n\nより堅牢なパイプラインを構築するために、ステージング環境と本番環境のデプロイを設定します：\n\n```yaml\nstages:\n  - publish\n  - staging\n  - release\n  - version\n  - production\n\nstaging:\n  stage: staging\n  rules:\n    - if: $CI_COMMIT_BRANCH == \"main\" && $CI_COMMIT_TAG == null\n  environment:\n    name: staging\n    url: https://staging.your-app.com\n  # デプロイスクリプトを記述\n\nproduction:\n  stage: production\n  rules:\n    - if: $CI_COMMIT_TAG\n  environment:\n    name: production\n    url: https://your-app.com\n  # デプロイスクリプトを記述\n\n```\n\nこの設定は\n\n* mainブランチからステージ環境へデプロイします\n* GitLabのタグを利用して本番環境へのデプロイをトリガーします\n* 環境ごとに分けてデプロイの状況を管理できるようにします\n\nこのステップと次のステップでは、GitLabの非常に便利な機能であるタグを活用しています。GitLabの**コード >\nタグ**セクションで手動でタグを作成すると、'$ CI_COMMMIT_TAG\n`変数が設定され、本番環境へのデプロイジョブが適切にトリガーされるようになります。\n\n#### 8. 自動リリースノートを作成する\n\nCI/CDパイプラインを通じてGitLabのリリース機能を使用します。まず、`.gitlab-ci.yml`のstagesを更新 します：\n\n```yaml\nstages:\n\n\n- publish\n\n- staging\n\n- release # New stage for releases\n\n- version\n\n- production\n```\n\n次に、リリースジョブを追加します：\n\n```yaml\nrelease_job:\n  stage: release\n  image: registry.gitlab.com/gitlab-org/release-cli:latest\n  rules:\n    - if: $CI_COMMIT_TAG                  # タグが作成された場合のみ実行する\n  script:\n    - echo \"Creating release for $CI_COMMIT_TAG\"\n  release:                                # リリース設定\n    name: 'Release $CI_COMMIT_TAG'\n    description: 'Release created from $CI_COMMIT_TAG'\n    tag_name: '$CI_COMMIT_TAG'           # タグを作成する\n    ref: '$CI_COMMIT_TAG'                # リリースのベースとなるタグ\n\n```\n\nコンテナイメージのリンクを追加することで、さらに内容を充実させることができます：\n\n```yaml\nrelease:\n  name: 'Release $CI_COMMIT_TAG'\n  description: 'Release created from $CI_COMMIT_TAG'\n  tag_name: '$CI_COMMIT_TAG'\n  ref: '$CI_COMMIT_TAG'\n  assets:\n    links:\n      - name: 'Container Image'\n        url: '$CI_REGISTRY_IMAGE/main:$CI_COMMIT_TAG'\n        link_type: 'image'\n\n```\n\nコミットメッセージに基づいて自動リリースノートを生成する場合は次のようにします：\n\n```yaml\nrelease:\n  name: 'Release $CI_COMMIT_TAG'\n  description: 'Release notes for version $CI_COMMIT_TAG'\n  tag_name: '$CI_COMMIT_TAG'\n  ref: '$CI_COMMIT_TAG'\n  auto_generate_release_notes: true    # Enables automatic notes\n\n```\n\n自動リリースノートを充実させるには\n\n* 規則的なコミットメッセージを使用する（例：feat:, fix:）\n* イシュー番号を含める（例：#123）\n* 件名と本文の間に空行を入れる\n\nデプロイ時の情報をリリースノートに記載したい場合は、以下のように設定できます：\n\n```text\nrelease_job:\n  script:\n    - |\n      DEPLOY_TIME=$(date '+%Y-%m-%d %H:%M:%S')\n      CHANGES=$(git log $(git describe --tags --abbrev=0 @^)..@ --pretty=format:\"- %s\")\n      cat > release_notes.md \u003C\u003C EOF\n      ## デプロイ情報\n      - デプロイ日時: $DEPLOY_TIME\n      - 環境: 本番環境\n      - バージョン: $CI_COMMIT_TAG\n\n      ## 変更内容\n      $CHANGES\n\n      ## アーティファクト\n      - コンテナイメージ: \\`$CI_REGISTRY_IMAGE/main:$CI_COMMIT_TAG\\`\n      EOF\n  release:\n    description: './release_notes.md'\n\n```\n\nこの設定を行うと、Gitタグの作成時に自動でリリースが作成されるようになります。作成されたリリースは、GitLabの**デプロイ >\nリリース**で確認できます。\n\n#### 9. すべてをまとめる\n\n最終的なYAMLファイルは以下のようになります：\n\n```text\nvariables:\n  TAG_LATEST: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:latest\n  TAG_COMMIT: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHA\n  STAGING_TARGET: $STAGING_TARGET    # CI/CD変数で設定\n  PRODUCTION_TARGET: $PRODUCTION_TARGET  # CI/CD変数で設定\n\nstages:\n  - publish\n  - staging\n  - release\n  - version\n  - production\n\n# ビルドとレジストリへの公開\n\npublish:\n  stage: publish\n  image: docker:latest\n  services:\n    - docker:dind\n  rules:\n    - if: $CI_COMMIT_BRANCH == \"main\" && $CI_COMMIT_TAG == null\n  script:\n    - docker build -t $TAG_LATEST -t $TAG_COMMIT .\n    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY\n    - docker push $TAG_LATEST\n    - docker push $TAG_COMMIT\n\n# stagingへデプロイ\n\nstaging:\n  stage: staging\n  image: alpine:latest\n  rules:\n    - if: $CI_COMMIT_BRANCH == \"main\" && $CI_COMMIT_TAG == null\n  script:\n    - chmod 400 $GITLAB_KEY\n    - apk add openssh-client\n    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY\n    - ssh -i $GITLAB_KEY -o StrictHostKeyChecking=no $USER@$STAGING_TARGET \"\n        docker pull $TAG_COMMIT &&\n        docker rm -f myapp || true &&\n        docker run -d -p 80:80 --name myapp $TAG_COMMIT\"\n  environment:\n    name: staging\n    url: http://$STAGING_TARGET\n\n# リリースの作成\n\nrelease_job:\n  stage: release\n  image: registry.gitlab.com/gitlab-org/release-cli:latest\n  rules:\n    - if: $CI_COMMIT_TAG\n  script:\n    - |\n      DEPLOY_TIME=$(date '+%Y-%m-%d %H:%M:%S')\n      CHANGES=$(git log $(git describe --tags --abbrev=0 @^)..@ --pretty=format:\"- %s\")\n      cat > release_notes.md \u003C\u003C EOF\n      ## デプロイ情報\n      - デプロイ日時：$DEPLOY_TIME\n      - 環境：本番環境\n      - バージョン：$CI_COMMIT_TAG\n\n      ## 変更内容\n      $CHANGES\n\n      ## アーティファクト\n      - コンテナイメージ：\\`$CI_REGISTRY_IMAGE/main:$CI_COMMIT_TAG\\`\n      EOF\n  release:\n    name: 'Release $CI_COMMIT_TAG'\n    description: './release_notes.md'\n    tag_name: '$CI_COMMIT_TAG'\n    ref: '$CI_COMMIT_TAG'\n    assets:\n      links:\n        - name: 'コンテナイメージ'\n          url: '$CI_REGISTRY_IMAGE/main:$CI_COMMIT_TAG'\n          link_type: 'image'\n\n# リリースタグ付きのバージョンを作成\n\nversion_job:\n  stage: version\n  image: docker:latest\n  services:\n    - docker:dind\n  rules:\n    - if: $CI_COMMIT_TAG\n  script:\n    - docker pull $TAG_COMMIT\n    - docker tag $TAG_COMMIT $CI_REGISTRY_IMAGE/main:$CI_COMMIT_TAG\n    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY\n    - docker push $CI_REGISTRY_IMAGE/main:$CI_COMMIT_TAG\n\n# 本番環境へデプロイ\n\nproduction:\n  stage: production\n  image: alpine:latest\n  rules:\n    - if: $CI_COMMIT_TAG\n  script:\n    - chmod 400 $GITLAB_KEY\n    - apk add openssh-client\n    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY\n    - ssh -i $GITLAB_KEY -o StrictHostKeyChecking=no $USER@$PRODUCTION_TARGET \"\n        docker pull $CI_REGISTRY_IMAGE/main:$CI_COMMIT_TAG &&\n        docker rm -f myapp || true &&\n        docker run -d -p 80:80 --name myapp $CI_REGISTRY_IMAGE/main:$CI_COMMIT_TAG\"\n  environment:\n    name: production\n    url: http://$PRODUCTION_TARGET\n\n```\n\n完成したパイプラインは\n\n* mainブランチでの変更をレジストリに公開します\n* mainブランチでの変更をstagingへデプロイします\n* タグが作成された際にリリースを作成します\n* リリースタグを付けたイメージを作成します\n* タグを基に本番環境へデプロイします\n\n主なメリット：\n\n* クリーンで再現性のあるローカル開発およびテスト環境が完成します\n* 構造化された本番環境へのデプロイフローにより、信頼性の高いデプロイを実現できます\n* 予期しない障害からの復旧パターンを確立します\n* より複雑なデプロイ戦略への拡張/導入に対応できます\n*\n\n### ベストプラクティス\n\n実装の際は、以下の原則を守りましょう：\n\n* 変数の使用方法からデプロイ手順まで、すべてを文書化する\n* GitLabのビルトイン機能（環境管理、リリース、レジストリ）を活用する\n* 適切なアクセス制御とセキュリティ対策を実施する\n* 強固なロールバック手順を計画し、障害に備える\n* パイプラインの設定はDRY（Don't Repeat Yourself：重複を避ける）を意識する\n\n## デプロイ戦略をスケールさせる\n\n次は何をすべきでしょうか？ここでは、継続的デプロイ戦略をさらに成熟させるために、検討すべきポイントを紹介します。\n\n### 高度なセキュリティ対策\n\n以下の方法でセキュリティを強化しましょう：\n\n* アクセスを制限した保護環境を設定する\n* 本番環境へのデプロイに承認を必須とする\n* セキュリティスキャンをパイプラインに統合する\n* 自動脆弱性評価を導入する\n* デプロイ関連の変更に対するブランチ保護ルールを適用する\n\n### 段階的なデリバリー戦略\n\n以下のような高度なデプロイ戦略を実装しましょう。\n\n* 機能フラグを活用して制御されたロールアウトを行う\n* リスクを軽減するためにカナリアデプロイを実施する\n* ブルーグリーンデプロイ戦略を導入する\n* A/Bテストを実施する\n* 動的環境管理を行う\n\n### モニタリングと最適化\n\n強固なモニタリング体制を確立しましょう：\n\n* デプロイ指標を追跡する\n* パフォーマンスモニタリングをセットアップする\n* デプロイアラートを設定する\n* デプロイのサービスレベル目標（SLO）を確立する\n* 定期的にパイプラインを最適化する\n\n## GitLabが選ばれる理由\n\nGitLabの継続的デプロイ機能は、現代のデプロイワークフローに最適です。GitLabは、コンテナレジストリ、環境管理、デプロイ追跡などの機能が1つのインターフェースに集約されており、コードから本番環境へのプロセスを効率化します。また、環境ごとの変数、デプロイ承認ゲート、ロールバック機能を備えており、本番環境へのデプロイ時に求められるセキュリティと管理を実現します。さらに、Review\nApps（レビューアプリ）や機能フラグを活用することで、段階的なデリバリー（プログレッシブデリバリー）戦略も可能です。GitLabのDevSecOpsプラットフォームの一部として、これらのCD機能はソフトウェアライフサイクル全体とシームレスに連携します。\n\n## 無料トライアルで今すぐスタート！\n\n継続的デプロイへの道のりは、革命ではなく進化のプロセスです。まずは基本を押さえ、しっかりとした基盤を築き、チームの成長に応じて徐々に高度な機能を取り入れていきましょう。GitLabは、最初の自動デプロイから、複数環境にまたがる複雑なデリバリーパイプラインまで、あらゆる段階でサポートするためのツールと柔軟性を提供します。 \n\n> [GitLab\n> Ultimateの無料トライアル](https://about.gitlab.com/ja-jp/free-trial/devsecops/)で、今日から継続的デプロイメントを始めましょう。\n\n\u003Cbr>\u003Cbr>\n\n\\*監修：川瀬 洋平 [@ykawase](https://gitlab.com/ykawase)\u003Cbr>\n\n（GitLab合同会社 カスタマーサクセス本部 シニアカスタマーサクセスマネージャー）*\n",[19,20],"Benjamin Skierlak","James Wormwell","2025-06-11","2025-01-28","コードから本番環境へ：GitLabを活用した継続的デプロイのガイド",[25,26,27,10,28],"CD","CI/CD","features","tutorial","GitLabを活用して堅牢な継続的デプロイパイプラインを構築する方法をご紹介します。具体的な手順や例、ベストプラクティスを通して段階的にプロセスを理解できます。","yml",{},true,"/ja-jp/blog/from-code-to-production-a-guide-to-continuous-deployment-with-gitlab",{"ogTitle":23,"ogImage":16,"ogDescription":29,"ogSiteName":35,"noIndex":13,"ogType":36,"ogUrl":37,"title":23,"canonicalUrls":37,"description":29},"https://about.gitlab.com","article","https://about.gitlab.com/blog/from-code-to-production-a-guide-to-continuous-deployment-with-gitlab","ja-jp/blog/from-code-to-production-a-guide-to-continuous-deployment-with-gitlab",[40,41,27,10,28],"cd","cicd","V0Ix1rSrH8kCfw3qA3cRCkXBo3Md-Iq3lmBSM5jswmk",{"data":44},{"logo":45,"freeTrial":50,"sales":55,"login":60,"items":65,"search":372,"minimal":405,"duo":422,"pricingDeployment":431},{"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,188,193,294,354],{"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":32,"config":95,"link":97,"lists":101,"footer":170},"製品",{"dataNavLevelOne":96},"solutions",{"text":98,"config":99},"すべてのソリューションを表示",{"href":100,"dataGaName":96,"dataGaLocation":49},"/ja-jp/solutions/",[102,126,148],{"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":26,"config":112},{"href":113,"dataGaLocation":49,"dataGaName":26},"/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},"Application Security Testing",{"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},"Software Compliance",{"href":147,"dataGaName":145,"dataGaLocation":49},"/ja-jp/solutions/software-compliance/",{"title":149,"link":150,"items":155},"測定",{"config":151},{"icon":152,"href":153,"dataGaName":154,"dataGaLocation":49},"DigitalTransformation","/ja-jp/solutions/visibility-measurement/","visibility and measurement",[156,160,165],{"text":157,"config":158},"可視性と測定",{"href":153,"dataGaLocation":49,"dataGaName":159},"Visibility and Measurement",{"text":161,"config":162},"バリューストリーム管理",{"href":163,"dataGaLocation":49,"dataGaName":164},"/ja-jp/solutions/value-stream-management/","Value Stream Management",{"text":166,"config":167},"分析とインサイト",{"href":168,"dataGaLocation":49,"dataGaName":169},"/ja-jp/solutions/analytics-and-insights/","Analytics and insights",{"title":171,"items":172},"GitLabが活躍する場所",[173,178,183],{"text":174,"config":175},"Enterprise",{"href":176,"dataGaLocation":49,"dataGaName":177},"/ja-jp/enterprise/","enterprise",{"text":179,"config":180},"スモールビジネス",{"href":181,"dataGaLocation":49,"dataGaName":182},"/ja-jp/small-business/","small business",{"text":184,"config":185},"公共機関",{"href":186,"dataGaLocation":49,"dataGaName":187},"/ja-jp/solutions/public-sector/","public sector",{"text":189,"config":190},"価格",{"href":191,"dataGaName":192,"dataGaLocation":49,"dataNavLevelOne":192},"/ja-jp/pricing/","pricing",{"text":194,"config":195,"link":197,"lists":201,"feature":281},"関連リソース",{"dataNavLevelOne":196},"resources",{"text":198,"config":199},"すべてのリソースを表示",{"href":200,"dataGaName":196,"dataGaLocation":49},"/ja-jp/resources/",[202,235,253],{"title":203,"items":204},"はじめに",[205,210,215,220,225,230],{"text":206,"config":207},"インストール",{"href":208,"dataGaName":209,"dataGaLocation":49},"/ja-jp/install/","install",{"text":211,"config":212},"クイックスタートガイド",{"href":213,"dataGaName":214,"dataGaLocation":49},"/ja-jp/get-started/","quick setup checklists",{"text":216,"config":217},"学ぶ",{"href":218,"dataGaLocation":49,"dataGaName":219},"https://university.gitlab.com/","learn",{"text":221,"config":222},"製品ドキュメント",{"href":223,"dataGaName":224,"dataGaLocation":49},"https://docs.gitlab.com/","product documentation",{"text":226,"config":227},"ベストプラクティスビデオ",{"href":228,"dataGaName":229,"dataGaLocation":49},"/ja-jp/getting-started-videos/","best practice videos",{"text":231,"config":232},"インテグレーション",{"href":233,"dataGaName":234,"dataGaLocation":49},"/ja-jp/integrations/","integrations",{"title":236,"items":237},"検索する",[238,243,248],{"text":239,"config":240},"お客様成功事例",{"href":241,"dataGaName":242,"dataGaLocation":49},"/ja-jp/customers/","customer success stories",{"text":244,"config":245},"ブログ",{"href":246,"dataGaName":247,"dataGaLocation":49},"/ja-jp/blog/","blog",{"text":249,"config":250},"リモート",{"href":251,"dataGaName":252,"dataGaLocation":49},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":254,"items":255},"つなげる",[256,261,266,271,276],{"text":257,"config":258},"GitLabサービス",{"href":259,"dataGaName":260,"dataGaLocation":49},"/ja-jp/services/","services",{"text":262,"config":263},"コミュニティ",{"href":264,"dataGaName":265,"dataGaLocation":49},"/community/","community",{"text":267,"config":268},"フォーラム",{"href":269,"dataGaName":270,"dataGaLocation":49},"https://forum.gitlab.com/","forum",{"text":272,"config":273},"イベント",{"href":274,"dataGaName":275,"dataGaLocation":49},"/events/","events",{"text":277,"config":278},"パートナー",{"href":279,"dataGaName":280,"dataGaLocation":49},"/ja-jp/partners/","partners",{"backgroundColor":282,"textColor":283,"text":284,"image":285,"link":289},"#2f2a6b","#fff","ソフトウェア開発の未来への洞察",{"altText":286,"config":287},"ソースプロモカード",{"src":288},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":290,"config":291},"最新情報を読む",{"href":292,"dataGaName":293,"dataGaLocation":49},"/ja-jp/the-source/","the source",{"text":295,"config":296,"lists":298},"会社情報",{"dataNavLevelOne":297},"company",[299],{"items":300},[301,306,312,314,319,324,329,334,339,344,349],{"text":302,"config":303},"GitLabについて",{"href":304,"dataGaName":305,"dataGaLocation":49},"/ja-jp/company/","about",{"text":307,"config":308,"footerGa":311},"採用情報",{"href":309,"dataGaName":310,"dataGaLocation":49},"/jobs/","jobs",{"dataGaName":310},{"text":272,"config":313},{"href":274,"dataGaName":275,"dataGaLocation":49},{"text":315,"config":316},"経営陣",{"href":317,"dataGaName":318,"dataGaLocation":49},"/company/team/e-group/","leadership",{"text":320,"config":321},"チーム",{"href":322,"dataGaName":323,"dataGaLocation":49},"/company/team/","team",{"text":325,"config":326},"ハンドブック",{"href":327,"dataGaName":328,"dataGaLocation":49},"https://handbook.gitlab.com/","handbook",{"text":330,"config":331},"投資家向け情報",{"href":332,"dataGaName":333,"dataGaLocation":49},"https://ir.gitlab.com/","investor relations",{"text":335,"config":336},"トラストセンター",{"href":337,"dataGaName":338,"dataGaLocation":49},"/ja-jp/security/","trust center",{"text":340,"config":341},"AI Transparency Center",{"href":342,"dataGaName":343,"dataGaLocation":49},"/ja-jp/ai-transparency-center/","ai transparency center",{"text":345,"config":346},"ニュースレター",{"href":347,"dataGaName":348,"dataGaLocation":49},"/company/contact/#contact-forms","newsletter",{"text":350,"config":351},"プレス",{"href":352,"dataGaName":353,"dataGaLocation":49},"/press/","press",{"text":56,"config":355,"lists":356},{"dataNavLevelOne":297},[357],{"items":358},[359,362,367],{"text":56,"config":360},{"href":58,"dataGaName":361,"dataGaLocation":49},"talk to sales",{"text":363,"config":364},"サポートポータル",{"href":365,"dataGaName":366,"dataGaLocation":49},"https://support.gitlab.com","support portal",{"text":368,"config":369},"カスタマーポータル",{"href":370,"dataGaName":371,"dataGaLocation":49},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":373,"login":374,"suggestions":381},"閉じる",{"text":375,"link":376},"リポジトリとプロジェクトを検索するには、次にログインします",{"text":377,"config":378},"GitLab.com",{"href":63,"dataGaName":379,"dataGaLocation":380},"search login","search",{"text":382,"default":383},"提案",[384,386,391,393,397,401],{"text":78,"config":385},{"href":83,"dataGaName":78,"dataGaLocation":380},{"text":387,"config":388},"コード提案（AI）",{"href":389,"dataGaName":390,"dataGaLocation":380},"/ja-jp/solutions/code-suggestions/","Code Suggestions (AI)",{"text":26,"config":392},{"href":113,"dataGaName":26,"dataGaLocation":380},{"text":394,"config":395},"GitLab on AWS",{"href":396,"dataGaName":394,"dataGaLocation":380},"/ja-jp/partners/technology-partners/aws/",{"text":398,"config":399},"GitLab on Google Cloud",{"href":400,"dataGaName":398,"dataGaLocation":380},"/ja-jp/partners/technology-partners/google-cloud-platform/",{"text":402,"config":403},"GitLabを選ぶ理由",{"href":91,"dataGaName":404,"dataGaLocation":380},"Why GitLab?",{"freeTrial":406,"mobileIcon":410,"desktopIcon":415,"secondaryButton":418},{"text":51,"config":407},{"href":408,"dataGaName":54,"dataGaLocation":409},"https://gitlab.com/-/trials/new/","nav",{"altText":411,"config":412},"GitLabアイコン",{"src":413,"dataGaName":414,"dataGaLocation":409},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":411,"config":416},{"src":417,"dataGaName":414,"dataGaLocation":409},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":203,"config":419},{"href":420,"dataGaName":421,"dataGaLocation":409},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp/get-started/","get started",{"freeTrial":423,"mobileIcon":427,"desktopIcon":429},{"text":424,"config":425},"GitLab Duoの詳細について",{"href":83,"dataGaName":426,"dataGaLocation":409},"gitlab duo",{"altText":411,"config":428},{"src":413,"dataGaName":414,"dataGaLocation":409},{"altText":411,"config":430},{"src":417,"dataGaName":414,"dataGaLocation":409},{"freeTrial":432,"mobileIcon":437,"desktopIcon":439},{"text":433,"config":434},"料金ページに戻る",{"href":191,"dataGaName":435,"dataGaLocation":409,"icon":436},"back to pricing","GoBack",{"altText":411,"config":438},{"src":413,"dataGaName":414,"dataGaLocation":409},{"altText":411,"config":440},{"src":417,"dataGaName":414,"dataGaLocation":409},{"title":442,"button":443,"config":448},"エージェント型AIがソフトウェア配信をどのように変革するかをご覧ください",{"text":444,"config":445},"GitLab Transcendを今すぐ視聴",{"href":446,"dataGaName":447,"dataGaLocation":49},"/ja-jp/events/transcend/virtual/","transcend event",{"layout":449,"icon":450,"disabled":32},"release","AiStar",{"data":452},{"text":453,"source":454,"edit":460,"contribute":465,"config":470,"items":475,"minimal":649},"GitはSoftware Freedom Conservancyの商標です。当社は「GitLab」をライセンスに基づいて使用しています",{"text":455,"config":456},"ページのソースを表示",{"href":457,"dataGaName":458,"dataGaLocation":459},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":461,"config":462},"このページを編集",{"href":463,"dataGaName":464,"dataGaLocation":459},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":466,"config":467},"ご協力をお願いします",{"href":468,"dataGaName":469,"dataGaLocation":459},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":471,"facebook":472,"youtube":473,"linkedin":474},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[476,499,553,583,618],{"title":67,"links":477,"subMenu":482},[478],{"text":479,"config":480},"DevSecOpsプラットフォーム",{"href":76,"dataGaName":481,"dataGaLocation":459},"devsecops platform",[483],{"title":189,"links":484},[485,489,494],{"text":486,"config":487},"プランの表示",{"href":191,"dataGaName":488,"dataGaLocation":459},"view plans",{"text":490,"config":491},"Premiumを選ぶ理由",{"href":492,"dataGaName":493,"dataGaLocation":459},"/ja-jp/pricing/premium/","why premium",{"text":495,"config":496},"Ultimateを選ぶ理由",{"href":497,"dataGaName":498,"dataGaLocation":459},"/ja-jp/pricing/ultimate/","why ultimate",{"title":500,"links":501},"ソリューション",[502,507,510,512,517,522,526,529,532,537,539,541,543,548],{"text":503,"config":504},"デジタルトランスフォーメーション",{"href":505,"dataGaName":506,"dataGaLocation":459},"/ja-jp/topics/digital-transformation/","digital transformation",{"text":508,"config":509},"セキュリティとコンプライアンス",{"href":131,"dataGaName":138,"dataGaLocation":459},{"text":123,"config":511},{"href":108,"dataGaName":109,"dataGaLocation":459},{"text":513,"config":514},"アジャイル開発",{"href":515,"dataGaName":516,"dataGaLocation":459},"/ja-jp/solutions/agile-delivery/","agile delivery",{"text":518,"config":519},"クラウドトランスフォーメーション",{"href":520,"dataGaName":521,"dataGaLocation":459},"/ja-jp/topics/cloud-native/","cloud transformation",{"text":523,"config":524},"SCM",{"href":120,"dataGaName":525,"dataGaLocation":459},"source code management",{"text":26,"config":527},{"href":113,"dataGaName":528,"dataGaLocation":459},"continuous integration & delivery",{"text":161,"config":530},{"href":163,"dataGaName":531,"dataGaLocation":459},"value stream management",{"text":533,"config":534},"GitOps",{"href":535,"dataGaName":536,"dataGaLocation":459},"/ja-jp/solutions/gitops/","gitops",{"text":174,"config":538},{"href":176,"dataGaName":177,"dataGaLocation":459},{"text":179,"config":540},{"href":181,"dataGaName":182,"dataGaLocation":459},{"text":184,"config":542},{"href":186,"dataGaName":187,"dataGaLocation":459},{"text":544,"config":545},"教育",{"href":546,"dataGaName":547,"dataGaLocation":459},"/ja-jp/solutions/education/","education",{"text":549,"config":550},"金融サービス",{"href":551,"dataGaName":552,"dataGaLocation":459},"/ja-jp/solutions/finance/","financial services",{"title":194,"links":554},[555,557,559,561,564,566,569,571,573,575,577,579,581],{"text":206,"config":556},{"href":208,"dataGaName":209,"dataGaLocation":459},{"text":211,"config":558},{"href":213,"dataGaName":214,"dataGaLocation":459},{"text":216,"config":560},{"href":218,"dataGaName":219,"dataGaLocation":459},{"text":221,"config":562},{"href":223,"dataGaName":563,"dataGaLocation":459},"docs",{"text":244,"config":565},{"href":246,"dataGaName":247},{"text":567,"config":568},"お客様の成功事例",{"href":241,"dataGaLocation":459},{"text":239,"config":570},{"href":241,"dataGaName":242,"dataGaLocation":459},{"text":249,"config":572},{"href":251,"dataGaName":252,"dataGaLocation":459},{"text":257,"config":574},{"href":259,"dataGaName":260,"dataGaLocation":459},{"text":262,"config":576},{"href":264,"dataGaName":265,"dataGaLocation":459},{"text":267,"config":578},{"href":269,"dataGaName":270,"dataGaLocation":459},{"text":272,"config":580},{"href":274,"dataGaName":275,"dataGaLocation":459},{"text":277,"config":582},{"href":279,"dataGaName":280,"dataGaLocation":459},{"title":584,"links":585},"Company",[586,588,590,592,594,596,598,602,607,609,611,613],{"text":302,"config":587},{"href":304,"dataGaName":297,"dataGaLocation":459},{"text":307,"config":589},{"href":309,"dataGaName":310,"dataGaLocation":459},{"text":315,"config":591},{"href":317,"dataGaName":318,"dataGaLocation":459},{"text":320,"config":593},{"href":322,"dataGaName":323,"dataGaLocation":459},{"text":325,"config":595},{"href":327,"dataGaName":328,"dataGaLocation":459},{"text":330,"config":597},{"href":332,"dataGaName":333,"dataGaLocation":459},{"text":599,"config":600},"Sustainability",{"href":601,"dataGaName":599,"dataGaLocation":459},"/sustainability/",{"text":603,"config":604},"ダイバーシティ、インクルージョン、ビロンギング（DIB）",{"href":605,"dataGaName":606,"dataGaLocation":459},"/ja-jp/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":335,"config":608},{"href":337,"dataGaName":338,"dataGaLocation":459},{"text":345,"config":610},{"href":347,"dataGaName":348,"dataGaLocation":459},{"text":350,"config":612},{"href":352,"dataGaName":353,"dataGaLocation":459},{"text":614,"config":615},"現代奴隷制の透明性に関する声明",{"href":616,"dataGaName":617,"dataGaLocation":459},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":56,"links":619},[620,622,627,629,634,639,644],{"text":56,"config":621},{"href":58,"dataGaName":59,"dataGaLocation":459},{"text":623,"config":624},"サポートを受ける",{"href":625,"dataGaName":626,"dataGaLocation":459},"https://support.gitlab.com/hc/en-us/articles/11626483177756-GitLab-Support","get help",{"text":368,"config":628},{"href":370,"dataGaName":371,"dataGaLocation":459},{"text":630,"config":631},"ステータス",{"href":632,"dataGaName":633,"dataGaLocation":459},"https://status.gitlab.com/","status",{"text":635,"config":636},"利用規約",{"href":637,"dataGaName":638,"dataGaLocation":459},"/terms/","terms of use",{"text":640,"config":641},"プライバシーに関する声明",{"href":642,"dataGaName":643,"dataGaLocation":459},"/ja-jp/privacy/","privacy statement",{"text":645,"config":646},"Cookieの設定",{"dataGaName":647,"dataGaLocation":459,"id":648,"isOneTrustButton":32},"cookie preferences","ot-sdk-btn",{"items":650},[651,653,655],{"text":635,"config":652},{"href":637,"dataGaName":638,"dataGaLocation":459},{"text":640,"config":654},{"href":642,"dataGaName":643,"dataGaLocation":459},{"text":645,"config":656},{"dataGaName":647,"dataGaLocation":459,"id":648,"isOneTrustButton":32},[658,671],{"id":659,"title":19,"body":9,"config":660,"content":662,"description":9,"extension":30,"meta":666,"navigation":32,"path":667,"seo":668,"stem":669,"__hash__":670},"blogAuthors/en-us/blog/authors/benjamin-skierlak.yml",{"template":661},"BlogAuthor",{"name":19,"config":663},{"headshot":664,"ctfId":665},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659471/Blog/Author%20Headshots/Benjamin_Skierlak_headshot.png","Kzp6pkUjPORYYMoeLFPRf",{},"/en-us/blog/authors/benjamin-skierlak",{},"en-us/blog/authors/benjamin-skierlak","RbLU9KGFtah9Juo58JyxfHHYNIU4fyzzOUb5p7-fubo",{"id":672,"title":20,"body":9,"config":673,"content":674,"description":9,"extension":30,"meta":678,"navigation":32,"path":679,"seo":680,"stem":681,"__hash__":682},"blogAuthors/en-us/blog/authors/james-wormwell.yml",{"template":661},{"name":20,"config":675},{"headshot":676,"ctfId":677},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659474/Blog/Author%20Headshots/james_wormwell_headshot.png","CPPijHb0Op5C5aVcvsOEf",{},"/en-us/blog/authors/james-wormwell",{},"en-us/blog/authors/james-wormwell","n6G4XENUWxgqOdCgfG0ECu0Uqj7qOS9zr3Rl8ouF49M",[684,699,710],{"content":685,"config":697},{"heroImage":686,"body":687,"authors":688,"updatedDate":690,"date":691,"title":692,"tags":693,"description":696,"category":10},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1776259080/cakqnwo5ecp255lo8lzo.png","本ブログは、[GitLab 18.11 release notes](https://docs.gitlab.com/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\nKnown Exploited Vulnerability（KEV）およびExploit Prediction Scoring System（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\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/)",[689],"GitLab Japan Team","2026-04-17","2026-04-16","GitLab 18.11リリース",[694,695,10,26],"releases","AI/ML","GitLab 18.11でリリースした最新機能を公開します。",{"featured":13,"template":14,"slug":698},"gitlab-18-11-release",{"content":700,"config":708},{"heroImage":686,"body":701,"authors":702,"updatedDate":690,"date":691,"title":704,"tags":705,"description":707,"category":10},"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/)。",[703],"Bryan Rothwell","GitLab 18.11: GitLabクレジットの予算管理機能",[10,695,706],"news","GitLab 18.11で新たに導入された支出上限とユーザーごとのクレジット上限により、組織はGitLab Duo Agent Platformを安心してスケールできる予算ガードレールを手に入れます。AIへの支出を予測可能に保ちながら、より多くのチームへの展開を実現します。",{"featured":13,"template":14,"slug":709},"gitlab-18-11-budget-guardrails-for-gitlab-credits",{"content":711,"config":718},{"heroImage":686,"body":712,"authors":713,"updatedDate":690,"date":691,"title":715,"tags":716,"description":717,"category":10},"AIが生成するコードは、それを取り巻く仕組みが追いつけないほどのスピードで増え続けています。 コードが増えれば、レビュー待ちのマージリクエストが積み重なり、設定すべきパイプラインが増え、デリバリーの状況について誰も答える時間がないまま疑問だけが蓄積されていきます。 そして、現在チームが使っているほとんどのツールは、このペースに対応できるように設計されていません。\n\nGitLab 18.11では、AIがほとんど手をつけてこなかった開発ライフサイクルの特定のギャップに対処するため、Duo Agent Platform向けの2つの新しい基盤エージェントが登場します。\n* CI エキスパートエージェント（ベータ版）は、コードを書き終えてから実際にパイプラインを動かすまでの間に生じるギャップを解消します。\n* データアナリストエージェント（一般提供開始）は、コードをリリースした後、そのデリバリーの実態を把握しようとする際に生じるギャップを解消します。\n\n\nこれらは、汎用アシスタントでは解決できない課題領域です。GitLabの外で動くツールでも、YAMLファイルを生成したり質問に答えたりすることはできます。しかし、これまでのパイプラインのパフォーマンス、障害が集中する箇所、実際のMRサイクルタイムといったコンテキストは持ち合わせていません。そうしたコンテキストはGitLabの中にあります。これらのエージェントも同様です。\n## CI エキスパートエージェントで素早くCIをセットアップ\n\nAIによってコードを書くこと自体はこれまでになく簡単になりました。しかし、そのコードを実際に動くパイプラインに乗せるまでのプロセスは、多くのチームにとって数日、あるいは数週間後の課題として残ったまま—もしくは永遠に後回しにされています。空白のページという問題は、エディターの中にはもうありません。今や `.gitlab-ci.yml` の中にあります。\n\nCI設定の経験がない開発者は、YAMLでの言語検出の書き方も、適切なテストコマンドの指定方法も、プッシュ前に結果を検証する手順も知りません。チームは過去のプロジェクトから設定をコピーしてくるか（それが今の状況に合っていなくても）、ドキュメントをつなぎ合わせるか、以前に経験したことのある一人の担当者を待つしかない状況になりがちです。その担当者が不在であれば、CIは「後でやる」課題になります。そして「後で」は「永遠にやらない」になります。\n\nCIが実装されないまま放置されると、その影響はあらゆる場所に現れます。変更は信頼性のある安全網なしにリリースされ、リグレッションはパイプラインではなく本番環境で発覚し、誰も「ビルドを壊した人」と呼ばれたくないために変更が大きく危険なバッチへと膨らんでいきます。やがてチームは暗闇の中で作業することを当然のこととして受け入れるようになり、ドキュメント化されていないノウハウや場当たり的なテストに頼るようになります。すべての変更に組み込まれた、速くて予測可能なフィードバックループとはほど遠い状態です。\n\nベータ版として提供開始となったCI エキスパートエージェントは、そうした摩擦を取り除きます。リポジトリを検査し、使用言語とフレームワークを特定した上で、実際の構成に合わせたビルドとテストのパイプラインを提案—そして Agentic Chat上でわかりやすい言葉で各判断の理由を説明します。目標は、手でYAMLを書くことなく、数分でパイプラインを稼働させることです。\n\nCI エキスパートエージェントの機能：\n\n* リポジトリを認識したパイプライン生成：言語、フレームワーク、テスト設定を自動検出\n* 有効で実行可能なビルド・テスト設定を生成\n* Agentic Chat上で各ステップをわかりやすく説明する、初めてのパイプライン構築ガイド付きフロー\n* 設定の変換なしに使えるネイティブのGitLab CI セマンティクス\n\nGitLabの内部で動作し、実際のパイプラインの動作履歴にアクセスできるため、改善のたびにチームの実際の作業パターンを学習し、静的なサンプルだけに頼ることがありません。\n\u003Ciframe src=\"https://player.vimeo.com/video/1183458036?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=\"CI/CD Expert Agent\">\u003C/iframe>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\u003Cbr>\u003C/br>\n\nCI エキスパートエージェントは、Duo Agent Platformが有効な環境において、GitLab.com、セルフマネージド、Dedicatedのいずれでも、Free、Premium、Ultimateの各エディションでご利用いただけます。\n\n## データアナリストエージェントで自然言語によるGitLab データのクエリを実現\n\nAIはチームのリリーススピードを上げました。しかし、その作業の進捗状況に関する基本的な疑問への回答は、以前よりもむしろ難しくなっています。\n\nMRはレビューにどれくらい滞留しているか？どのパイプラインがチームの足を引っ張っているか？デプロイ目標は実際に達成されているか？かつてはダッシュボードをちらりと見るだけで答えられた問いです。しかし今や、コードもチームも複雑さも増した結果、データはGitLabの中に存在するにもかかわらず、アクセスするにはアナリティクスチームへの依頼、ダッシュボードリクエストの提出、あるいはGLQLの習得が必要になっています。\n\nデータアナリストエージェントはそのギャップを解消します。自然言語で質問するだけで、Agentic Chat上に即座に可視化された回答が返ってきます。クエリ言語も不要、ダッシュボードのリクエスト提出も不要、誰かが回答をまとめるまで待つことも不要です。\n\n例えば、このエージェントは以下のようなロールに対して、次のようなトピックに関する問いに回答できます。\n\n* エンジニアリングマネージャー：MRサイクルタイム、プロジェクト別スループット、レビューが止まる箇所\n* 開発者：コントリビューションパターン、自分のMRをブロックしているフラッキーテスト、パイプラインのスピードトレンド\n* DevOpsおよびプラットフォームエンジニア：パイプラインの成功/失敗率、ランナーの使用率、デプロイ頻度\n* エンジニアリングリーダーシップ：ポートフォリオ横断のデプロイ頻度、プロジェクトの健全性メトリクス、リードタイムの比較\n\n18.11で一般提供開始となったこのエージェントは、MR、課題、プロジェクト、パイプライン、ジョブをカバーし、ベータ版から対象範囲が拡大してソフトウェア開発ライフサイクル全体をカバーします。データアナリストエージェントはGitLabの既存データに対してクエリを実行するため、コンテキストは常に最新の状態に保たれ、メンテナンスが必要な外部パイプラインや同期を維持すべきサードパーティツールも不要です。生成されたGitLab Query Language（GLQL）クエリはコピーしてGitLab Flavored Markdownがサポートされる場所ならどこでも使用でき、ワークアイテムやダッシュボードへの直接エクスポートもロードマップに予定されています。\n\n\u003Ciframe src=\"https://player.vimeo.com/video/1183094817?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=\"Data Analyst agent demo\">\u003C/iframe>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\u003Cbr>\u003C/br>\n\nデータアナリストエージェントは、Duo Agent Platformが有効な環境において、GitLab.com、セルフマネージド、DedicatedのいずれでもFree、Premium、Ultimateの各エディションでご利用いただけます。\n\n## 1つのプラットフォーム、つながったコンテキスト\n\n両エージェントはGitLabの内部で動作し、すでにそこにあるコード、パイプライン、課題、マージリクエストへのアクセスを持ちます。それが、プラットフォームネイティブのAIと切り離されたアシスタントとの違いです。コンテキストは常に最新に保たれ、使えば使うほど有用性が増していきます。CI エキスパートエージェントとデータアナリストエージェントは、AIがコードを速く書く手助けをするだけでなく、作り上げたものを理解し、リリースし、維持するためのプラットフォームに向けた、具体的な2つの前進を体現しています。\n\n> [GitLab Duo Agent Platformの無料トライアルを開始](https://about.gitlab.com/ja-jp/gitlab-duo/)して、これらの基盤AIエージェントをぜひ体験してください。",[714],"Corinne Dent","GitLab 18.11：CI エキスパートとデータアナリストAIエージェントで開発ギャップを解消",[695,27,10],"GitLab 18.11で新たに追加されたGitLab Duo Agent Platformの2つの基盤エージェントを使って、CIのセットアップとソフトウェア開発ライフサイクルデータのクエリを実行できます。",{"featured":32,"template":14,"slug":719},"ci-expert-and-data-analyst-ai-agents-target-development-gaps",{"promotions":721},[722,736,748,760],{"id":723,"categories":724,"header":726,"text":727,"button":728,"image":733},"ai-modernization",[725],"ai-ml","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":729,"config":730},"Get your AI maturity score",{"href":731,"dataGaName":732,"dataGaLocation":247},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":734},{"src":735},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":737,"categories":738,"header":740,"text":727,"button":741,"image":745},"devops-modernization",[10,739],"devsecops","Are you just managing tools or shipping innovation?",{"text":742,"config":743},"Get your DevOps maturity score",{"href":744,"dataGaName":732,"dataGaLocation":247},"/assessments/devops-modernization-assessment/",{"config":746},{"src":747},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":749,"categories":750,"header":752,"text":727,"button":753,"image":757},"security-modernization",[751],"security","Are you trading speed for security?",{"text":754,"config":755},"Get your security maturity score",{"href":756,"dataGaName":732,"dataGaLocation":247},"/assessments/security-modernization-assessment/",{"config":758},{"src":759},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":761,"paths":762,"header":765,"text":766,"button":767,"image":772},"github-azure-migration",[763,764],"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":768,"config":769},"See how GitLab compares to GitHub",{"href":770,"dataGaName":771,"dataGaLocation":247},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":773},{"src":747},{"header":775,"blurb":776,"button":777,"secondaryButton":781},"今すぐ開発をスピードアップ","DevSecOpsに特化したインテリジェントオーケストレーションプラットフォームで実現できることをご確認ください。\n",{"text":51,"config":778},{"href":779,"dataGaName":54,"dataGaLocation":780},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/ja-jp/","feature",{"text":56,"config":782},{"href":58,"dataGaName":59,"dataGaLocation":780},1776450000469]