[{"data":1,"prerenderedAt":772},["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,"assessment-promotions-ja-jp":723,"next-steps-ja-jp":763},{"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,711],{"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/v1773814604/bqvflb3b9f5crqfbx5jz.png","本ブログは、[GitLab 18.10 Release](https://about.gitlab.com/releases/2026/03/19/gitlab-18-10-released/)の抄訳です。内容に相違がある場合は、原文が優先されます。\n\n# GitLab 18.10リリース\n\n## エージェント型SASTの誤検出判定機能とFreeでのクレジット購入に対応したGitLab 18.10をリリース\n\nこのたび、SASTの誤検出判定（GitLab Duo Agent Platform対応）、Freeでのクレジット購入、パスキーによる安全なサインイン、作業アイテムリストと保存済みビューなど、さまざまな新機能を搭載したGitLab 18.10のリリースを発表しました。\n\nこれらの機能は、今回のリリースに含まれる60件以上の改善点のほんの一部です。以下で、すべてのアップデートをご確認ください。\n\nGitLabコミュニティの皆さまからは、GitLab 18.10に対して212件ものコントリビュートをいただきました。GitLabでは[誰でもコントリビュート可能](https://about.gitlab.com/community/contribute/)です。皆さまのご協力に心より感謝いたします。\n\n来月のリリース予定については、[What's newページ](https://about.gitlab.com/releases/whats-new/)をご覧ください。\n\n- - -\n\n![notable-contributor-logo](https://about.gitlab.com/images/notable-contributor-logo.svg)\n\n## Notable Contributor（注目のコントリビューター）\n\n今月の[Notable Contributor](https://contributors.gitlab.com/docs/notable-contributors)は、[Harshith Sudar](https://gitlab.com/official.harshith1)さんです。\n\nHarshithさんは現在レベル3のコントリビューターであり、コミュニティツールやアナリティクスの改善に大きくコントリビュートしています。トリアージの自動化、コントリビューター表彰機能から[GitLab Duo](https://about.gitlab.com/gitlab-duo/)の使用状況インサイトまで、幅広い領域でインパクトのあるコントリビュートを続けています。\n\nHarshithさんのコントリビュートは、GitLabのDevRelエンジニアリング部門のフルスタックエンジニアである[Lee Tickett](https://gitlab.com/leetickett-gitlab)氏が最初に認め、推薦しました。Harshithさんの取り組みは、自動化やコントリビューター向けエクスペリエンスの改善を通じて、舞台裏からコントリビューターを支える仕組みを強化しています。例えば、triage-opsの`IssueSummary`プロセッサーを[複数プロジェクトに対応させるよう更新](https://gitlab.com/gitlab-org/quality/triage-ops/-/merge_requests/3589)し、[contributors.gitlab.com](https://contributors.gitlab.com)を含むコミュニティプロジェクト全体のサマリー作成と可視化を容易にしました。また、[新しい「コンテンツ追加」ボタンとフロー](https://gitlab.com/gitlab-org/developer-relations/contributor-success/contributors-gitlab-com/-/merge_requests/1250)の実装により、コントリビューターが自身のプロフィールからブログ記事、動画、その他のコンテンツを直接登録し、リワードを獲得できるようになりました。\n\nさらに、アナリティクスやGitLab Duoの使用状況インサイトにもコントリビュートしています。主な成果として、[GitLab Duoの使用量算出方法の改善](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/207511)、[180日間のデフォルト制限の撤廃](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/218870)によるAIの長期的な影響分析の改善、[DORAメトリクスの日付範囲定数の統合](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/216715)、そして[バリューストリームアナリティクスのカスタムステージラベルピッカーへの無限スクロール追加](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/207796)によるスケーラブルなアナリティクス体験の向上があります。これらの変更により、チームは実際のプロジェクトにおけるGitLabの活用状況をより深く理解できるようになりました。\n\nHarshithさんのコメント：\n\n> 「コントリビュート活動を通じて特に楽しんでいるのは、コミュニティ内でアイデアが丁寧に議論されるプロセスです。[MR !1288](https://gitlab.com/gitlab-org/developer-relations/contributor-success/contributors-gitlab-com/-/merge_requests/1288)に関するディスカッションのように、提案が協力的に検討される様子は大変励みになり、素晴らしい学習体験にもなりました。このコミュニティの一員であることを嬉しく思っており、今後もさらに多くのコントリビュートを続けていきたいと考えています。」\n\nHarshithさん、GitLabのコードベースとコントリビューターエクスペリエンスの向上へのご尽力、ありがとうございます。\n\nHarshithさんとつながり、コントリビュートの詳細を知りたい方は、[GitLabプロフィール](https://gitlab.com/official.harshith1)および[LinkedInプロフィール](https://www.linkedin.com/in/harshith-s-a44169282/)をご覧ください。\n\n- - -\n\n## GitLab 18.10の主な改善点\n\n## SASTの誤検出判定（GitLab Duo Agent Platform対応）\n\n> GitLab.com: Ultimate、Duo Core、Duo Pro、Duo Enterprise\\\n> Self-Managed: Ultimate、Duo Core、Duo Pro、Duo Enterprise\\\n> GitLab Dedicated: Ultimate、Duo Core、Duo Pro、Duo Enterprise\n\nGitLab 18.7でベータ版として導入されたSASTの誤検出判定機能が、GitLab 18.10で一般提供開始となりました。\n\nセキュリティスキャンの実行時に、GitLab Duo Agent Platformが重大度「致命的」および「高」のSAST脆弱性を自動分析し、誤検出の可能性を判定します。評価結果は脆弱性レポートに直接表示されるため、チームは不確実性に悩まされることなく、的確なトリアージを行えます。\n\n主な機能は以下のとおりです。\n\n* **自動分析**: セキュリティスキャンのたびに、手動操作なしで誤検出判定が自動実行されます。\n* **手動実行オプション**: 脆弱性の詳細ページから、個別の脆弱性に対してオンデマンドで誤検出判定を手動実行することも可能です。\n* **重大な検出結果に集中**: 「致命的」と「高」の重大度のSAST脆弱性に限定して分析を行うことで、最も重要な部分のノイズを効果的に削減します。\n* **コンテキストを踏まえたAI推論**: 各評価では、コードのコンテキスト、データフロー、静的解析に特有の脆弱性特性を考慮し、検出結果が誤検出である可能性がある理由（または実際の脆弱性である理由）を説明します。\n* **既存ワークフローとのシームレスな統合**: 結果は脆弱性レポート上で、既存の重大度、ステータス、修正情報と一緒に表示されるため、既存のワークフローを変更する必要はありません。\n\nこの機能は、GitLab Duo Agent Platformが有効なUltimateのお客様がご利用いただけます。グループまたはプロジェクトの設定で機能を有効にする必要があります。フィードバックは[イシュー583697](https://gitlab.com/gitlab-org/gitlab/-/issues/583697)からお寄せください。\n\n[ドキュメント](https://docs.gitlab.com/user/application_security/vulnerabilities/false_positive_detection) | [エピック](https://gitlab.com/groups/gitlab-org/-/work_items/19789)\n\n![SASTの誤検出判定（GitLab Duo Agent Platform対応）](https://about.gitlab.com/images/18_10/sast-false-positive-detection.png)\n\n- - -\n\n## Freeでの GitLabクレジット購入（GitLab.com）\n\n> GitLab.com: Free、GitLab Credits\n\nGitLab.comのFreeグループのオーナーは、GitLabクレジットを購入してAI機能を利用できるようになりました。月額のクレジット購入量を設定し、年間契約にコミットすることで、[GitLab Duo Agent Platformのエージェントとフロー](https://docs.gitlab.com/subscriptions/gitlab_credits/#for-the-free-tier-on-gitlabcom)にアクセスできます。クレジットは毎月自動的に更新されるため、チームは常に必要なリソースを確保し、より速く、よりスマートに開発を進められます。\n\n主なポイントは以下のとおりです。\n\n* **使用量ベースの料金体系**: ベースプランのサブスクリプションなしで、月額のクレジットコミットメントを購入可能です。\n* **セルフサービスでの購入**: GitLabの購入フローからクレジットを直接購入できます。\n* **シームレスなアップグレードパス**: PremiumまたはUltimateに後からアップグレードした場合も、クレジットのコミットメントは引き継がれます。\n* **使用状況の追跡**: GitLabクレジットダッシュボードからクレジットの使用状況を確認できます。\n\nこの[購入オプション](https://docs.gitlab.com/subscriptions/gitlab_credits/?tab=GitLab.com#buy-gitlab-credits)は、現在GitLab.comのFreeトップレベルグループのみで利用可能です。\n\n[ドキュメント](https://docs.gitlab.com/subscriptions/gitlab_credits/#for-the-free-tier-on-gitlabcom) | [エピック](https://gitlab.com/groups/gitlab-org/-/work_items/20165)\n\n![Freeでの GitLabクレジット購入（GitLab.com）](https://about.gitlab.com/images/18_10/Free_Credits_Purchase_Image.png)\n\n- - -\n\n## パスキーによる安全なサインイン\n\n> GitLab.com: Free、Premium、Ultimate\\\n> Self-Managed: Free、Premium、Ultimate\\\n> GitLab Dedicated: Ultimate\\\n> GitLab Dedicated for Government: Ultimate\n\nGitLabがパスワードレスサインインおよびフィッシング耐性のある2要素認証（2FA）方式としてパスキーに対応しました。パスキーは公開鍵暗号方式と生体認証（指紋、顔認証）またはデバイスのPINを使用して、アカウントに安全にアクセスする仕組みです。\n\nパスキーの主なメリットは以下のとおりです。\n\n* **パスワード不要の利便性**: パスワードを覚える必要なく、デバイスの生体認証やPINでサインインできます。\n* **マルチデバイス対応**: デスクトップブラウザー、モバイルデバイス（iOS 16以降、Android 9以降）、FIDO2/WebAuthn対応のハードウェアセキュリティキーでパスキーを利用できます。\n* **フィッシング耐性のあるセキュリティ**: 秘密鍵はデバイスの外に出ることはありません。GitLabは公開鍵のみを保存するため、万が一GitLabサーバーが侵害された場合でもアカウントは保護されます。\n* **自動2FA統合**: 2FAが有効なアカウントでは、パスキーがデフォルトの2FA方式として自動的に利用可能になります。\n\nパスキーの利用を開始するには、アカウント設定からパスキーを追加してください。ご質問やフィードバックは[イシュー366758](https://gitlab.com/gitlab-org/gitlab/-/work_items/366758)からお寄せください。\n\n[ドキュメント](https://docs.gitlab.com/auth/passkeys/) | [エピック](https://gitlab.com/groups/gitlab-org/-/work_items/10897)\n\n\u003Ciframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/LN5MGRdTHR8?si=F0mcUAbEg0-dEYWu\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen>\u003C/iframe>\n\n- - -\n\n## 作業アイテムリストと保存済みビューの導入\n\n> GitLab.com: Free、Premium、Ultimate\\\n> Self-Managed: Free、Premium、Ultimate\\\n> GitLab Dedicated: Ultimate\\\n> GitLab Dedicated for Government: Ultimate\n\nGitLabのプランニング体験が、作業アイテムリストと保存済みビューにより大幅にアップグレードされます。長らくご要望いただいていた2つの機能をまとめてお届けします。\n\n* **作業アイテムリスト**は、エピック、イシュー、その他の作業アイテムを1つの統合されたリストにまとめ、作業アイテムの種類ごとに別々のページを切り替える必要をなくします。プランニングオブジェクト間の関係がより把握しやすくなります。\n* **保存済みビュー**では、フィルター、ソート順、表示オプションを含むカスタマイズされたリスト構成を作成・保存できます。定期的な確認作業が効率化され、チーム全体での標準的な表示方法を確立できます。\n\nこれは、GitLab作業アイテムの統一アーキテクチャに向けた次のステップであり、GitLabのプランニングツール全体での一貫性と新しい機能の実現を目指しています。\n\nご意見・フィードバックは[イシュー590689](https://gitlab.com/gitlab-org/gitlab/-/work_items/590689)からお寄せください。\n\n[ドキュメント](https://docs.gitlab.com/user/work_items/) | [エピック](https://gitlab.com/groups/gitlab-org/-/work_items/17530)\n\n![作業アイテムリストと保存済みビュー](https://about.gitlab.com/images/18_10/work_items_list_and_saved_views.png)\n\n- - -\n\n## カスタムエージェントがMCPで外部データにアクセス可能に\n\n> GitLab.com: Premium、Ultimate\n\nAIカタログのカスタムエージェントを、Model Context Protocol（MCP）を通じて外部のデータソースやツールに接続できるようになりました。GitLabの外に出ることなく統合が可能です。\n\nこれは実験的機能です。フィードバックは[イシュー593219](https://gitlab.com/gitlab-org/gitlab/-/work_items/593219)からお寄せください。\n\n[ドキュメント](https://docs.gitlab.com/user/gitlab_duo/model_context_protocol/ai_catalog_mcp_servers/) | [イシュー](https://gitlab.com/gitlab-org/gitlab/-/work_items/590708)\n\n![カスタムエージェントがMCPで外部データにアクセス可能に](https://about.gitlab.com/images/18_10/enable_custom_agents_to_access_external_data_via_mcp.png)\n\n- - -\n\n## 正規表現によるマージリクエストのタイトル命名規則の適用\n\n> GitLab.com: Premium、Ultimate\\\n> Self-Managed: Premium、Ultimate\\\n> GitLab Dedicated: Ultimate\\\n> GitLab Dedicated for Government: Ultimate\n\n一貫性のあるマージリクエストのタイトルを維持することは、Conventional Commitsフォーマットや社内トラッキングシステムとの連携など、構造化された命名規則に依存しているチームにとって重要です。従来、こうした規則を適用するには外部ツールやカスタムCI/CDパイプラインジョブが必要でしたが、パイプライン実行後にマージリクエストのタイトルが変更された場合に再検証が行われず、非準拠のタイトルのままマージされてしまうという課題がありました。\n\nプロジェクト設定でマージリクエストの必須タイトル正規表現を設定できるようになりました。設定後、GitLabはマージ可能性チェックとしてマージリクエストのタイトルをパターンに照合します。タイトルが準拠するまでマージがブロックされ、タイトルの最終変更時点にかかわらず常に検証が実施されます。\n\n設定するには、プロジェクトの**設定 > マージリクエスト**に移動し、**Title must match required pattern**（タイトルは正規表現に一致する必要があります）フィールドに正規表現パターンを入力してください。\n\n既存のマージリクエストワークフローはこれまでどおり動作します。このチェックは、タイトル正規表現を明示的に設定したプロジェクトにのみ適用されます。\n\n[ドキュメント](https://docs.gitlab.com/user/project/merge_requests/title_validation/) | [エピック](https://gitlab.com/groups/gitlab-org/-/work_items/20108)\n\n![正規表現によるマージリクエストのタイトル命名規則の適用](https://about.gitlab.com/images/18_10/create-enforce-mr-title-naming-convention.png)\n\n- - -\n\n## AIによるシークレット誤検出判定（ベータ版）\n\n> GitLab.com: Ultimate、Duo Core、Duo Pro、Duo Enterprise\\\n> Self-Managed: Ultimate、Duo Core、Duo Pro、Duo Enterprise\\\n> GitLab Dedicated: Ultimate、Duo Core、Duo Pro、Duo Enterprise\n\nセキュリティチームは、テスト用クレデンシャル、サンプル値、プレースホルダートークンなど、実際のシークレットではないにもかかわらず誤って検出されるシークレット検出の誤検出の調査に多大な時間を費やしています。誤検出はアラート疲れを引き起こし、スキャン結果への信頼を損ない、本当のセキュリティリスクから注意をそらします。\n\nGitLab 18.10では、AIを活用したシークレット誤検出判定（ベータ版）を導入し、本当に重要なシークレットに集中できるようにしました。セキュリティスキャンの実行時に、GitLab Duoが重大度「致命的」および「高」のシークレット検出の脆弱性を自動分析し、誤検出かどうかを判定します。\n\nAIによる評価結果は脆弱性レポートに直接表示され、セキュリティエンジニアは即座にコンテキストを把握し、より迅速で確信を持ったトリアージを行えます。\n\n主な機能は以下のとおりです。\n\n* **自動分析**: セキュリティスキャンのたびに、手動トリガーなしで誤検出判定が自動実行されます。\n* **手動トリガーオプション**: 脆弱性の詳細ページから、個別の脆弱性に対してオンデマンドで誤検出判定を手動トリガーすることも可能です。\n* **重大な検出結果に集中**: 「致命的」と「高」の重大度の脆弱性に限定し、シグナル対ノイズ比を最大化します。\n* **コンテキストを踏まえたAI推論**: 各評価には、コードのコンテキストと脆弱性の特性に基づき、検出結果が真のポジティブである可能性がある理由（またはない理由）の説明が含まれます。\n* **信頼度スコア**: 各検知には信頼度スコアが付与され、モデルの確信度に基づいてレビューの優先順位付けが可能です。\n* **既存ワークフローとのシームレスな統合**: 結果は脆弱性レポート上で、既存の重大度、ステータス、修正情報と一緒に表示されます。\n\nこの機能は、Ultimateのお客様に無料ベータとしてご利用いただけます。グループまたはプロジェクトの設定で有効にする必要があります。フィードバックは[イシュー592861](https://gitlab.com/gitlab-org/gitlab/-/work_items/592861)からお寄せください。\n\n[ドキュメント](https://docs.gitlab.com/user/application_security/vulnerabilities/secret_false_positive_detection/) | [エピック](https://gitlab.com/groups/gitlab-org/-/work_items/20152)\n\n![AIによるシークレット誤検出判定（ベータ版）](https://about.gitlab.com/images/18_10/secret-false-positive-detection.png)\n\n- - -\n\n## CI/CDジョブでのランタイムインプットの使用\n\n> GitLab.com: Free、Premium、Ultimate\\\n> Self-Managed: Free、Premium、Ultimate\\\n> GitLab Dedicated: Ultimate\\\n> GitLab Dedicated for Government: Ultimate\n\nCI/CD変数を使用した動的なジョブ設定には課題がありました。変数は複雑なオーバーライド階層に従うため管理が難しく、さまざまなユースケースに対応できない場合がありました。\n\nジョブレベルで明示的な型付きインプットを定義する`inputs`が利用可能になりました。ジョブインプットを使用して、ジョブがランタイムで受け入れる値を定義・制御できます。ジョブインプットでは以下が可能です。\n\n* 型安全性（string、number、boolean、array）\n* 静的な値または既存の変数を参照するデフォルト値\n* 使用可能な値の厳密なリストの定義\n* インプット値を検証するための正規表現のサポート\n\nジョブインプットは、ユーザーの操作なしにデフォルト値を使用できますが、ジョブのリトライ時や手動ジョブの実行時に値を変更することも可能です。\n\n[ドキュメント](https://docs.gitlab.com/ci/jobs/job_inputs/) | [エピック](https://gitlab.com/groups/gitlab-org/-/epics/17833)\n\n- - -\n\n## GitLab 18.10のその他の改善点\n\n### Markdownテーブルでのタスクアイテムのサポート\n\n> GitLab.com: Free、Premium、Ultimate\\\n> Self-Managed: Free、Premium、Ultimate\\\n> GitLab Dedicated: Ultimate\\\n> GitLab Dedicated for Government: Ultimate\n\nMarkdownのテーブルセル内でタスクアイテムのチェックボックス構文を直接使用できるようになりました。\n\n従来、これを実現するにはHTMLとMarkdownの組み合わせが必要で、保守が困難でした。\n\nこの改善により、イシュー、エピック、その他のコンテンツ内の構造化されたテーブルレイアウトで、タスクの完了状況を直接追跡しやすくなりました。\n\n[ドキュメント](https://docs.gitlab.com/user/markdown/#task-lists-in-tables) | [イシュー](https://gitlab.com/gitlab-org/gitlab/-/work_items/21506)\n\n- - -\n\n### macOS Tahoe 26およびXcode 26ジョブイメージ\n\n> GitLab.com: Premium、Ultimate\n\nmacOS Tahoe 26とXcode 26を使用して、最新世代のAppleデバイス向けアプリケーションの作成、テスト、デプロイが可能になりました。\n\n[macOSのホステッドRunner](https://docs.gitlab.com/ci/runners/hosted_runners/macos/)を利用することで、開発チームはGitLab CI/CDに統合された安全なオンデマンドビルド環境で、macOSアプリケーションをより迅速にビルド・デプロイできます。\n\n`.gitlab-ci.yml`ファイルで`macos-26-xcode-26`イメージを指定して、ぜひお試しください。\n\n[ドキュメント](https://docs.gitlab.com/ci/runners/hosted_runners/macos/) | [エピック](https://gitlab.com/groups/gitlab-com/gl-infra/-/work_items/1694)\n\n- - -\n\n### GitLab Helmチャートレジストリが一般提供を開始\n\n> GitLab.com: Free、Premium、Ultimate\\\n> Self-Managed: Free、Premium、Ultimate\\\n> GitLab Dedicated: Ultimate\\\n> GitLab Dedicated for Government: Ultimate\n\nHelmを使用してKubernetesアプリケーションのデプロイを管理しているチームは、GitLab Helmチャートレジストリを本番ワークロードに活用できるようになりました。ベータ版として提供されていたこのレジストリが、主要なアーキテクチャおよび信頼性の問題が解決されたことで、一般提供開始となりました。\n\n一般提供に向けた主な改善として、1,000件を超えるチャートの`index.yaml`エンドポイントの制限の解消、新しく公開されたチャートバージョンがインデックスに反映されないバックグラウンドインデックスのバグ修正、AppSecセキュリティレビューの完了、GitLab Geoを使用したセルフマネージドのお客様向けの高可用性を確保するHelmメタデータキャッシュのGeoレプリケーションサポートの追加が含まれます。\n\nプラットフォームチームおよびDevOpsチームは、パーソナルアクセストークン、デプロイトークン、CI/CDジョブトークンによる認証をサポートした標準的なHelmクライアントワークフローを使用して、HelmチャートをGitLabから直接公開・インストールできます。ソースコード、パイプライン、セキュリティスキャンとともにチャートを一元管理できるようになりました。\n\n[ドキュメント](https://docs.gitlab.com/user/packages/helm_repository/) | [イシュー](https://gitlab.com/gitlab-org/gitlab/-/work_items/573715)\n\n- - -\n\n### SBOMベースの依存関係スキャンでJava Gradleビルドファイルに対応\n\n> GitLab.com: Ultimate\\\n> Self-Managed: Ultimate\\\n> GitLab Dedicated: Ultimate\\\n> GitLab Dedicated for Government: Ultimate\n\nSBOMを使用したGitLabの依存関係スキャンが、Javaの`build.gradle`および`build.gradle.kts`ビルドファイルのスキャンに対応しました。\n\n従来、Gradleを使用したJavaプロジェクトの依存関係スキャンにはロックファイルが必要でした。今回のリリースでは、ロックファイルが存在しない場合、アナライザーが自動的に`build.gradle`および`build.gradle.kts`ファイルのスキャンにフォールバックし、脆弱性分析のために直接的な依存関係のみを抽出・レポートします。この改善により、Gradleを使用するJavaプロジェクトでロックファイルなしでも依存関係スキャンを容易に有効化できます。\n\nマニフェストフォールバックを有効にするには、CI/CD変数`DS_ENABLE_MANIFEST_FALLBACK`を`\"true\"`に設定してください。\n\n[ドキュメント](https://docs.gitlab.com/user/application_security/dependency_scanning/dependency_scanning_sbom/#manifest-fallback) | [イシュー](https://gitlab.com/gitlab-org/gitlab/-/work_items/588788)\n\n- - -\n\n### Pubパッケージマネージャーを使用したDart/Flutterプロジェクトのライセンススキャン対応\n\n> GitLab.com: Ultimate\\\n> Self-Managed: Ultimate\\\n> GitLab Dedicated: Ultimate\\\n> GitLab Dedicated for Government: Ultimate\n\n`pub`パッケージマネージャーを使用したDartおよびFlutterプロジェクトのライセンススキャンに対応しました。従来、DartまたはFlutterで開発するチームは、オープンソース依存関係のライセンスをGitLab内で直接特定することができず、ライセンスポリシー要件を持つ組織にとってコンプライアンスの盲点となっていました。\n\nライセンスデータは、Dartの公式パッケージリポジトリである[pub.dev](https://pub.dev)から直接取得され、他のサポートされているエコシステムとともに結果が表示されます。Dart/Flutterの依存関係スキャンと脆弱性検出は、すでにサポートされています。\n\n[ドキュメント](https://docs.gitlab.com/user/compliance/license_scanning_of_cyclonedx_files/#data-sources) | [エピック](https://gitlab.com/groups/gitlab-org/-/work_items/18351)\n\n- - -\n\n### クレジット使用データのCSVダウンロード\n\n> GitLab.com: Premium、Ultimate\\\n> Self-Managed: Premium、Ultimate\\\n> GitLab Dedicated: Ultimate\\\n> GitLab Dedicated for Government: Ultimate\n\n請求管理者は、Customers PortalのGitLabクレジットダッシュボードからクレジットの使用データをCSVファイルとして直接ダウンロードできるようになりました。\n\nエクスポートには、現在の請求月の日別・アクション別のクレジット消費の内訳が含まれ、コミットメント、免除、トライアル、オンデマンド、付属クレジットの使用状況が確認できます。\n\n財務チームおよびオペレーションチームは、このデータを使用して手動でのデータ収集やサポートリクエストなしに、Excel、Googleスプレッドシート、BIツールでコスト配分、チャージバックレポート、使用状況分析を実施できます。\n\n![クレジット使用データのCSVダウンロード](https://about.gitlab.com/images/18_10/fulfillment-credits-dashboard-csv-export.png)\n\n[ドキュメント](https://docs.gitlab.com/subscriptions/gitlab_credits/#export-usage-data) | [イシュー](https://gitlab.com/gitlab-org/customers-gitlab-com/-/work_items/14504)\n\n- - -\n\n### GitLabクレジットダッシュボードでのユーザーソート\n\n> GitLab.com: Premium、Ultimate\\\n> Self-Managed: Premium、Ultimate\\\n> GitLab Dedicated: Ultimate\\\n> GitLab Dedicated for Government: Ultimate\n\nエンタープライズ管理者は、GitLabクレジットダッシュボードの**ユーザーごとの使用状況**テーブルを、クレジット使用合計またはユーザー名でソートできるようになりました。\n\nデフォルトのソート順は使用クレジット合計（降順）であるため、スクロールせずに最も使用量の多いユーザーをすぐに確認できます。\n\nこのビューにより、数千人のGitLab Duoユーザーを管理する管理者は、コスト配分、チャージバックレポート、ライセンス利用状況の監査のために使用量の多いユーザーを迅速に特定できます。\n\n![GitLabクレジットダッシュボードでのユーザーソート](https://about.gitlab.com/images/18_10/fulfillment-credits-dashboard-sorting.jpg)\n\n[ドキュメント](https://docs.gitlab.com/subscriptions/gitlab_credits/#view-the-gitlab-credits-dashboard) | [イシュー](https://gitlab.com/gitlab-org/customers-gitlab-com/-/work_items/15608)\n\n- - -\n\n### グループおよびインスタンスのコード検索に対応した GitLab Blob Search\n\n> GitLab.com: Free、Premium、Ultimate\\\n> Self-Managed: Free、Premium、Ultimate\\\n> GitLab Dedicated: Ultimate\\\n> GitLab Dedicated for Government: Ultimate\n\n[`gitlab_blob_search`](https://docs.gitlab.com/user/duo_agent_platform/agents/tools/#:~:text=REST%20API%20endpoint.-,GitLab%20Blob%20Search,-gitlab_blob_search)ツールにより、GitLab AIエージェントが以下の範囲でコード検索を実行できるようになりました。\n\n* グループ内のすべてのプロジェクト\n* インスタンス上のアクセス可能なすべてのプロジェクト\n\n従来、Blob Searchは単一プロジェクトに限定されるか、明示的なプロジェクトIDの指定が必要でした。この変更により、AI搭載ワークフローで複数の関連プロジェクトにまたがるコードの発見と再利用が容易になりました。\n\n[ドキュメント](https://docs.gitlab.com/user/duo_agent_platform/agents/tools/#:~:text=REST%20API%20endpoint.-,GitLab%20Blob%20Search,-gitlab_blob_search) | [イシュー](https://gitlab.com/gitlab-org/gitlab/-/work_items/593221)\n\n- - -\n\n### Exploreのプロジェクトの新しいナビゲーション体験\n\n> GitLab.com: Free、Premium、Ultimate\\\n> Self-Managed: Free、Premium、Ultimate\\\n> GitLab Dedicated: Ultimate\\\n> GitLab Dedicated for Government: Ultimate\n\n**Explore**のプロジェクトページを整理し、長い間蓄積されてきた冗長なオプションを削除しました。シンプルになったインターフェースは、2つの主要なビューに集中しています。\n\n* **アクティブ**タブ：最近のアクティビティがあり、開発が進行中のプロジェクトを確認できます。\n* **非アクティブ**タブ：アーカイブされたプロジェクトや削除予定のプロジェクトにアクセスできます。\n\n冗長なタブを削除しました。\n\n* **スター数が最も多い**プロジェクトは、**アクティブ**または**非アクティブ**タブをスター数でソートすることで確認できます。\n* **すべて**のプロジェクトは、**アクティブ**と**非アクティブ**の両方のタブを表示することで確認できます。\n* **トレンド**タブは、機能の制限と低い利用率のため、GitLab 19.0で完全に削除されます。\n\n整理されたデザインは、他のプロジェクトリストとの視覚的な一貫性を確保しています。より論理的な構成と柔軟なソートオプションにより、従来と同じコンテンツにすべてアクセスできます。\n\n![Exploreのプロジェクトの新しいナビゲーション体験](https://about.gitlab.com/images/18_10/tenant_scale_explore_projects_ux_update.png)\n\n[ドキュメント](https://docs.gitlab.com/user/project/working_with_projects/#explore-all-projects-on-an-instance) | [エピック](https://gitlab.com/groups/gitlab-org/-/work_items/13786)\n\n- - -\n\n### GitLab Duo Agent Platform向けセルフホストVertex AI\n\n> Self-Managed: Premium、Ultimate\n\nGitLab Duo Agent Platform Self-Hostedで、Vertex AIがサポートされるLLMプラットフォームとして利用可能になりました。\n\nVertex AI上でホストされるAnthropicモデルを、GitLab Duo Agent Platform機能に使用するよう設定できるようになりました。\n\n[ドキュメント](https://docs.gitlab.com/administration/gitlab_duo_self_hosted/supported_llm_serving_platforms/#configure-authentication-with-google-vertex-ai) | [イシュー](https://gitlab.com/gitlab-org/gitlab/-/work_items/591604)\n\n- - -\n\n### プロジェクトからエージェントとフローを直接有効化\n\n> GitLab.com: Premium、Ultimate\\\n> Self-Managed: Premium、Ultimate\\\n> GitLab Dedicated: Ultimate\\\n> GitLab Dedicated for Government: Ultimate\n\nメンテナーおよびオーナーが、現在のコンテキストを離れることなく、プロジェクトまたはExploreページから直接エージェントとフローを有効化できるようになりました。\n\nトップレベルグループのオーナーは、グループおよびエージェントやフローを有効にする特定のプロジェクトも選択でき、ワークフローの設定を効率化できます。\n\n[ドキュメント](https://docs.gitlab.com/user/duo_agent_platform/agents/custom/#enable-an-agent) | [イシュー](https://gitlab.com/gitlab-org/gitlab/-/work_items/588012)\n\n- - -\n\n### GitLab Runner 18.10\n\n> GitLab.com: Free、Premium、Ultimate\\\n> Self-Managed: Free、Premium、Ultimate\\\n> GitLab Dedicated: Ultimate\\\n> GitLab Dedicated for Government: Ultimate\n\nGitLab Runner 18.10もリリースしました。GitLab Runnerは、CI/CDジョブを実行し、結果をGitLabインスタンスに返送する高いスケーラビリティを備えたビルドエージェントです。GitLab Runnerは、GitLabに含まれるオープンソースの継続的インテグレーションサービスであるGitLab CI/CDと連携して動作します。\n\n#### 新機能:\n\n* [ビルドポッドのPodレベルリソースをKubernetes Runnerで定義可能に](https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/39085)\n* [すべてのRunnerプロジェクトのGoバージョンおよびパッケージ更新を自動化](https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/39192)\n\n#### バグ修正:\n\n* [RoleARNを使用したS3キャッシュが、キャッシュ未存在時に404ではなく403を返す問題を修正](https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/39105)\n* [ヘルパーイメージ`gitlab-runner-helper:x86_64-v16.11.1-nanoserver21H2`使用時に`init-permissions`エラーが発生する問題を修正](https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/37872)\n* [macOS: LaunchAgent - M1アーキテクチャでサービスが初期化できない問題を修正](https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/28136)\n\nすべての変更点のリストは、GitLab Runnerの[CHANGELOG](https://gitlab.com/gitlab-org/gitlab-runner/blob/18-10-stable/CHANGELOG.md)をご覧ください。\n\n[ドキュメント](https://docs.gitlab.com/runner) | [イシューボード](https://gitlab.com/groups/gitlab-org/-/boards/9726167?label_name[]=group%3A%3Arunner%20core&milestone_title=18.10)\n\n- - -\n\n### Conan 2.0パッケージレジストリのサポート（ベータ版）\n\n> GitLab.com: Free、Premium、Ultimate\\\n> Self-Managed: Free、Premium、Ultimate\\\n> GitLab Dedicated: Ultimate\\\n> GitLab Dedicated for Government: Ultimate\n\nパッケージマネージャーとしてConanを使用するCおよびC++開発チームから、GitLabでのレジストリサポートが長く求められていました。従来、Conanパッケージレジストリは実験的機能の段階でConan 1.xクライアントのみをサポートしていたため、最新のConan 2.0ツールチェーンに移行したチームの採用には限界がありました。\n\nConanパッケージレジストリが、Conan 2.0に対応し、実験的機能からベータ版に昇格しました。今回のリリースでは、v2 API完全互換性、レシピリビジョンサポート、検索機能の改善、`--force`フラグを含むアップロードポリシーの適切な処理が含まれます。標準的なConanクライアントワークフローを使用して、Conan 2.0パッケージをGitLabから直接公開・インストールでき、JFrog Artifactoryなどの外部アーティファクト管理ソリューションへの依存を軽減できます。\n\nこのアップデートにより、CおよびC++の依存関係を管理するプラットフォームエンジニアリングチームは、ソースコード、CI/CDパイプライン、セキュリティスキャンとともにパッケージ管理をGitLab内で一元化できます。Conanレジストリはプロジェクトレベルおよびインスタンスレベルのエンドポイントに対応しており、パーソナルアクセストークン、デプロイトークン、CI/CDジョブトークンによる認証が可能です。\n\n一般提供に向けた改善にご協力ください。ご利用の感想は[エピック](https://gitlab.com/groups/gitlab-org/-/work_items/6816)からお寄せください。\n\n[ドキュメント](https://docs.gitlab.com/user/packages/conan_2_repository/) | [イシュー](https://gitlab.com/gitlab-org/gitlab/-/work_items/585819)\n\n- - -\n\n### 専用UIでのコンテナ仮想レジストリの管理（ベータ版）\n\n> GitLab.com: Premium、Ultimate\\\n> Self-Managed: Premium、Ultimate\\\n> GitLab Dedicated: Ultimate\\\n> GitLab Dedicated for Government: Ultimate\n\n前回のマイルストーンでコンテナ仮想レジストリがベータとして提供開始された際、プラットフォームエンジニアは複数のアップストリームコンテナレジストリ（Docker Hub、Harbor、Quayなど）を単一のプルエンドポイントの背後に集約できるようになりました。しかし、すべての設定にはAPI呼び出しが直接必要であり、レジストリの作成・管理、アップストリームの設定、変更の処理にスクリプトや手動のcurlコマンドを維持する必要がありました。\n\nコンテナ仮想レジストリをGitLab UIから直接作成・管理できるようになりました。グループレベルのコンテナレジストリページから、新しい仮想レジストリの作成、認証情報を含むアップストリームソースの設定、既存の構成の編集、不要になったレジストリの削除が可能です。GitLabを離れたりAPI呼び出しを記述したりする必要はありません。UIは既存のコンテナレジストリ体験とシームレスに統合されており、仮想レジストリがグループのアーティファクト管理ワークフローの中でファーストクラスの機能となりました。\n\nこの機能はベータ版です。フィードバックは[フィードバックイシュー](https://gitlab.com/gitlab-org/gitlab/-/work_items/589630)からお寄せください。\n\n[ドキュメント](https://docs.gitlab.com/user/packages/virtual_registry/container/) | [エピック](https://gitlab.com/groups/gitlab-org/-/work_items/19283)\n\n- - -\n\n### SBOMベースの依存関係スキャンがセルフマネージドに拡張\n\n> GitLab.com: Ultimate\\\n> Self-Managed: Ultimate\n\nGitLab 18.10では、新しいSBOMベースの依存関係スキャン機能の限定提供ステータスをセルフマネージドインスタンスに拡張しました。\n\nこの機能は、GitLab 18.5でGitLab.comのみを対象とした限定提供として初めてリリースされ、フィーチャーフラグ`dependency_scanning_sbom_scan_api`の下でデフォルトでは無効化されていました。\n\n追加の改善と修正により、新しいSBOMスキャン内部APIを確実に使用できるようになり、このフィーチャーフラグをデフォルトで有効化しました。この内部APIにより、依存関係スキャンアナライザーは全コンポーネントの脆弱性を含む依存関係スキャンレポートを生成します。CI/CDパイプライン完了後にSBOMレポートを処理していた従来の動作（ベータ版）とは異なり、[改善されたプロセス](https://docs.gitlab.com/user/application_security/dependency_scanning/dependency_scanning_sbom/#how-it-scans-an-application)ではCI/CDジョブ実行中にスキャン結果を即座に生成し、カスタムワークフロー向けに脆弱性データへの即時アクセスが可能になりました。\n\n問題が発生したセルフマネージドのお客様は、`dependency_scanning_sbom_scan_api`フィーチャーフラグを無効化することで、従来の動作にフォールバックできます。\n\nこの機能を使用するには、v2依存関係スキャンテンプレート`Jobs/Dependency-Scanning.v2.gitlab-ci.yml`をインポートしてください。\n\nこの機能に関するフィードバックをお待ちしております。ご質問、コメント、チームとのやり取りについては、[フィードバックイシュー](https://gitlab.com/gitlab-org/gitlab/-/issues/523458)からお問い合わせください。\n\n[ドキュメント](https://docs.gitlab.com/user/application_security/dependency_scanning/dependency_scanning_sbom/) | [イシュー](https://gitlab.com/gitlab-org/gitlab/-/work_items/546429)\n\n- - -\n\n### セキュリティ構成プロファイルでのパイプラインシークレット検出\n\n> GitLab.com: Ultimate\\\n> Self-Managed: Ultimate\\\n> GitLab Dedicated: Ultimate\\\n> GitLab Dedicated for Government: Ultimate\n\nGitLab 18.9では、プッシュ保護から始まる**Secret Detection - Default**プロファイルとともにセキュリティ構成プロファイルを導入しました。このプロファイルを使用して、単一のCI/CD設定ファイルも変更することなく、標準化されたシークレットスキャンを数百のプロジェクトに適用できます。\n\n**Secret Detection - Default**プロファイルにパイプラインベースのスキャンも含まれるようになり、開発ワークフロー全体にわたるシークレット検出の統一的な制御を提供します。\n\nこのプロファイルは3つのスキャントリガーを有効にします。\n\n* **プッシュ保護**: すべてのGitプッシュイベントをスキャンし、シークレットが検出されたプッシュをブロックすることで、シークレットがコードベースに入ることを防ぎます。\n* **マージリクエストパイプライン**: オープンなマージリクエストがあるブランチに新しいコミットがプッシュされるたびに自動的にスキャンを実行します。結果にはマージリクエストで導入された新しい脆弱性のみが含まれます。\n* **ブランチパイプライン（デフォルトブランチのみ）**: 変更がデフォルトブランチにマージまたはプッシュされたときに自動的に実行され、デフォルトブランチのシークレット検出状態の完全な可視化を提供します。\n\nプロファイルの適用にはYAML設定は不要です。プロファイルはグループに適用してすべてのプロジェクトにカバレッジを伝播させるか、個別のプロジェクトに適用してより詳細な制御を行えます。\n\n[ドキュメント](https://docs.gitlab.com/user/application_security/configuration/security_configuration_profiles/) | [エピック](https://gitlab.com/groups/gitlab-org/-/work_items/19802)\n\n- - -\n\n### クレジット使用状況をGitLab Duo Agent Platformセッションにリンク\n\n> GitLab.com: Premium、Ultimate\\\n> Self-Managed: Premium、Ultimate\\\n> GitLab Dedicated: Ultimate\\\n> GitLab Dedicated for Government: Ultimate\n\nGitLabクレジットダッシュボードで、クレジット消費を生成したGitLab Duo Agent Platformセッションに直接リンクできるようになりました。\n\nユーザー別の詳細ビューで、Agent Platform使用行（**Agentic Chat**や**基本エージェント**など）の**アクション**列がクリック可能なハイパーリンクとなり、対応するセッションの詳細に遷移できます。\n\nこのリンクにより、請求からAIセッションの動作への直接的な監査証跡が提供されます。管理者は、別々のシステム間でタイムスタンプを手動で照合することなく、クレジット使用状況の調査、サポートのエスカレーション、コンプライアンスレビューを実施できます。\n\n![クレジット使用状況をGitLab Duo Agent Platformセッションにリンク](https://about.gitlab.com/images/18_10/fulfillment-credits-dashboard-dap-session-links.jpg)\n\n[ドキュメント](https://docs.gitlab.com/subscriptions/gitlab_credits/#gitlab-credits-dashboard) | [イシュー](https://gitlab.com/gitlab-org/gitlab/-/work_items/579139)\n\n- - -\n\n### プロジェクトのリモートフローにネットワークアクセス制御を設定\n\n> GitLab.com: Premium、Ultimate\\\n> Self-Managed: Premium、Ultimate\\\n> GitLab Dedicated: Ultimate\\\n> GitLab Dedicated for Government: Ultimate\n\nプロジェクト内のGitLab Runnerを使用するフローに対して、[ネットワークアクセス制御](https://docs.gitlab.com/user/duo_agent_platform/environment_sandbox/)を設定できるようになりました。\n\nネットワーク宛先の制御を維持しながら、安全な外部統合を実現します。プロジェクトのメンテナーは、必要なAPI接続、MCPサーバー、サードパーティサービスを許可しつつ、セキュリティ境界を適用する柔軟性を備えています。\n\nネットワークアクセス制御は、`agent-config.yml`の`network_policy`セクションで設定します。`agent-config.yml`はブランチ保護ルールおよびマージリクエスト承認ワークフローによって保護されています。\n\n![プロジェクトのリモートフローにネットワークアクセス制御を設定](https://about.gitlab.com/images/18_10/projectlevel_network_access_control_for_remote_flows.png)\n\n[ドキュメント](https://docs.gitlab.com/user/duo_agent_platform/environment_sandbox/#configure-a-network-policy) | [イシュー](https://gitlab.com/gitlab-org/gitlab/-/work_items/593560)\n\n- - -\n\n### パイプライン管理のためのGitLab MCPサーバーツール\n\n> GitLab.com: Premium、Ultimate\\\n> Self-Managed: Premium、Ultimate\\\n> GitLab Dedicated: Ultimate\\\n> GitLab Dedicated for Government: Ultimate\n\n新しい`manage_pipeline`ツールにより、CI/CDパイプラインをGitLabプロジェクト内で管理できるようになりました。このGitLab MCPサーバーツールを使用すると、AIエージェントがパイプラインの作成、キャンセル、リトライ、削除、メタデータの更新を単一の呼び出しで実行できます。複数のステップを組み合わせてパイプラインワークフローを自動化する必要がなくなりました。\n\nその他のGitLab MCPサーバーツールのご要望があれば、[フィードバックイシュー](https://gitlab.com/gitlab-org/gitlab/-/work_items/566375)からお知らせください。\n\n[ドキュメント](https://docs.gitlab.com/user/gitlab_duo/model_context_protocol/mcp_server_tools/#manage_pipeline) | [イシュー](https://gitlab.com/gitlab-org/gitlab/-/work_items/583826)\n\n- - -\n\n### プロジェクトメンテナーがカスタムエージェントとフローを有効化可能に\n\n> GitLab.com: Premium、Ultimate\\\n> Self-Managed: Premium、Ultimate\\\n> GitLab Dedicated: Ultimate\\\n> GitLab Dedicated for Government: Ultimate\n\n従来、AIカタログからのAIエージェントとフローの有効化には、トップレベルグループの権限が必要でした。\n\nExploreレベルまたはプロジェクトレベルでAIカタログを閲覧する際、プロジェクトのメンテナーが自身のプロジェクトで直接エージェントとフローを有効化できるようになりました。\n\n[ドキュメント](https://docs.gitlab.com/user/duo_agent_platform/flows/custom/#enable-a-flow) | [イシュー](https://gitlab.com/gitlab-org/gitlab/-/work_items/590573)\n\n- - -\n\n### IDEおよびCI/CDパイプラインでのAgent Skillsのサポート\n\n> GitLab.com: Premium、Ultimate\\\n> Self-Managed: Premium、Ultimate\\\n> GitLab Dedicated: Ultimate\n\nGitLab Duo Agent Platformが、AIエージェントに新しい機能と専門知識を付与するための新しい標準規格である[Agent Skills仕様](https://agentskills.io/specification)に対応しました。\n\nプロジェクトのワークスペースレベルでAgent Skillsを定義し、特定のフレームワークでのテスト記述など、特定タスクに対する専門知識とワークフローをエージェントに付与できます。エージェントは該当するタスクに遭遇した際、関連するスキルを自動的に検出・ロードします。\n\n名前、ファイルパス、カスタムスラッシュコマンドでスキルを手動でトリガーすることも可能です。Agent SkillsはIDE内のフローやAgentic Chat、CI/CDパイプラインで実行されるフローからアクセスでき、仕様をサポートする他のAIツールでも利用できます。\n\n[ドキュメント](https://docs.gitlab.com/user/duo_agent_platform/customize/agent_skills/) | [イシュー](https://gitlab.com/gitlab-org/editor-extensions/gitlab-lsp/-/issues/1984)\n\n- - -\n\n### 実験的機能\n\n#### ジョブアドミッション制御のためのRunnerコントローラー\n\nRunnerコントローラーにより、Runner割り当て前にCI/CDジョブにカスタムポリシーを適用できるようになりました。Runnerコントローラーはジョブルーターに接続し、カスタムルールに基づいて受入または拒否の判断を行います。アドミッション制御、コンプライアンスの適用、コストおよびリソースガバナンスにご活用ください。コントローラーはインスタンスRunnerに対応しており、適用前の安全な検証のためのドライランモードもサポートしています。これは[実験的機能](https://docs.gitlab.com/policy/development_stages_support/)です。詳細は、[チュートリアル: Runnerアドミッションコントローラーの構築](https://docs.gitlab.com/tutorials/build_runner_admission_controller/)をご覧ください。\n\n- - -\n\n### バグ修正、パフォーマンスの改善、UIの改善\n\nGitLabでは、ユーザーの皆さまに最高のエクスペリエンスを提供することに取り組んでいます。リリースのたびに、バグの修正、パフォーマンスの改善、UIの向上に努めています。GitLab.comの100万人以上のユーザーの方も、他のプラットフォームをお使いの方も、快適でスムーズなご利用をお届けします。\n\n以下のリンクから、18.10で提供されたすべてのバグ修正、パフォーマンス改善、UI改善をご確認いただけます。\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.10)\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.10)\n* [UIの改善](https://papercuts.gitlab.com/?milestone=18.10)\n\n- - -\n\n## 非推奨（Deprecation）\n\n新しい非推奨機能および現在非推奨となっているすべての機能のリストは、[GitLabドキュメント](https://docs.gitlab.com/ee/update/deprecations.html)でご確認いただけます。今後の破壊的変更の通知を受け取るには、[破壊的変更RSSフィード](https://about.gitlab.com/breaking-changes.xml)をご購読ください。\n\n## 削除と破壊的変更\n\n削除されたすべての機能のリストは、[GitLabドキュメント](https://docs.gitlab.com/ee/update/deprecations.html)でご確認いただけます。今後の破壊的変更の通知を受け取るには、[破壊的変更RSSフィード](https://about.gitlab.com/breaking-changes.xml)をご購読ください。\n\n### 変更履歴\n\n名前付きの変更点については、各チェンジログをご確認ください。\n\n* [GitLab](https://gitlab.com/gitlab-org/gitlab-foss/blob/master/CHANGELOG.md)\n* [GitLab Runner](https://gitlab.com/gitlab-org/gitlab-runner/blob/main/CHANGELOG.md)\n* [GitLab Workflow for VS Code](https://gitlab.com/gitlab-org/gitlab-vscode-extension/-/blob/main/CHANGELOG.md)\n* [GitLab CLI](https://gitlab.com/gitlab-org/cli/-/releases)\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 （GitLab合同会社 ソリューションアーキテクト本部 ソリューションアーキテクト）*\n\n### 過去の日本語リリース情報\n\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-03-23","2026-03-19","GitLab 18.10リリース",[694,695,10,26],"releases","AI/ML","GitLab 18.10でリリースした最新機能を公開します。",{"featured":32,"template":14,"slug":698},"gitlab-18-10-release",{"content":700,"config":709},{"heroImage":701,"body":702,"authors":703,"updatedDate":705,"date":691,"title":706,"tags":707,"description":708,"category":10},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773843921/rm35fx4gylrsu9alf2fx.png","エージェント型AIは、ソフトウェア開発のあり方を大きく変えつつあります。しかし多くのチーム、特に中小規模のチームにとって、AIの導入は「すべてか無か」の選択を迫られるものでした。つまり、プラットフォームのフルサブスクリプションを契約するか、AIをまったく使わないかの二択しかありませんでした。\n\nGitLab 18.10で、この状況が変わります。本日より、GitLab.comのFreeプランを利用するチームは、[GitLabクレジット](https://docs.gitlab.com/ja-jp/subscriptions/gitlab_credits/)を購入して月額料金にコミットすることにより、[GitLab Duo Agent Platform](https://docs.gitlab.com/ja-jp/user/duo_agent_platform/)をすぐに利用開始できます。サブスクリプションのアップグレードは不要です。GitLab有料プランの追加はまだ検討していないものの、AIを活用した開発を始めたいチームにとって、エージェント型AIへの本格的なエントリーポイントとなります。\n\nモデルはシンプルで、利用するユーザー数ではなくAIが実行した作業に対して課金されます。グループオーナーがグループの請求設定からGitLabクレジットを購入して月額料金にコミットすると、チーム全体がGitLab PremiumおよびUltimateのお客様と同じAIエージェントとワークフローにアクセスできるようになります。計画、コード生成、自動コードレビュー、パイプライン診断のすべてを、共有クレジットプールから利用可能です。\n\n[GitLabクレジット](https://docs.gitlab.com/ja-jp/subscriptions/gitlab_credits/#gitlab-credits-dashboard)[ダッシュボード](https://docs.gitlab.com/ja-jp/subscriptions/gitlab_credits/#gitlab-credits-dashboard)により、グループオーナーはどのエージェントやワークフローがクレジットを消費しているかを把握でき、AI関連の支出を実際の作業成果に直接紐づけることが可能です。\n\n![月額コミットメント50クレジットのプール、使用状況の追跡、オンデマンドクレジット消費、Duo Agent Platformのユーザーあたりのクレジット割り当てを表示するGitLabクレジットダッシュボード](https://res.cloudinary.com/about-gitlab-com/image/upload/v1773867549/jdrzquwptvjnbr7eqd56.png)\n\n## 購入したその日からGitLab Duo Agent Platformを利用可能\n\nグループオーナーがクレジットを購入すると、チームの全メンバーがすぐにGitLab Duo Agent Platformの利用を開始できます。\n\n一般的なワークフローは次のとおりです。\n\nまず、ソフトウェアの機能リクエストから始めます。GitLab Duo Chat（エージェント）で[プランナーエージェント](https://docs.gitlab.com/ja-jp/user/duo_agent_platform/agents/foundational_agents/planner/)を開き、必要な内容を自然言語で記述します。エージェントがそれを構造化された作業アイテム（説明、ラベル、関連付けを含むイシュー）に分解し、プロジェクトに直接作成します。これまで手作業のイシュー整理に半日かかっていた作業が、わずか数分で完了します。\n\n作成されたイシューの1つを選び、[デベロッパーフロー](https://docs.gitlab.com/ja-jp/user/duo_agent_platform/flows/foundational_flows/developer/)を割り当てて作業を開始します。エージェントがイシューのコンテキストを読み取り、要件に沿ったコードを生成し、テストを実行して、レビュー用のマージリクエストを作成します。リファクタリングや拡張、プロジェクトのコンテキスト内でのコード説明など、より反復的な作業には[GitLab Duo Chat（エージェント）](https://docs.gitlab.com/ja-jp/user/gitlab_duo_chat/agentic_chat/)も活用できます。\n\nマージリクエストの準備が整うと、[コードレビューフロー](https://docs.gitlab.com/ja-jp/user/duo_agent_platform/flows/foundational_flows/code_review/)が多段階の自動レビューを実行します。変更内容のスキャン、リポジトリコンテキストの取り込み、差分に紐づいた構造化されたインラインフィードバックの投稿が行われます。人間のレビュアーは初回の機械的なチェックを省略し、アーキテクチャやビジネスロジックに集中できます。\n\nパイプラインが失敗した場合は、[CI/CDパイプライン修正フロー](https://docs.gitlab.com/ja-jp/user/duo_agent_platform/flows/foundational_flows/fix_pipeline/)がエラーログを読み取り、根本原因を特定して修正案を提示します。チームは、ジョブログを手動で確認しなくても、解決の糸口を得ることができます。\n\nGitLab Duo Agent Platformは、1つのクレジットプールでソフトウェア開発をイテレーションからデプロイまで支援します。\n\nエージェントとワークフローの利用開始は簡単で、計画からデプロイまで3分以内で完了します。詳細はこちらのデモをご覧ください。\n\n\u003Ciframe src=\"https://player.vimeo.com/video/1175244743?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=\"18.10 Main Demo V2\">\u003C/iframe>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\n## 定額コードレビュー：スケールしてもコストを予測可能\n\nGitLab Duo Agent Platformで利用できるすべてのワークフローの中で、自動コードレビューはコストが予測可能であるという点で、最も早く価値を実感できる機能です。\n\nコードレビューフローの料金は、マージリクエストのサイズやリポジトリの複雑さ、内部で実行されるステップ数に関係なく、レビュー1回あたり一律0.25 GitLabクレジットとなります。4回のレビューで1クレジットです。チームが月に500件のマージリクエストを処理する場合でも50,000件の場合でも、レビュー数に基づいてコストを直接予測できます。\n\nこの数字をもう少し詳しく見てみましょう。手動のコードレビューはコストだけでなく時間もかかり、コンテキストスイッチングが絶えず必要になるため、開発に支障をきたします。コードレビューフローによる時間の節約は、レビュー量の増加に伴い大幅なコスト削減につながる可能性があります。キューで待機させるのではなく、数百件のレビューを同時に実行できるため、時間の節約とコスト削減の効果が急速かつ複合的に高まります。\n\nGitLabのFreeプランを利用しているチームは、月間クレジットプールのうちコードレビューに充てる割合を正確に把握し、計画を立てることが可能です。\n\n> [コードレビューフローの仕組み](https://about.gitlab.com/ja-jp/blog/agentic-code-reviews-with-flat-rate-pricing/)と、エンジニアリング組織のスケーリングにおける意義について詳しくご確認ください。\n\n## Premiumで価値を最大化\n\nFreeプランのGitLabクレジットは、エージェント型AIへの直接的な道筋を提供します。チームがGitLabをより幅広く活用している場合、Premiumは経済性と機能の両方を兼ね備えた選択肢です。\n\n月額29ドル/ユーザーの[GitLab Premium](https://about.gitlab.com/ja-jp/pricing/)には、プロモーションオファーとしてユーザーあたり12 GitLabクレジットが含まれています。20人のチームであれば、追加費用なしで月240クレジットを利用でき、約960回の自動コードレビュー、またはコードレビュー、計画、開発ワークフロー、パイプライン修正を組み合わせた利用が可能です。\n\nGitLab Duo Agent Platformは、Premiumが提供する機能の一部にすぎません。大量パイプライン向けの高度なCI/CD、ガバナンスのためのマージ承認とコードオーナー、プロジェクト全体で統一されたコンテキストを持つ単一データレイヤー内で動作するAIも含まれています。\n\nFreeプランでクレジットを使用し、AIがワークフローの中心になりつつあると感じているチームにとって、プロモーションクレジットが含まれるPremiumが次の選択肢となるのは自然の流れでしょう。Premiumでは、より多くのプラットフォーム機能を利用でき、チームとともに成長する基盤となります。\n\n## 今すぐ始めましょう\n\nGitLab 18.10はすでに提供が開始されており、すぐにご利用いただけます。エージェント型AIでスピードアップしたいチームも、現在の作業方法を支えるフルプラットフォームが必要なチームも、ソフトウェア開発プロセスを加速するための明確な道筋があります。\n\n* **FreeプランのGitLab.comをご利用のチーム：** グループの請求設定から[GitLab クレジットの月額コミットメントを購入](https://docs.gitlab.com/ja-jp/subscriptions/gitlab_credits/#for-the-free-tier-on-gitlabcom)し、今すぐGitLab Duo Agent Platformの利用を開始してください。\n* **フルプラットフォームを検討されているチーム：** [チームに最適なGitLabサブスクリプションを見つける](https://docs.gitlab.com/ja-jp/subscriptions/choosing_subscription/)か、[GitLab Ultimateの無料トライアルを開始](https://about.gitlab.com/ja-jp/free-trial/)してください。\n\nチームへのクレジット設定は迅速かつ簡単です。詳細はこちらのデモをご覧ください。\n\n\u003Ciframe src=\"https://player.vimeo.com/video/1175238100?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=\"GitLab Credits Purchase Flow\">\u003C/iframe>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\n- - -\n\n## FAQ\n\n**GitLabクレジットの月額コミットメントとは何ですか**\n\n月額コミットメントは、グループオーナーがグループ全体の共有プールとして適用されるクレジット数を選択する、使用量ベースの購入オプションです。チームがGitLab Duo Agent Platformの機能を使用するとクレジットが消費されます。詳細は[GitLabクレジットのドキュメント](https://docs.gitlab.com/ja-jp/subscriptions/gitlab_credits/)をご確認ください。\n\n**現在、GitLabクレジットを購入できるのは誰ですか**\n\nGitLab PremiumおよびUltimateのお客様は、プロモーションクレジットがすでにサブスクリプションに含まれています。18.10以降、FreeプランのGitLab.comトップレベルグループネームスペースでも、セルフサービスのグループ請求を通じてクレジットの月額コミットメントを購入できるようになりました。最新の対象条件については、[GitLabクレジットのドキュメント](https://docs.gitlab.com/ja-jp/subscriptions/gitlab_credits/)をご確認ください。\n\n**Freeプランでクレジットによって利用可能になるAI機能は何ですか**\n\nクレジットを持つチームは、PremiumおよびUltimateのお客様と同じエージェント型AI機能とモデルにアクセスできます。プランナーエージェント、デベロッパーフロー、コードレビューフロー、CI/CDパイプライン修正フロー、GitLab Duo Chat（エージェント）、コード提案、カスタムエージェントとワークフローなどが含まれます。全機能の一覧は[Duo Agent Platformドキュメント](https://docs.gitlab.com/ja-jp/user/duo_agent_platform/)をご確認ください。\n\n**自動コードレビューの費用はいくらですか**\n\nコードレビューフローは、マージリクエストのサイズや複雑さに関係なく、レビュー1回あたり一律0.25 GitLabクレジットの定額料金です。最新の価格詳細については、[コードレビューフローのドキュメント](https://docs.gitlab.com/ja-jp/user/duo_agent_platform/flows/foundational_flows/code_review/)をご確認ください。\n\n**Freeプラン＋クレジットからGitLab Premiumにアップグレードできますか**\n\nGitLab 18.10では、営業担当を通じて月額クレジットコミットメントを持つ無料ネームスペースからPremiumへのアップグレードを利用可能です。オプションについては[GitLab営業チーム](https://about.gitlab.com/ja-jp/contact-sales/)にお問い合わせください。",[704],"Talia Armato-Helle","2026-03-29","GitLab 18.10：エージェント型AIがさらに多くのチームで利用可能に",[27,10],"GitLab.comのFreeプランを利用するチームがGitLabクレジットを購入することで、定額の自動コードレビューを含むAIエージェントとワークフローを利用できるようになりました。",{"featured":32,"template":14,"slug":710},"gitlab-18-10-agentic-ai-now-open-to-even-more-teams-on-gitlab",{"content":712,"config":721},{"heroImage":713,"body":714,"authors":715,"updatedDate":705,"date":691,"title":717,"tags":718,"description":720,"category":10},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772721753/frfsm1qfscwrmsyzj1qn.png","コードレビューは今や、完全に予算外のボトルネックになりつつあります。AIの支援により、開発者はかつてないスピードでコードをリリースしていますが、レビューはそのスピードに追いついていません。AIコーディングツールを導入したチームでは、コードレビューにかかる時間が[91%増加](https://byteiota.com/ai-code-review-bottleneck-kills-40-of-productivity/)しています。大企業のエンジニアは、プルリクエストがマージされるまで平均[13時間待つ](https://dzone.com/articles/shifting-bottleneck-how-ai-is-reshaping-the-sdlc)という状況であり、[エンジニアリングチームの44%](https://techcrunch.com/2026/03/09/anthropic-launches-code-review-tool-to-check-flood-of-ai-generated-code/)が「コードレビューの遅れがデリバリーにとって最大のボトルネック」と回答しています。\n\nこうした課題に対し、AIを活用したレビューツールが次々と登場しています。しかし、その多くには落とし穴があります。それは、変更の規模や複雑さによって料金が変わるトークン課金モデルのため、コストを予測できないという点です。新しいツールの中には、1件あたり15〜25ドルかかるものもあります。このような料金体系では、チームは優先度の高い変更のみに絞ってレビューを行うことになり、結局、レビュー待ちの行列は解消されません。\n\n今回ご紹介するGitLab Duo Agent Platform内のエージェント型AI機能であるコードレビューフローは、1件のレビューあたり0.25ドルの定額制です。すべてのマージリクエスト、すべてのプロジェクトにおいて、毎回同じ料金で利用できます。\n\n## 仕組み\n\nマージリクエストが作成されると、コードレビューフローは自動的にマルチステップのレビューを実行します。変更内容のスキャン、関連するリポジトリのコンテキストの調査、パイプライン・セキュリティの検出結果・コンプライアンス要件との照合、そして構造化されたインラインフィードバックの生成までを自動で行います。\n\nレビュー結果は、差分の変更だけでなく、プロジェクトで実際に起きていることを踏まえた内容になります。また、GitLab内で動作するため、スタンドアロンツールでは実現できないことが可能です。エンジニア1人のIDEで1件ずつ処理するのではなく、組織全体で数百件のレビューを並行して実行できます。\n\nコードレビューの動作をデモでご確認ください：\n\n\u003Ciframe src=\"https://player.vimeo.com/video/1174920981?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=\"18.10 DAP Code Review\">\u003C/iframe>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\n## シンプルな計算、確かなコスト削減\n\n1件のレビューコストは0.25 GitLabクレジット（定価0.25ドル）です。つまり、1クレジットで4件のレビューを実行できます。月に500件のマージリクエストをマージするチームでも、50,000件のチームでも、計算式は同じです。\n\nトークンの見積もりは不要です。マージリクエストの複雑さによってコストが変わることもありません。スプレッドシートで計算できる、1件あたりの定額コストです。\n\n参考までに、シニアエンジニアが手動でコードレビューを行うと、1件あたり約15分、つまり約25ドルの人件費がかかります。自動レビューであれば0.25ドルで済むため、1件あたりのコストを99%削減できます。さらに、レビューはキューで待機するのではなく、並行して実行されます。このため、コスト削減だけでなく、マージリクエストのブロックが数時間ではなく数分で解消されます。\n\n## 定額制がゲームチェンジャーになる理由\n\n従量課金制では、どのマージリクエストにAIレビューを適用するかを選択せざるを得ませんでした。しかし、0.25ドルであれば、選択は不要です。すべてに適用することができます。\n\n**すべてのマージリクエスト、すべてのプロジェクトで実行。** コードレビューフローをすべてのマージリクエストで自動的にトリガーするよう設定できます。エージェントがキューを処理する間、エンジニアはアーキテクチャやメンタリングに集中できます。\n\n**スケールにかかわらず一貫した標準を適用可能。** プロジェクトごとにカスタムのマージレビュー手順を定義できます。あるプロジェクトは組み込みフローを使用し、別のプロジェクトはClaude CodeやCodexを使用し、さらに別のプロジェクトはカスタムエージェントを実行する、といった構成も可能です。すべてが並行して実行され、それぞれのガードレールに沿って、一か所で確認できます。\n\n**レビューキューのボトルネックを解消。** 最近のソフトウェア開発でボトルネックとなっているのは、コード作成ではなく、レビューの完了を待つことです。定額制で、並行して実行できるAIレビューにより、数日かかっていたキューが数分のプロセスに変わります。\n\n> **GitLabクレジットについて** GitLabクレジットはDuo Agent Platformの利用量を示す単位で、1クレジット＝1ドルに相当します。[GitLabクレジットの仕組み](https://docs.gitlab.com/ja-jp/subscriptions/gitlab_credits/#buy-gitlab-credits)についてはこちらをご覧ください。\n\n## 今すぐ始める\n\nエージェント型コードレビューの0.25ドル定額料金は、GitLab.com、Dedicated、または18.8.4以降のSelf-ManagedインスタンスでGitLab Duo Agent Platformをご利用の場合、今すぐ利用可能です。今すぐコードレビューフローをデフォルトで有効にして、チームが作成するすべてのマージリクエストに適用しましょう。\n\n![エージェント型コードレビューを適用する](https://res.cloudinary.com/about-gitlab-com/image/upload/v1774273288/zoyqfwsb81v9lv7y8ddf.png)\n\n> [GitLab Duo Agent Platformの無料トライアルを開始](https://about.gitlab.com/ja-jp/gitlab-duo-agent-platform/?utm_medium=blog&utm_source=blog&utm_campaign=eg_apac_brand_x_x_ja_gitlabjapanblogseo_agentic-code-reviews-with-flat-rate-pricing)して、実際の動きをご確認ください。すでにGitLabをご利用いただいているお客様は、ご担当の営業担当者にお問い合わせください。",[716],"Karishma Kumar","エージェント型コードレビューを1件0.25ドルで",[719,27,10],"code review","ソフトウェアデリバリーにおいてボトルネックとなっているコードレビュー。手頃な価格のエージェント型コードレビューをすべてのマージリクエストにデフォルト適用することで、その悩みを解消できます。",{"featured":13,"template":14,"slug":722},"agentic-code-reviews-with-flat-rate-pricing",{"promotions":724},[725,739,751],{"id":726,"categories":727,"header":729,"text":730,"button":731,"image":736},"ai-modernization",[728],"ai-ml","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":732,"config":733},"Get your AI maturity score",{"href":734,"dataGaName":735,"dataGaLocation":247},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":737},{"src":738},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":740,"categories":741,"header":743,"text":730,"button":744,"image":748},"devops-modernization",[10,742],"devsecops","Are you just managing tools or shipping innovation?",{"text":745,"config":746},"Get your DevOps maturity score",{"href":747,"dataGaName":735,"dataGaLocation":247},"/assessments/devops-modernization-assessment/",{"config":749},{"src":750},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":752,"categories":753,"header":755,"text":730,"button":756,"image":760},"security-modernization",[754],"security","Are you trading speed for security?",{"text":757,"config":758},"Get your security maturity score",{"href":759,"dataGaName":735,"dataGaLocation":247},"/assessments/security-modernization-assessment/",{"config":761},{"src":762},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"header":764,"blurb":765,"button":766,"secondaryButton":770},"今すぐ開発をスピードアップ","DevSecOpsに特化したインテリジェントオーケストレーションプラットフォームで実現できることをご確認ください。\n",{"text":51,"config":767},{"href":768,"dataGaName":54,"dataGaLocation":769},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/ja-jp/","feature",{"text":56,"config":771},{"href":58,"dataGaName":59,"dataGaLocation":769},1777310041229]