[{"data":1,"prerenderedAt":777},["ShallowReactive",2],{"/ja-jp/blog/aws-multi-account-cicd-gitlab":3,"navigation-ja-jp":46,"banner-ja-jp":441,"footer-ja-jp":451,"blog-post-authors-ja-jp-Tsukasa Komatsubara|Issei Hamada, Sony Biz Networks Corporation":657,"blog-related-posts-ja-jp-aws-multi-account-cicd-gitlab":684,"assessment-promotions-ja-jp":729,"next-steps-ja-jp":768},{"id":4,"title":5,"authorSlugs":6,"body":9,"categorySlug":10,"config":11,"content":15,"description":9,"extension":31,"isFeatured":12,"meta":32,"navigation":12,"path":33,"publishedDate":24,"seo":34,"stem":40,"tagSlugs":41,"__hash__":45},"blogPosts/ja-jp/blog/aws-multi-account-cicd-gitlab.yml","Aws Multi Account Cicd Gitlab",[7,8],"tsukasa-komatsubara","issei-hamada-sony-biz-networks-corporation",null,"devsecops",{"featured":12,"template":13,"slug":14},true,"BlogPost","aws-multi-account-cicd-gitlab",{"category":10,"tags":16,"body":23,"date":24,"heroImage":25,"authors":26,"title":29,"description":30},[17,18,19,20,21,22],"partners","AWS","CI/CD","integrations","public sector","tutorial","***編集部注：私たちは時折、パートナーコミュニティのメンバーにGitLabブログへの寄稿をお願いしています。今回、ソニービズネットワークス社のエンジニアである濱田一成氏に、共同執筆いただきました。***\nソニービズネットワークス株式会社所属のエンジニア、濱田 一成です。先日、GitLab 様との共同企画でAWS様の作成したマルチアカウントIaC・CI/CDワークショップを、GitLabを用いた構成にリファクタリングしました。本記事は、そのワークショップの解説記事です。\n# 従来の構成\n![従来の構成](https://res.cloudinary.com/about-gitlab-com/image/upload/v1760602837/zlrn0hwtrnkfzqxakeya.png)\n元のワークショップはAWSサービスのみでCI/CDパイプラインを構成しています。このワークショップは手軽に継続的インテグレーションを体験出来ることから、非常に高い評価を得ていました。しかし現在AWS CodeCommitは新規顧客の受け入れを停止しており、元ワークショップも新たなお客様のご利用が出来なくなっていました。\n# リファクタリング後の構成\n![リファクタリング後の構成](https://res.cloudinary.com/about-gitlab-com/image/upload/v1760602839/ztsdyztzdtoyvusqkknp.png)\nそこで今回、AWS CodeCommitをGitLabに置き換え、CI/CDを体験するワークショップとしてリファクタリングを行いました。本ワークショップのAWS CDKコードをご利用頂く事で、GitLabをソースリポジトリとして組み込んだCI/CDパイプラインを体験頂けます。\n# ワークショップのポイント：AWS CodeConnections\nAWS CodeConnectionsは、AWSと様々なコードリポジトリを接続するサービスです。本サービスを利用する事で、SaaS版GitLabはもちろん、セルフホスティング版のGitLabも、AWS上に構築したCI/CDパイプラインに組み込むことが出来るようになります。今回のワークショップではVPC内にGitLabサーバを構築し、インターネット経由でAWS CodeConnectionsと接続します。\n![ワークショップのポイント： AWS CodeConnections](https://res.cloudinary.com/about-gitlab-com/image/upload/v1760602837/ivj1wswqvlwrkqlzrs70.png)\n## プライベートネットワーク接続にも対応している\n今回のワークショップではインターネット経由でGitLabと接続していますが、もちろん閉域に閉じることも可能です。AWS CodeConnectionsを作成する時に、オプションでVPCを指定する事が出来ます。こちらを指定すると、AWS CodeConnectionsとGitLab間の通信専用のENIが作成されます。AWS CodeConnectionsは、このENIを経由してGitLabと通信する事で、閉域網内での利用を実現しています。\n![プライベートネットワーク接続にも対応している](https://res.cloudinary.com/about-gitlab-com/image/upload/v1760602892/tn5rx1nrpiyyzglmcuo9.png)\n# ワークショップ手順解説\n従来のワークショップとの差分は、【Lab 1：CI/CDパイプライン環境のセットアップ】のうち、【手順5. GitLabをデプロイする】のみです。そこで今回は本セクションについて重点的に解説します。\n## 前提事項：GitLab用公開ドメインを用意する\n本ワークショップでは、GitLabと同じアカウントのRoute53にホストされている公開ドメインが必要です。\nAWS CodeConnectionsの要件として、GitLabとの通信はTLS暗号化が必須となっています。GitLabはデフォルトでLet’s Encryptと統合していますが、GitLabのインストール中に指定したURLの名前解決を行えないとLet’s Encryptの設定が失敗してしまいます。その為、今回はCDKのデプロイプロセスの中にレコード登録を組み込んでいます。\nちなみに、このAWS CodeConnectionsのTLS要件はプライベート接続でも同様に求められます。その場合、CodeConnectionsの設定作成時にプライベート証明書をアップロードする必要があります。\n## 手順1. インフラ CI/CDのセットアップに必要なアセットのダウンロード\n本Labの実施に必要なコード一式を、gitコマンドでダウンロードしてください。\n```shell\ngit clone \n\nhttps://github.com/issei-hamada/goverment-cloud-iac-cicd-with-gitlab.git\n```\n## 手順2. アセットの確認\nダウンロードしたプロジェクトの配下に、以下ディレクトリがあることを確認します。\n* artifact-repository  \n* gitlab  \n* cicd-pipeline  \n* cdk-role\n後の手順で、ディレクトリ毎に作業します。\n## 手順3. パッケージのインストール\nNode.jsの必要なライブラリをインストールします。\n```shell\n# ディレクトリ移動 \n\ncd goverment-cloud-iac-cicd-with-gitlab \n\n# package.json に登録されているものをインストール\n\nnpm ci\n```\n## 手順4. artifact-repositoryをデプロイする\n\n 以下コマンドを順に実行し、artifact-repositoryをデプロイします。\n\n```text\n# ディレクトリ移動\n\ncd artifact-repository\n\n# 対象アカウントに CDK で必要なリソースを作成\n\nnpx cdk bootstrap\n\n# デプロイ\n\nnpx cdk deploy\n```\n### AWS CodeArtifactの役割\nAWS CodeArtifactとは、ソフトウェア開発で使用するパッケージを安全に保存、公開、共有するためのフルマネージド型のアーティファクトリポジトリサービスです。ここで言う「パッケージ」とは、HTTPリクエストを手軽に実装するための、pythonで言う「requests」、JavaScriptで言う「Axios」のようなパッケージ（ライブラリとも表現する事がありますね）を指します。例えばpythonでソフトウェアを開発する際、pipの参照先をCodeArtifact に設定する事で、開発者全員が予めCodeArtifactに登録されたパッケージを利用出来るようになります。\nソフトウェア開発におけるパッケージ管理のセキュリティ・コンプライアンスを強化する事がAWS CodeArtifactの役割です。\n## 手順5. GitLabをデプロイする\nここからが、アップデート後のコアとなる手順です。AWSにGitLabをデプロイしていきます。\n### 5-1. デプロイパラメータを設定する\nまずは、デプロイ時に利用する必須パラメータを設定します。gitlab/parameter.tsファイルを修正して下さい。\n![table](https://res.cloudinary.com/about-gitlab-com/image/upload/v1761206827/l7v6ilyephbhzd5uhgtm.jpg)\n基本的にデフォルト値は設定されていますが、★の付いているホストゾーンID・ドメイン名のみ個別に設定が必要です。\n次に、ユーザデータ（gitlab/lib/sh/gitlab-install.sh）内のURLを書き換える必要があります。16行目の\u003Chttps://gitlab.example.com>を、GitLabの接続URLに書き換えて下さい。\n```shell\nEXTERNAL_URL=\"https://gitlab.example.com\" apt-get install -y gitlab-ee\n```\nGitLabはデフォルトでLet’s Encryptと連携しています。こちらを記述する事で、インストール後、指定のドメインにhttpsアクセス可能な状態で起動します。\n### 5-2. GitLab Stackをデプロイする\n初めてCDKを実行する場合は、gitlabディレクトリへ移動し、CDKをbootstrapします。\n```text\n# リポジトリ移動\n\ncd gitlab\n\n# CDK 用リソース作成\n\nnpx cdk bootstrap\n```\n次に、GitLab EC2インスタンスをデプロイします。\n```text\n# デプロイ\n\nnpx cdk deploy\n```\n* EC2 のキーペアについて\n本ワークショップではCDKを使ってキーペアを生成しています。CDKでは秘密鍵をAWS Systems Manager Parameter Storeに保存する仕様になっています。インスタンス起動時点でセッションマネージャを利用出来る設定にはなっていますが、必要に応じて/ec2/keypair/GitLabから取得し、ファイルを生成してください。\nこれでインスタンスのデプロイは完了です。GitLabのインストールも自動で行われますが、CDKのデプロイ完了から10~15分程度かかります。ブラウザから設定したURLにアクセスし、ログインページが表示されるまでお待ちください。\n### 5-3. GitLabへログイン\nログインページが表示されれば、GitLabのインストールは完了です。OSログインして初期パスワードを確認します。\n1. EC2コンソールにてGitLabインスタンスを選択し、「接続」から「セッションマネージャ」でEC2に接続します。  \n2. 以下のcatコマンドを実行します。\n\n   ```text\n   $sudo cat /etc/gitlab/initial_root_password\n   # WARNING: This value is valid only in the following conditions\n   # 1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).\n   # 2. Password hasn't been changed manually, either via UI or via command line.\n   #\n   # If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.\n   Password: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n   # NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.\n   ```\n3. **Password**の値が、GitLab rootユーザの初期パスワードです。これをコピーしておきます。  \n4. ブラウザからGitLabへアクセスし、`ユーザ名：root` / `パスワード：前項で取得したパスワード`を使って、ログインします。\nブラウザからアプリケーションにログイン出来れば、本手順は完了です。\n### 5-4. GitLabグループ作成\nGitLabではグループにプロジェクト（いわゆるリポジトリ）を紐づけて管理する為、まずはグループを作成します。\n1. ログイン後のトップページにて、左メニューの「Group」を選択\n\n   ![ログイン後のトップページにて、左メニューの「Group」を選択](https://res.cloudinary.com/about-gitlab-com/image/upload/v1760602852/bmosa0dhvbkowx9bakpb.png)\n2. 画面中央右の「New group」を押下\n\n   ![画面中央右の「New group」を押下](https://res.cloudinary.com/about-gitlab-com/image/upload/v1760685678/fci5jjjmgrrdcz5vzr6z.png)\n3. 「Create group」を押下\n\n   ![「Create group」を押下](https://res.cloudinary.com/about-gitlab-com/image/upload/v1760685678/kfusu353kpdxrpqqkzxc.png)\n4. 「Group name」を入力し、「Create group」を押下\n\n   ![「Group name」を入力し、「Create group」を押下](https://res.cloudinary.com/about-gitlab-com/image/upload/v1760685678/kfusu353kpdxrpqqkzxc.png)\n\n今回は、「development-group」として下さい。\nこれでグループ作成は完了です。\n### 5-5. ワークショップ用プロジェクト作成\n次は、前段で作成したグループに紐づくプロジェクトを作成していきます。\n1. GitLabコンソール左メニュー右上の「＋」アイコンをクリックし、「New project/repository」をクリック\n\n   ![GitLabコンソール左メニュー右上の「＋」アイコンをクリックし、「New project/repository」をクリック](https://res.cloudinary.com/about-gitlab-com/image/upload/v1760685678/ccsawinrpngssuugubwd.png)\n2. 「Create blank project」をクリック\n\n   ![「Create blank project」をクリック](https://res.cloudinary.com/about-gitlab-com/image/upload/v1760685680/y35bltsbs6uxdpjvsakq.png)\n3. プロジェクト名を入力し、「Create project」を押下\n\n   Project URLで、name spaceに 5-4 で作成したグループ名が入力されている事を確認します。また、本 workshop ではプロジェクト名を「cicd-workshop」として下さい。\n\n   ![プロジェクト名を入力し、「Create project」を押下](https://res.cloudinary.com/about-gitlab-com/image/upload/v1760685678/i7snizlqy5z2zr7ljof6.png)\n\n以上でプロジェクトの作成が完了し、リポジトリのクローンやプッシュが可能な状態になりました。次は、GitLabとAWSの接続設定に必要な認証情報を払い出します。\n### 5-6. パーソナルアクセストークンを払い出す\nGitLabと外部リソースを連携する際、パーソナルアクセストークン（PAT（という認証情報を利用します。今回はAWSとGitLabを連携する為に必要です。\n1. 左メニュー右上のユーザアイコンをクリックし、「Edit profile」をクリック\n\n   ![左メニュー右上のユーザアイコンをクリックし、「Edit profile」をクリック](https://res.cloudinary.com/about-gitlab-com/image/upload/v1760685680/za00t5yqiveuhn9u7dn4.png)\n2. 左メニューの「Access tokens」をクリック\n\n   ![左メニューの「Access tokens」をクリック](https://res.cloudinary.com/about-gitlab-com/image/upload/v1760685681/jdtqfpmpzzkjsu86lpg3.png)\n3. 右上の「Add new token」ボタンを押下\n\n   ![右上の「Add new token」ボタンを押下](https://res.cloudinary.com/about-gitlab-com/image/upload/v1760685681/eydhfbaxiosfgxgumzav.png)\n4. 「Select scope」にて「api」と「admin_mode」にチェックを入れ、「Create token」ボタンを押下\n\n   token name には、任意の値を入れて下さい。\n\n   ![「Select scope」にて「api」と「admin_mode」にチェックを入れ、「Create token」ボタンを押下](https://res.cloudinary.com/about-gitlab-com/image/upload/v1760685682/qf2r6zq7m1ohx5xkgrfx.png)\n5. 「Your token」に表示されているトークンをコピーし、控える\n\n   ![「Your token」に表示されているトークンをコピーし、控える](https://res.cloudinary.com/about-gitlab-com/image/upload/v1760685682/cixkiacbowzltfzlwb9y.png)\n\n以上でPATの払い出しが完了し、GitLabとAWSを連携する準備が出来ました。\n### 補足：パーソナルアクセストークンの有効期間について\nPATの有効期間については、AWS CodeConnectionsとの接続設定を作成する時に有効であればよいです。**接続設定を作成した後は、PATを削除しても問題ありません。**\nGitLabとAWS CodeConnectionsの連携設定を作成すると、GitLabのApplicationsに以下のようなアプリが作成されます。\n![GitLabとAWS CodeConnectionsの連携設定を作成すると、GitLabのApplicationsに以下のようなアプリが作成されます。](https://res.cloudinary.com/about-gitlab-com/image/upload/v1760685684/m6bmbg2fh5hi7dbow119.png)\nPATは、このアプリをGitLab側に作成する為だけに必要な認証情報なのです。\n## 手順6. AWS CodeConnectionsを作成する\nここからAWSの作業に戻ります。AWS CodeConnectionsを作成し、GitLab側で認証します。\n### 6-1. 「接続」を作成\n1. AWSコンソールの検索窓にて「CodePipeline」と入力し、サービスページへ移動  \n2. 左メニューの「設定」プルダウンから、「接続」を選択  \n3. 右上の「接続を作成」ボタンを押下\n\n   ![右上の「接続を作成」ボタンを押下](https://res.cloudinary.com/about-gitlab-com/image/upload/v1760685685/mmjmevc8pmx0jdhccade.png)\n4. 「プロバイダーを選択する」にて「GitLab Self Managed」を選択し、接続設定を入力後、「GitLab Self Managedに接続」ボタンを押下  \n\n   * 接続名：任意の値  \n   * URL：作成した GitLab の URL を入力  \n   * 「VPCを使用」には**チェックを入れない**\n\n   → プライベートサブネット内にあるGitLabと接続する時のオプション\n\n   ![「VPCを使用」にはチェックを入れない → プライベートサブネット内にあるGitLabと接続する時のオプション](https://res.cloudinary.com/about-gitlab-com/image/upload/v1760685685/jxznizrfagkijqwgbz5l.png)\n\nこれでAWS CodeConnectionsの「接続」を作成できました。現時点では、接続ステータスは「保留中」で問題ありません。次の手順で承認作業を行います。\n### 6-2. GitLabにてAWS CodeConnectionsの接続を承認する\n1. 先ほど作成した「接続」の、右上「保留中の接続を更新」ボタンを押下\n\n   ![先ほど作成した「接続」の、右上「保留中の接続を更新」ボタンを押下](https://res.cloudinary.com/about-gitlab-com/image/upload/v1760685685/m6qzsgi30hmtg2ne5ziw.png)\n2. ポップアップウィンドウが開く。テキストボックスに個人用アクセストークンを入力し、「続行」ボタンを押下\n\n   ![ポップアップウィンドウが開く。テキストボックスに個人用アクセストークンを入力し、「続行」ボタンを押下](https://res.cloudinary.com/about-gitlab-com/image/upload/v1760602837/o5vl4pqo4cq1nxulbmff.png)\n3. GitLabの認証画面が開く。「Authorize ~」ボタンを押下\n\n   この時、作業しているブラウザからGitLabに接続できる必要があります。ワークショップ環境であれば問題ありませんが、社内環境と接続する際はご注意下さい。\n\n   ![GitLabの認証画面が開く。「Authorize ~」ボタンを押下](https://res.cloudinary.com/about-gitlab-com/image/upload/v1760602837/yk7pxz3eoow2tjbczkyc.png)\n4. 「ホストインスタンスでのインストールの確認」にて、「続行」を押下\n\n   ![「ホストインスタンスでのインストールの確認」にて、「続行」を押下](https://res.cloudinary.com/about-gitlab-com/image/upload/v1760602837/hzlepvaoolcoa1ql1eca.png)\n5. 「接続」のステータスが「利用可能」になったら完了\n\n   ![「接続」のステータスが「利用可能」になったら完了](https://res.cloudinary.com/about-gitlab-com/image/upload/v1760602837/jr1sogiwmmhdbe3cqwey.png)\n6. 「接続設定」に記載されているARNを控える\n以上でAWS CodeConnectionsの設定は完了です。これでAWS CodePipelineのソースリポジトリとしてGitLabを指定出来るようになりました。次の手順では、実際にAWS CodePipelineをデプロイしてCI/CDパイプラインを動かせるようにしていきます。\n### 補足：AWS CodeConnectionsから参照出来るGitLabプロジェクトの制御方法\nAWS CodePipelineでソースとして指定できるプロジェクトは「3. GitLab の認証画面が開く。「Authorize ~」ボタンを押下」手順を実行する際に、GitLabへログインしていたユーザによって決まります。スクリーンショットではAdministratorになっていますが、実際の構築では各々のユーザ名になります。PATを払い出す際に「admin_mode」にチェックを入れても、全てのプロジェクトを参照できるようになるわけではありません\n## 手順7. cicd-pipeline をデプロイする\nAWS CodeConnectionsをソースに指定し、CI/CDパイプラインをデプロイします。基本的に元のワークショップと変わらないのですが、2つだけパラメータを追加しています。\n### 7-1. デプロイパラメータを設定する\ncicd-pipeline/parameter.tsに、先ほどメモしたAWS CodeConnectionsのARNとソースとして指定したいGitLabのプロジェクト名を入力します。\n```text\n// CodeConnections parameters\n\n\ncodeConnectionArn: 'arn:aws:codeconnections:ap-northeast-1:xxxxxxxxxxxx:connection/xxxxxxxxxxxx',\n\n\ngitlabTargetProject: 'development-group/cicd-workshop',\n```\n### 7-2. デプロイする\n初めて CDK を実行する場合は、対象のディレクトリへ移動し、CDK を bootstrap します。これは対象のアカウントとリージョンの組み合わせで初めて CDK を実行するときに必要です。\n```text\n# リポジトリ移動\n\ncd cicd-pipeline\n\n# CDK用リソースを作成\n\nnpx cdk bootstrap --profile cicd\n\n# デプロイ\n\nnpx cdk deploy --profile cicd\n```\n以上でCI/CDパイプラインのデプロイは完了です。\n## 手順8. cdk-roleをデプロイする\n最後に、パイプライン内で利用するIAMロールを作成します。本ワークショップはマルチアカウントを想定している為、アカウントを跨いでCDKを実行する際にこのIAMロールを利用します。デプロイ手順は、以下コマンドを順に実行するだけです。\n```text\n# リポジトリ移動\n\ncd cdk-role\n\n# CDK用リソースを作成\n\nnpx cdk bootstrap --profile cicd\n\n# デプロイ\n\nnpx cdk deploy --profile cicd\n```\nコマンドが正常に完了すれば、CI/CDパイプラインに関するリソースのデプロイは完了です。\n## 手順9. CDKコードを GitLabにpushする\nここまでの手順で、GitLabとAWS上に作成したCI/CDパイプラインの連携設定が完了しました。あとはGitLabにブランチを作成し、コードをプッシュすれば各環境にコードがデプロイされます。\n1. GitLabプロジェクトに develop/staging/production ブランチを作成する  \n2. feature ブランチを作成し、開発/検証/本番環境へデプロイするCDKコードを push する  \n3. develop -> staging -> production ブランチとマージしていくことで各環境にコードがデプロイされることを確認\nLab 2：ソース管理 以降の手順については、従来のワークショップの手順と同一です。手順内のAWS CodeCommitを適宜GitLabに読み替えて実施して下さい。\n## 終わりに\nAWS CodeConnectionsさえ作ってしまえば、GitLabとAWSを簡単に連携出来るようになります。本ワークショップではシングルアカウントを想定して解説しましたが、Resource Access Managerを使う事でマルチアカウントにも対応可能です。AWSとGitLabを組み合わせたCI/CDパイプラインのご相談があれば、ソニービズネットワークスまでご相談下さい。\n以上、ソニービズネットワークスのAWS Ambassador、濱田 一成がお送りしました。\n***謝辞：本ブログは、Amazon Web Services, Inc. 社作成のワークショップ「[マルチアカウント IaC・CI/CD ワークショップ ](https://catalog.us-east-1.prod.workshops.aws/workshops/f95fc450-f2bf-47e2-9834-11f1470cbfd1/ja-JP)」を元に、GitLab版の作成依頼をGitLab Japanからソニービズネットワークス社濱田様にご依頼をして作成いただいたものになります。***\n***ソニービズネットワークス社は、ソニーグループの法人向けICTソリューション事業を展開しています。高品質な法人向けインターネット接続サービス「NUROアクセス」を主力に、クラウドサービス、セキュリティ、AIサービスなど、ビジネスに必要なインフラとシステムをワンストップで提供し、企業の成長と効率化を支援しています。この度、GitLabのオフィシャルリセールパートナーとなりました。***\n","2025-10-23","https://res.cloudinary.com/about-gitlab-com/image/upload/v1760931161/nm0kiehnfb0xdmthakmr.jpg",[27,28],"Tsukasa Komatsubara","Issei Hamada, Sony Biz Networks Corporation","GitLabで実現するマルチアカウントCI/CD","AWS CodeConnectionsを活用し、GitLabとAWSを連携させたCI/CDパイプラインの構築方法を解説。マルチアカウント環境でのIaC実装をステップバイステップで紹介します。","yml",{},"/ja-jp/blog/aws-multi-account-cicd-gitlab",{"config":35,"title":37,"description":38,"ogTitle":39},{"noIndex":36,"ogImage":25},false,"GitLabで実現するマルチアカウントCI/CD\n","AWS CodeConnectionsを活用し、GitLabとAWSを連携させたCI/CDパイプラインの構築方法を解説。マルチアカウント環境でのIaC実装をステップバイステップで紹介します。\n","","ja-jp/blog/aws-multi-account-cicd-gitlab",[17,42,43,20,44,22],"aws","cicd","public-sector","SJUZVcE8tn0Sg9iwqE8sjPBpw6LpxW5B5uBqFPgNrFg",{"data":47},{"logo":48,"freeTrial":53,"sales":58,"login":63,"items":68,"search":372,"minimal":405,"duo":422,"pricingDeployment":431},{"config":49},{"href":50,"dataGaName":51,"dataGaLocation":52},"/ja-jp/","gitlab logo","header",{"text":54,"config":55},"無料トライアルを開始",{"href":56,"dataGaName":57,"dataGaLocation":52},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp&glm_content=default-saas-trial/","free trial",{"text":59,"config":60},"お問い合わせ",{"href":61,"dataGaName":62,"dataGaLocation":52},"/ja-jp/sales/","sales",{"text":64,"config":65},"サインイン",{"href":66,"dataGaName":67,"dataGaLocation":52},"https://gitlab.com/users/sign_in/","sign in",[69,96,190,195,294,354],{"text":70,"config":71,"cards":73},"プラットフォーム",{"dataNavLevelOne":72},"platform",[74,80,88],{"title":70,"description":75,"link":76},"DevSecOpsに特化したインテリジェントオーケストレーションプラットフォーム",{"text":77,"config":78},"プラットフォームを詳しく見る",{"href":79,"dataGaName":72,"dataGaLocation":52},"/ja-jp/platform/",{"title":81,"description":82,"link":83},"GitLab Duo Agent Platform","ソフトウェアライフサイクル全体を支えるエージェント型AI",{"text":84,"config":85},"GitLab Duoのご紹介",{"href":86,"dataGaName":87,"dataGaLocation":52},"/ja-jp/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":89,"description":90,"link":91},"GitLabが選ばれる理由","エンタープライズがGitLabを選ぶ主な理由をご覧ください",{"text":92,"config":93},"詳細はこちら",{"href":94,"dataGaName":95,"dataGaLocation":52},"/ja-jp/why-gitlab/","why gitlab",{"text":97,"left":12,"config":98,"link":100,"lists":104,"footer":173},"製品",{"dataNavLevelOne":99},"solutions",{"text":101,"config":102},"すべてのソリューションを表示",{"href":103,"dataGaName":99,"dataGaLocation":52},"/ja-jp/solutions/",[105,129,151],{"title":106,"description":107,"link":108,"items":113},"自動化","CI/CDと自動化でデプロイを加速",{"config":109},{"icon":110,"href":111,"dataGaName":112,"dataGaLocation":52},"AutomatedCodeAlt","/ja-jp/solutions/delivery-automation/","automated software delivery",[114,117,120,125],{"text":19,"config":115},{"href":116,"dataGaLocation":52,"dataGaName":19},"/ja-jp/solutions/continuous-integration/",{"text":81,"config":118},{"href":86,"dataGaLocation":52,"dataGaName":119},"gitlab duo agent platform - product menu",{"text":121,"config":122},"ソースコード管理",{"href":123,"dataGaLocation":52,"dataGaName":124},"/ja-jp/solutions/source-code-management/","Source Code Management",{"text":126,"config":127},"自動化されたソフトウェアデリバリー",{"href":111,"dataGaLocation":52,"dataGaName":128},"Automated software delivery",{"title":130,"description":131,"link":132,"items":137},"セキュリティ","セキュリティを犠牲にすることなくコード作成を高速化",{"config":133},{"href":134,"dataGaName":135,"dataGaLocation":52,"icon":136},"/ja-jp/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[138,142,147],{"text":139,"config":140},"Application Security Testing",{"href":134,"dataGaName":141,"dataGaLocation":52},"Application security testing",{"text":143,"config":144},"ソフトウェアサプライチェーンの安全性",{"href":145,"dataGaLocation":52,"dataGaName":146},"/ja-jp/solutions/supply-chain/","Software supply chain security",{"text":148,"config":149},"Software Compliance",{"href":150,"dataGaName":148,"dataGaLocation":52},"/ja-jp/solutions/software-compliance/",{"title":152,"link":153,"items":158},"測定",{"config":154},{"icon":155,"href":156,"dataGaName":157,"dataGaLocation":52},"DigitalTransformation","/ja-jp/solutions/visibility-measurement/","visibility and measurement",[159,163,168],{"text":160,"config":161},"可視性と測定",{"href":156,"dataGaLocation":52,"dataGaName":162},"Visibility and Measurement",{"text":164,"config":165},"バリューストリーム管理",{"href":166,"dataGaLocation":52,"dataGaName":167},"/ja-jp/solutions/value-stream-management/","Value Stream Management",{"text":169,"config":170},"分析とインサイト",{"href":171,"dataGaLocation":52,"dataGaName":172},"/ja-jp/solutions/analytics-and-insights/","Analytics and insights",{"title":174,"items":175},"GitLabが活躍する場所",[176,181,186],{"text":177,"config":178},"Enterprise",{"href":179,"dataGaLocation":52,"dataGaName":180},"/ja-jp/enterprise/","enterprise",{"text":182,"config":183},"スモールビジネス",{"href":184,"dataGaLocation":52,"dataGaName":185},"/ja-jp/small-business/","small business",{"text":187,"config":188},"公共機関",{"href":189,"dataGaLocation":52,"dataGaName":21},"/ja-jp/solutions/public-sector/",{"text":191,"config":192},"価格",{"href":193,"dataGaName":194,"dataGaLocation":52,"dataNavLevelOne":194},"/ja-jp/pricing/","pricing",{"text":196,"config":197,"link":199,"lists":203,"feature":281},"関連リソース",{"dataNavLevelOne":198},"resources",{"text":200,"config":201},"すべてのリソースを表示",{"href":202,"dataGaName":198,"dataGaLocation":52},"/ja-jp/resources/",[204,236,254],{"title":205,"items":206},"はじめに",[207,212,217,222,227,232],{"text":208,"config":209},"インストール",{"href":210,"dataGaName":211,"dataGaLocation":52},"/ja-jp/install/","install",{"text":213,"config":214},"クイックスタートガイド",{"href":215,"dataGaName":216,"dataGaLocation":52},"/ja-jp/get-started/","quick setup checklists",{"text":218,"config":219},"学ぶ",{"href":220,"dataGaLocation":52,"dataGaName":221},"https://university.gitlab.com/","learn",{"text":223,"config":224},"製品ドキュメント",{"href":225,"dataGaName":226,"dataGaLocation":52},"https://docs.gitlab.com/","product documentation",{"text":228,"config":229},"ベストプラクティスビデオ",{"href":230,"dataGaName":231,"dataGaLocation":52},"/ja-jp/getting-started-videos/","best practice videos",{"text":233,"config":234},"インテグレーション",{"href":235,"dataGaName":20,"dataGaLocation":52},"/ja-jp/integrations/",{"title":237,"items":238},"検索する",[239,244,249],{"text":240,"config":241},"お客様成功事例",{"href":242,"dataGaName":243,"dataGaLocation":52},"/ja-jp/customers/","customer success stories",{"text":245,"config":246},"ブログ",{"href":247,"dataGaName":248,"dataGaLocation":52},"/ja-jp/blog/","blog",{"text":250,"config":251},"リモート",{"href":252,"dataGaName":253,"dataGaLocation":52},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":255,"items":256},"つなげる",[257,262,267,272,277],{"text":258,"config":259},"GitLabサービス",{"href":260,"dataGaName":261,"dataGaLocation":52},"/ja-jp/services/","services",{"text":263,"config":264},"コミュニティ",{"href":265,"dataGaName":266,"dataGaLocation":52},"/community/","community",{"text":268,"config":269},"フォーラム",{"href":270,"dataGaName":271,"dataGaLocation":52},"https://forum.gitlab.com/","forum",{"text":273,"config":274},"イベント",{"href":275,"dataGaName":276,"dataGaLocation":52},"/events/","events",{"text":278,"config":279},"パートナー",{"href":280,"dataGaName":17,"dataGaLocation":52},"/ja-jp/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":52},"/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":52},"/ja-jp/company/","about",{"text":307,"config":308,"footerGa":311},"採用情報",{"href":309,"dataGaName":310,"dataGaLocation":52},"/jobs/","jobs",{"dataGaName":310},{"text":273,"config":313},{"href":275,"dataGaName":276,"dataGaLocation":52},{"text":315,"config":316},"経営陣",{"href":317,"dataGaName":318,"dataGaLocation":52},"/company/team/e-group/","leadership",{"text":320,"config":321},"チーム",{"href":322,"dataGaName":323,"dataGaLocation":52},"/company/team/","team",{"text":325,"config":326},"ハンドブック",{"href":327,"dataGaName":328,"dataGaLocation":52},"https://handbook.gitlab.com/","handbook",{"text":330,"config":331},"投資家向け情報",{"href":332,"dataGaName":333,"dataGaLocation":52},"https://ir.gitlab.com/","investor relations",{"text":335,"config":336},"トラストセンター",{"href":337,"dataGaName":338,"dataGaLocation":52},"/ja-jp/security/","trust center",{"text":340,"config":341},"AI Transparency Center",{"href":342,"dataGaName":343,"dataGaLocation":52},"/ja-jp/ai-transparency-center/","ai transparency center",{"text":345,"config":346},"ニュースレター",{"href":347,"dataGaName":348,"dataGaLocation":52},"/company/contact/#contact-forms","newsletter",{"text":350,"config":351},"プレス",{"href":352,"dataGaName":353,"dataGaLocation":52},"/press/","press",{"text":59,"config":355,"lists":356},{"dataNavLevelOne":297},[357],{"items":358},[359,362,367],{"text":59,"config":360},{"href":61,"dataGaName":361,"dataGaLocation":52},"talk to sales",{"text":363,"config":364},"サポートポータル",{"href":365,"dataGaName":366,"dataGaLocation":52},"https://support.gitlab.com","support portal",{"text":368,"config":369},"カスタマーポータル",{"href":370,"dataGaName":371,"dataGaLocation":52},"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":66,"dataGaName":379,"dataGaLocation":380},"search login","search",{"text":382,"default":383},"提案",[384,386,391,393,397,401],{"text":81,"config":385},{"href":86,"dataGaName":81,"dataGaLocation":380},{"text":387,"config":388},"コード提案（AI）",{"href":389,"dataGaName":390,"dataGaLocation":380},"/ja-jp/solutions/code-suggestions/","Code Suggestions (AI)",{"text":19,"config":392},{"href":116,"dataGaName":19,"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":94,"dataGaName":404,"dataGaLocation":380},"Why GitLab?",{"freeTrial":406,"mobileIcon":410,"desktopIcon":415,"secondaryButton":418},{"text":54,"config":407},{"href":408,"dataGaName":57,"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":205,"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":86,"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":193,"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":52},"/ja-jp/events/transcend/virtual/","transcend event",{"layout":449,"icon":450,"disabled":12},"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":70,"links":477,"subMenu":482},[478],{"text":479,"config":480},"DevSecOpsプラットフォーム",{"href":79,"dataGaName":481,"dataGaLocation":459},"devsecops platform",[483],{"title":191,"links":484},[485,489,494],{"text":486,"config":487},"プランの表示",{"href":193,"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":134,"dataGaName":141,"dataGaLocation":459},{"text":126,"config":511},{"href":111,"dataGaName":112,"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":123,"dataGaName":525,"dataGaLocation":459},"source code management",{"text":19,"config":527},{"href":116,"dataGaName":528,"dataGaLocation":459},"continuous integration & delivery",{"text":164,"config":530},{"href":166,"dataGaName":531,"dataGaLocation":459},"value stream management",{"text":533,"config":534},"GitOps",{"href":535,"dataGaName":536,"dataGaLocation":459},"/ja-jp/solutions/gitops/","gitops",{"text":177,"config":538},{"href":179,"dataGaName":180,"dataGaLocation":459},{"text":182,"config":540},{"href":184,"dataGaName":185,"dataGaLocation":459},{"text":187,"config":542},{"href":189,"dataGaName":21,"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":196,"links":554},[555,557,559,561,564,566,569,571,573,575,577,579,581],{"text":208,"config":556},{"href":210,"dataGaName":211,"dataGaLocation":459},{"text":213,"config":558},{"href":215,"dataGaName":216,"dataGaLocation":459},{"text":218,"config":560},{"href":220,"dataGaName":221,"dataGaLocation":459},{"text":223,"config":562},{"href":225,"dataGaName":563,"dataGaLocation":459},"docs",{"text":245,"config":565},{"href":247,"dataGaName":248},{"text":567,"config":568},"お客様の成功事例",{"href":242,"dataGaLocation":459},{"text":240,"config":570},{"href":242,"dataGaName":243,"dataGaLocation":459},{"text":250,"config":572},{"href":252,"dataGaName":253,"dataGaLocation":459},{"text":258,"config":574},{"href":260,"dataGaName":261,"dataGaLocation":459},{"text":263,"config":576},{"href":265,"dataGaName":266,"dataGaLocation":459},{"text":268,"config":578},{"href":270,"dataGaName":271,"dataGaLocation":459},{"text":273,"config":580},{"href":275,"dataGaName":276,"dataGaLocation":459},{"text":278,"config":582},{"href":280,"dataGaName":17,"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":59,"links":619},[620,622,627,629,634,639,644],{"text":59,"config":621},{"href":61,"dataGaName":62,"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":12},"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":12},[658,671],{"id":659,"title":27,"body":9,"config":660,"content":662,"description":9,"extension":31,"meta":666,"navigation":12,"path":667,"seo":668,"stem":669,"__hash__":670},"blogAuthors/en-us/blog/authors/tsukasa-komatsubara.yml",{"template":661},"BlogAuthor",{"name":27,"config":663},{"headshot":664,"ctfId":665},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659784/Blog/Author%20Headshots/gitlab_tsukasa.jpg","31YQLiBRrJPn35BBhY69ly",{},"/en-us/blog/authors/tsukasa-komatsubara",{},"en-us/blog/authors/tsukasa-komatsubara","O5IhL3DQ7MAo8yzVzaeGvidF81OrGBrv7DgR3C9ySBc",{"id":672,"title":673,"body":9,"config":674,"content":676,"description":9,"extension":31,"meta":679,"navigation":12,"path":680,"seo":681,"stem":682,"__hash__":683},"blogAuthors/en-us/blog/authors/issei-hamada-sony-biz-networks-corporation.yml","Issei Hamada Sony Biz Networks Corporation",{"template":661,"gitlabHandle":675},"https://gitlab.com/issei-hamada",{"config":677,"name":28},{"headshot":678},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1760414048/buvcowublhq36ongtzbx.png",{},"/en-us/blog/authors/issei-hamada-sony-biz-networks-corporation",{},"en-us/blog/authors/issei-hamada-sony-biz-networks-corporation","25f53KYYX9JQ20bcj6IUFir2T0KOIPcMehhE6OTkA9A",[685,702,714],{"content":686,"config":700},{"heroImage":687,"body":688,"authors":689,"updatedDate":39,"date":691,"title":692,"tags":693,"description":699,"category":10},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772762140/zuh6yujweuoaixks5lul.jpg","2026年2月10日、GitLab は「GitLab Transcend Japan」を開催しました。本記事では、ビデオとセッションの模様を中心にレポートします。\n\n## **SaaSはAgentic AIの「主語」であるべき**\n\n![](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772762586/uqq532hneioadonhyl6i.jpg \"GitLab合同会社 Head of Japan 小澤 正治\")\n\nGitLab は2026年2月10日、東京・六本木ヒルズクラブで「GitLab Transcend Japan」を開催しました。今回のイベントは、世界12都市で同日開催されたグローバルカンファレンスの一環で、GitLabを先進的に活用されている国内ユーザーの皆様の中から、グローバルで選定された方々を招待して実施しました。\n\nオープニングセッションには、GitLab Head of Japan 小澤 正治が登壇。小澤は、AIが急速に普及し「手段」として定着しつつある現状を踏まえ、Tech [SaaS](https://about.gitlab.com/ja-jp/blog/what-is-saas/)のあり方を再定義する必要性について以下のように語りました。\n\n「これからは、[Agentic AI](https://about.gitlab.com/ja-jp/topics/agentic-ai/)（自律型のAI）そのものを主語として考えるSaaSなのか、それともSaaSというプラットフォームを主語にして考えるAgentic AIなのか、この違いが問われる時代になります」\n\n統合プラットフォームであるGitLabは、ソフトウェア開発における複雑なワークフローをコントロールし、すべてのトランザクションをデータとして蓄積しています。そして、この膨大かつ正確なデータ群のおかげで、人やAIはコンテキスト（文脈）としてその全容を理解できるようになるのです。つまり、AIが精度の高い回答を提供してくれるか否かは、こうしたデータがそろっているかどうかが大きなカギになるわけです。「これこそ、GitLabが提供できる根源的な価値になります」（小澤）。\n\n小澤は、現在の日本企業を取り巻く環境について、3つの重要なトピックを挙げました。サイバーセキュリティと法規制、円安と輸出規制、および2025年の崖と人材不足です。\n\nサイバーセキュリティと法規制では、サイバー攻撃によるインシデントが多発する中、NIST（米国国立標準技術研究所）のガイドラインなど、国内外の法規制への対応が必須となっています。もはやセキュリティは「努力目標」ではなく「経営課題」と言える状況です。円安と輸出規制では、円安が輸出企業にとって追い風になる一方、欧州のサイバーレジリエンス法（CRA）やGDPRなどの規制をクリアしなければグローバル市場で戦えません。これらがビジネスのハードルになるケースが増えてきています。最後の2025年の崖と人材不足では、レガシーシステムのモダナイゼーションを推進できるIT人材の確保が多くの企業にとって悩みの種になっています。\n\nGitLabは、これらの課題に対しシングルプラットフォームという価値でこたえることができます。\n\n小澤は、「ソフトウェア開発のすべてをGitLab上で行うことで、データは単一のデータストアに蓄積されます。分断されたツール群では成し得ないこのデータとコンテキストの一元化こそが、AI活用における最大の武器になります。また、コンプライアンスやガバナンスに強制力を効かせながら、効率を下げずにソフトウェア開発することで、安心・安全なデリバリーが可能になるのです」と語りました。\n\n## **インテリジェント・オーケストレーションがソフトウェア開発の未来を切り拓く**\n\n![](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772762585/aquhu0vpb07ibmortwhg.jpg \"会場の様子\")\n\n続いて、会場のスクリーンで全世界に向けたビデオが放映されました。GitLab CEO Bill Staplesをはじめとする経営陣、そして先進的なユーザー企業が登場し、AI時代の新たなソフトウェア開発戦略の発表の場です。\n\nStaplesは、「月曜の朝、コーヒーを片手にPCを開き、仕事をスタートさせます。しかし、実際にコードを書く時間はどれくらいあるでしょう？」と語りかけます。[25万人の開発者を対象とした調査](https://about.gitlab.com/ja-jp/developer-survey/japan/)によると、開発者が実際にコードを書いている時間は、1日平均でわずか52分に過ぎません。残りの時間は、会議、承認待ち、障害対応、およびその他の雑務に奪われているのです。\n\nこれがAIのパラドックスです。AIコーディングツールは、生産性10倍とうたいますが、それは業務全体のわずか10〜20%に過ぎないコーディング時間を短縮しているだけ。前後のプロセスにあるボトルネックが解消されない限り、ビジネス全体のデリバリー速度は劇的には向上しないのです。\n\nこの課題を解消するために、Staplesは「インテリジェント・オーケストレーション」という方向性を提唱します。これまでの開発は、人間がバケツリレーのように工程を渡していく「ステージベース」でした。これからは、AIエージェントが自律的にタスクを拾い、プロセス間を繋ぐ形へとシフトします。\n\n「人間はループの上に立ち、エージェントをオーケストレーション（指揮）する役割へと進化します」（Staples）と語ります。雑務から解放され、戦略や創造的な意思決定に集中する未来の姿がそこにあります。\n\n続いて、このビジョンを実践している企業として、サウスウエスト航空社のManaging Director、Grant Morris氏が登場しました。同社は、個別最適化されたツール群を捨て、GitLabでソフトウェア開発の全プロセスを統合。セキュリティとコンプライアンスを担保しながら開発者がビジネス価値の創出に集中できる環境を整備しています。\n\nAI活用についてGrant氏は、「セキュリティ修正や依存関係のアップデートなど、エンジニアが疲弊するルーティンワークをAIエージェントに任せています」と語ります。さらに将来は、「AIエージェントがバックグラウンドで常にコードを監視し、リファクタリング（ソフトウェアの内部コード構造を整理する作業）やアップグレードを自律的に提案してくれるようになるでしょう。つまり、技術的負債という概念自体が過去のものになります」と語りました。\n\n続いて登場したGitLab CPMOのManav Khuranaは、インテリジェント・オーケストレーションを実現するための製品戦略について解説しました。\n\nまずは、AIエージェントをGitLab内で機能させる基盤となるAgentic Coreの進化。リポジトリやイシューなどをAIがコンテキストとして理解できるように構造化する独自技術を提供します。汎用的なエージェントに加え、各社独自のノウハウを組み込んだCustom Agentsを作成・公開できるAI Catalogを用意し、JiraやSlackなど外部ツールからもコンテキストを取得するためにModel Context Protocol （MCP）にも対応します。\n\n既存機能の強化では、複雑なYAMLを書かずにAIと対話しながらパイプラインを構築できるAIファーストのCI/CDビルダーや、あらゆる成果物をGitLab内で一元管理し、AIエージェントが機密性の高い状態でも安全にアクセスできる仕組みを構築します。\n\nGitLabは、SaaSだけでなく、オンプレミス環境でも利用できます。AIもオンプレミスで利用できるよう、ガバナンスを効かせた状態でAIを活用できる環境も提供します。独自のAIモデルを持ち込むBYOM（Bring Your Own Model）や、インターネット遮断環境（エアギャップ）にも対応します。\n\nビデオの終盤には、Oracle Group VPであるVictor Restrepo氏が登場し、GitLabとの強力なパートナーシップについて語りました。Restrepo氏は、Oracle Cloud Infrastructure （OCI）のコストパフォーマンスとGitLabの効率性を組み合わせることでインフラコストを削減し、その分をイノベーション投資に回すクラウドエコノミクスの重要性を強調。「政府系クラウドや専用リージョンを持つOCI上でGitLabを稼働させれば、厳しい規制が課される業界でもセキュアにAIを活用できるようになります」とGitLabとの親和性についても語りました。\n\n## **コンテキストを理解し、自律的に動くAIエージェント**\n\n![](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772762585/etl4f4uhcggrndlhwgr2.jpg \"GitLab合同会社 ソリューションアーキテクト本部 シニアソリューションアーキテクト 吉瀬 淳一\")\n\nビデオで披露された最新機能について、次のセッションで実機デモを交えた解説が行われました。その際にも強調されたのは、コンテキストの重要性です。AIエージェントが的確な仕事をするためには、プロジェクトの全容を理解している必要があります。企画から監視までをシングルプラットフォームで管理しているGitLabだからこそ、AIは断片的な情報ではなく、プロジェクトの全履歴という文脈を理解した上で自律的に動くことができるのです。\n\nデモでは、まず[Duo Planner Agent](https://docs.gitlab.com/ja-jp/user/duo_agent_platform/agents/foundational_agents/planner/)を紹介。「こんな感じの機能をリリースしたい」という人間からの曖昧な指示に対し、AIはバックログや現状のコードベースを分析し、数分で具体的なタスクへと分解し、実行計画を立案してくれます。[Duo CLI](https://docs.gitlab.com/ja-jp/cli/duo/cli/)のデモでは、ターミナル上での作業をAIが支援してくれる様子が披露されました。対話内容はWeb UIと同期されるため、開発者はツール間を行き来することなく、シームレスに作業を継続できます。\n\n[Foundational Flows](https://docs.gitlab.com/ja-jp/user/duo_agent_platform/flows/foundational_flows/)のデモでは、CIパイプラインが失敗した際にワンクリックでAIがログを解析してくれました。原因の特定から修正コードの作成、そして修正用マージリクエストの作成まで、AIが自律的に支援してくれます。[Security Analyst Agent](https://docs.gitlab.com/ja-jp/user/duo_agent_platform/agents/foundational_agents/security_analyst_agent/)も便利です。脆弱性が検出された際に、単に警告を出すだけではなく、AIエージェントが「なぜ危険なのか」を解説し、具体的な修正パッチを作成してくれます。\n\n![](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772762585/a9yas83dxdhjopxifx5z.jpg \"写真左から株式会社SBI証券 執行役員 IT企画部長 武藤 恵慈氏、GitLab合同会社 Head of Japan 小澤正治\")\n\n最後のセッションには、国内の先進事例として、株式会社SBI証券 執行役員 IT企画部長 武藤 恵慈氏をお招きし、小澤とのFireside Chatを実施しました。かつてはシステムや言語が乱立する課題を抱えていた同社は内製化へと大きく舵を切り、大規模かつ多数のプロジェクトを効率的に推進しています。詳細なセッション内容は、近日中に公開予定です。\n\nこの日のイベントでは、Staplesの以下の発言が印象に残りました。\n\n「ソフトウェア開発は、コードを書くことから価値を創ることへと変化しています」\n\nGitLabは単なるツールから、人間とAIエージェントが協調して働くための基盤である「インテリジェント・オーケストレーション・プラットフォーム」へと進化します。AIのパラドックスを乗り越え、開発者が真のイノベーションに注力できる未来へ。「Transcend（=超越）」というイベント名にふさわしい、新たな時代が幕を開けます。",[690],"GitLab Japan Team","2026-03-10","AIのパラドックスを解くカギはインテリジェント・オーケストレーション【GitLab Transcend Japanレポート】",[694,19,695,696,276,697,698],"AI/ML","customers","DevSecOps","security","user stories","2026年2月10日に開催した「GitLab Transcend Japan」の模様をレポートします。\n",{"featured":12,"template":13,"slug":701},"event-report-transcend-tokyo-2026",{"content":703,"config":712},{"heroImage":704,"body":705,"authors":706,"updatedDate":707,"date":708,"title":709,"tags":710,"description":711,"category":10},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1770082992/ll61ekf2lcgogkgay69j.jpg","*2026年2月5日追記：本文内に東レ様の事例を追加しました。*\n\n2025年11月に開催した年次イベント「GitLab Epic Tour Japan 2025」の模様をお伝えします。\n\n> 【期間限定！動画で見る】GitLab Epic Tour Japan 2025 オンデマンド配信は[こちら](https://www.event-site.info/gitlab-epic-conference-japan-2025/?r=eventreport)\n\nGitLabは2025年11月28日、都内で年次イベントで「GitLab Epic Tour Japan 2025 〜AI駆動ソフトウェア開発の攻めと守り〜」を開催しました。生成AIの登場により、ソフトウェア開発の現場は大きな変化にさらされることになりました。コード生成AIを活用して生産性向上を狙う「攻め」については、すでに多くの開発者が取り組んでいます。一方、AIが生成したコードの脆弱性をどうすべきかという「守り」の重要性が、かつてないほど高まっています。この日のイベントでは、AI時代の開発プラットフォームのあり方、そして日本企業が直面する課題への具体的な処方箋を示しました。本稿では、主要セッションの内容を中心に、イベントの全容をレポートします。\n\n## **「DevSecOps認知度30%」の数年後に、AI Native時代がやってきた**\n\n![「DevSecOps認知度30%」の数年後に、AI Native時代がやってきた](https://res.cloudinary.com/about-gitlab-com/image/upload/v1770083035/sp4llxhmbx2kcawgexyp.jpg \"GitLab合同会社 Japan Country Manager 小澤 正治\")\n\nオープニングセッションでは、GitLab Japan Country manager小澤 正治がご挨拶させていただきました。小澤は2年半前の入社当時を振り返り、次のように語ります。\n\n「当時、経済産業省のレポートを読むと、国内の[DevSecOps](https://about.gitlab.com/ja-jp/topics/devsecops/)の認知度はわずか30%でした。正直、どうしようかと震えていたのですが、状況は大きく変わりました。この変化にワクワクしています」\n\nこの2年半で、GitLab自身も大きく進化しました。当時は単に「[DevSecOps](https://about.gitlab.com/ja-jp/topics/devsecops/) Platform」でしたが、AI要素を付加した「AI Powered」が枕詞になりました。そして現在は、「AI Native [DevSecOps](https://about.gitlab.com/ja-jp/topics/devsecops/) Platform」です。つまり、GitLabそのものがAIを中核に据えたプラットフォームへと成長したと言えます。\n\n![「DevSecOps認知度30%」の数年後に、AI Native時代がやってきた](https://res.cloudinary.com/about-gitlab-com/image/upload/v1770083037/z1vvb6yuqznqlpe9nukf.jpg \"GitLab合同会社 Staff Regional Marketing Manager 川口 修平\")\n\n続いて登壇したStaff Regional Marketing Manager 川口 修平は、AI導入により開発者1人あたり年間120万円相当の工数を削減でき、その結果として日本の経済効果が約1兆6000億円に上るという試算を[紹介](https://japanese-developer-survey.about.gitlab-review.app/ja-jp/developer-survey/japan/)。ただし、AI活用に立ちはだかる困難を、「3つの壁」として提示しました。\n\nまずは、技術的負債の壁。レガシーコードやドキュメント不足が、AIのコンテキスト理解を妨げています。続いて、セキュリティリスクの壁。 AI生成コードの約45%に脆弱性が含まれるというデータがあり、インシデントを防ぐ防災に加えて、被害を最小限にする減災の考え方も不可欠になります。最後に、人材の壁。エンジニアの役割はコードを書くことから、AIの成果物が正しいかどうかを評価することへシフトします。\n\nこれらの課題を解決するカギになるのが、[GitLab Duo Agent Platform](https://about.gitlab.com/ja-jp/gitlab-duo-agent-platform/)（以下、DAP）です。開発サイクル上のすべての情報を単一データストアへと集約することで、AIがコンテキストを深く理解し、精度が高く、かつ自律的な支援が可能になります。\n\n## **「Prompt to Production」の危険性と、自律型AIエージェントの未来**\n\n![「Prompt to Production」の危険性と、自律型AIエージェントの未来](https://res.cloudinary.com/about-gitlab-com/image/upload/v1770083038/ydpympgpv51g0tncpw7j.jpg \"GitLab CTO Asia Pacific & Japan Andrew Haschka\")\n\n続いて登壇したGitLab CTO Asia Pacific & Japan Andrew Haschka氏は、アジア太平洋地域のリーダーたちとの対話から得た知見をに基づき、AI活用の次のステージについて語りました。\n\nHaschkaは、「AIを正しく機能させるためには、開発の全工程を網羅した“信頼できる唯一の情報源”が不可欠です」と強調します。現在、多くの企業は開発現場にAIを導入していますが、その用途は「AIコーディング」に偏りすぎています。しかしながら、計画、テスト、セキュリティといった周辺プロセスにも、AIによる最適化の余地があるのです。\n\n「私は、ガバナンスがない状態で、バラバラのAIツールを使うことをPrompt to Productionと呼び、危険視しています。テストやセキュリティチェックをスキップし、プロンプトの結果をいきなり本番環境へ反映してしまうリスクがあるためです」（Haschka）\n\nこの問題を解決するのが、[DAP](https://about.gitlab.com/ja-jp/gitlab-duo-agent-platform/)と[Agentic Flows](https://docs.gitlab.com/ja-jp/user/duo_agent_platform/flows/)。人間がAIに質問して答えを得るチャットボット形式とは一線を画す概念で、1人の人間が多数のAIエージェントを指揮します。すると、エージェント同士が連携し、計画から実装、テストまでを自律的な流れとして実行することになります。\n\nHaschkaは、「GitLabのAIエージェントは、組織のポリシーというガードレールの下で動きます。だからこそ、リスクを最小限に抑えながらイノベーションを加速できるのです」と話します。「AIは、開発者のためにコードを書いてくれるだけでなく、チームメンバーとして一緒に働いてくれる存在になります」。\n\nAIツールをバラバラに使う段階は終わりました。すでに、統合プラットフォーム上でAIを“良き同僚”として迎え入れる環境は整っています。\n\n## **3つの壁を突破する具体的アプローチ**\n\n![3つの壁を突破する具体的アプローチ](https://res.cloudinary.com/about-gitlab-com/image/upload/v1770083038/gazgh2phoxeiglbzsutt.jpg \"GitLab合同会社 ソリューションアーキテクト 本部長 藤田 周\")\n\n続いて、ソリューションアーキテクト 本部長 藤田 周が登壇しました。藤田は、オープニングで提示された3つの壁に対する、より実践的で技術的な解決策を深掘りしました。\n\n技術的負債の壁は、リアーキテクチャで乗り越えます。古いシステムを単にクラウドに乗せ換える「リホスト」や、すべてを作り直す「リビルド」は、コストの面でも効果の面で現実的にならないケースが目につきます。そこで藤田は、生成AIを活用した「リアーキテクチャ」を提唱します。\n\n具体的には、まずレガシーコードをAIに読み込ませ、人間にとってもAIにとっても理解しやすい「マークダウン形式の設計書」を出力。ブラックボックス化した仕様を可視化した上で、モダンなコードとテストケースをAIに生成させるというアプローチを取ります。これにより、手のつけられなかった旧来のシステムが、最新のアーキテクチャ上で以前と同様の機能を提供してくれるようになります。\n\nセキュリティリスクの壁は、スピードがカギを握ることになります。巷間、「脆弱性が公開されてから攻撃が始まるまで、わずか15分」という数字が語られていますが、これは現実です。攻撃を受けてから人間が会議を開き、パッチ適用の計画を立てている間に、攻撃者はすでに侵入を開始しているのです。\n\n藤田はデモを通じて、GitLabの[Security Analyst Agent](https://docs.gitlab.com/ja-jp/user/duo_agent_platform/agents/foundational_agents/security_analyst_agent/)がこのスピードに対抗できることを示しました。AIエージェントが膨大な脆弱性情報の中から誤検知を取り除き、自動で対応すべき優先順位を付け、さらに修正コードまで作成してくれます。人間はAIの提案を確認してマージボタンを押すだけです。藤田は、「精神論や手動チェックではもう守りきれないのです」と語りました。\n\n人材の壁をクリアする第一歩は、伴走支援のエコシステムを構成することです。エンジニアに求められるスキルセットが変化する中、何らかのツールを導入したり、担当者のスキルアップを図るだけでは、解決策になりません。藤田氏は、専門性の高いパートナー企業による伴走支援の重要性について話し、GitLabをプラットフォームとして開発プロセスを最適化すると同時に、優れたパートナー企業をプロセスに取り込み、さらに組織変革をセットで進めます。その際に、パートナー企業が組織変革についてもサポートしてくれれば理想でしょう。\n\n藤田は講演の中で、[DAP](https://about.gitlab.com/ja-jp/gitlab-duo-agent-platform/)による開発の自律化についても紹介しました。AIが先回りして動いてくれる一例が「Issue to MR」です。AIがイシューを読み、計画を立て、コードを書き、マージリクエストまで作成します。また、人間がレビューする前にAIがセキュリティや規約チェックを行う機能により、人間の負荷を劇的に下げることができます。これら一連の仕組みは、プロジェクト全体のコンテキストをAIが理解することで支えられています。\n\n## **4社の最新事例発表も実施**\n\n![4社の最新事例発表も実施](https://res.cloudinary.com/about-gitlab-com/image/upload/v1770083239/nilg9jbd5b6p6epbybqw.jpg \"お客様の講演\")\n\nこの日のイベントでは、ピクシブ株式会社様、東レ株式会社様、日立グループ様（株式会社日立プラントサービス様、株式会社日立システムズ様）、株式会社みんなの銀行様（登壇順）の4社のユーザー企業様がご登壇され、それぞれの挑戦についてご共有いただきました。各社の取り組みについては、以下のリンクよりご覧ください。\n\n・[株式会社みんなの銀行様](https://about.gitlab.com/ja-jp/blog/epic-tokyo-2025-minna-no-ginko/)\n\n・[東レ株式会社様](https://about.gitlab.com/ja-jp/blog/epic-tokyo-2025-toray/)　**NEW！**\n\n・[ピクシブ株式会社様](https://about.gitlab.com/ja-jp/blog/epic-tokyo-2025-pixiv/)  **NEW!**\n\n・日立グループ様（株式会社日立プラントサービス様、株式会社日立システムズ様）**（近日公開予定）**\n\n## **次は1年後。きっと大きな変化が起きているはず**\n\n![次は1年後。きっと大きな変化が起きているはず](https://res.cloudinary.com/about-gitlab-com/image/upload/v1770083054/p39lvxa768ifqlezd4jw.jpg \"会場の様子\")\n\nクロージングセッションに再登壇した小澤は、部分最適の罠について強調しました。AIを活用することで特定の作業やプロセスが高速化したとしても、それが故に別の場所にボトルネックが生まれることになっては意味がありません。全体最適を目指すことが大切で、そのためにGitLabが持つシングルデータストアという基盤が効いてくることになります。\n\nさらに、GitLabが講演した内容と発表された事例を総括し、「かつてDevOpsはSecurityを加えて[DevSecOps](https://about.gitlab.com/ja-jp/topics/devsecops/)になりました。それがいまや完全に[DevSecOps](https://about.gitlab.com/ja-jp/topics/devsecops/)として一体のものとして認識されています。その上で、AI活用が進んでいるのです」と話します。GitLabのAI Native DevSecOpsも、テクノロジーの通過点であり、さらに最適化された未来が待っているのでしょう。\n\n2026年の秋にもまた、GitLabは「Epic Tour Japan」を実施します。\n\n小澤は、「1年先は近いようで遠いです。いまはまだ読めない変化が起きているはずです。しかし、GitLabも世の中のニーズに合わせて柔軟に進化していきます。来年のこのイベントで、これから生まれる新しい事例を皆様にお伝えできることにワクワクしています」と結び、今年のEpic Tourは盛況のうちに幕を閉じました。",[690],"2026-02-17","2026-02-03","AI駆動ソフトウェア開発の攻めと守り【GitLab Epic Tour Japan 2025レポート】",[694,695,696,697,698],"2025年11月に開催した年次イベント「GitLab Epic Tour Japan 2025」の模様をご紹介。",{"featured":12,"template":13,"slug":713},"event-report-epic-tokyo-2025",{"content":715,"config":727},{"heroImage":716,"body":717,"authors":718,"updatedDate":720,"date":721,"title":722,"tags":723,"description":726,"category":10},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1766026372/vmnafxuxmxwzevccjzjz.jpg","***編集部注：私たちは時折、パートナーコミュニティのメンバーにGitLabブログへの寄稿をお願いしています。今回は、サイオステクノロジー株式会社の西下容史氏に寄稿いただきました。***\\\n\\\n***当ブログは、GitLabを運用されている方を対象にしています。開発の中核を担うGitLabは、何らかの障害（例えばサーバーの停止やGitLab自体の停止など）が原因で止まってしまうと、開発業務に大きな影響が出てしまいます。このためGitLabには「止まらない仕組み」が求められています。***\\\n***このブログでは、GitLabの止まらない仕組みを、直感的なGUIが用意されたHAクラスター製品による冗長化構成で実現する方法が紹介されています。***\n\n## **開発を止めないために：GitLabの冗長化を考える**\n\n### GitLabの停止が開発チームに与える影響\n\nGitLabをSelf-Managed版で運用されている企業のインフラ担当者やDevOpsエンジニアの皆さん、GitLabの可用性について不安を感じたことはありませんか？\n\n特に金融系・公共系企業では、セキュリティやコンプライアンスの観点から自社環境でGitLabを運用するケースが増えています。しかし、GitLabが障害で停止してしまうと、開発チーム全体の業務が止まり、システムやサービスのリリースに遅れが発生するなど、ビジネスへの影響は計り知れません。\n\nバージョン管理、CI/CD、課題管理といった開発の中核を担うGitLabだからこそ、「止まらない仕組み」が求められています。\n\n### HAクラスター構成による高可用性の実現\n\nこのような課題に対する有効な解決策が、HAクラスター構成によるGitLabの冗長化です。稼働系と待機系のノードを用意し、障害発生時には自動的に切り替えることで、最小限のダウンタイムでサービスを継続できます。\n\n本記事では、世界で9万ライセンス以上の導入実績を持つHAクラスター製品「LifeKeeper for Linux」を使用した、GitLabの冗長化構成を具体的にご紹介します。Amazon EC2環境でのAZ跨ぎ構成を例に、データ共有の仕組み、障害監視とフェイルオーバーの自動化、そして直感的なGUI操作による管理方法まで、実際の検証結果に基づいて解説していきます。\n\n開発を止めないインフラ基盤の構築を検討されている方は、ぜひ最後までお読みください。\n\n## GitLabとは：開発基盤に求められる高可用性\n\nGitLabは、分散型バージョン管理システムの「Git」を利用したDevSecOpsプラットフォームであり、世界中で多くの企業に採用されています。ファイルのバージョン管理、課題管理、CI/CDパイプラインなど、ソフトウェア開発に必要な機能を統合的に提供します。\n\n## GitLabが停止したときの影響\n\n### GitLab停止時の影響範囲\n\nGitLabが停止すると、以下のような影響が即座に発生します：\n\n\\- **開発作業の停止**: コードのプッシュ・プル、マージリクエストのレビューができなくなる\n\n* **CI/CDの停止**: ビルド、テスト、デプロイといった自動化ワークフローが機能しなくなる\n* **コラボレーションの遮断**: 課題管理やプロジェクト管理機能が使えず、チーム間の連携が途絶える\n* **緊急対応の不可**: 本番環境のバグフィックスやセキュリティパッチ適用ができない\n\n停止時間が数時間に及べば開発計画が大幅に狂い、1日以上の停止は経営層への報告事項となる深刻なビジネスインパクトをもたらします。\n\n### Self-Managed版GitLabにおける冗長化の必要性\n\nGitLabには、SaaS版とSelf-Managed版の2つが提供されています。Self-Managed版は自社で用意した環境（IaaSやオンプレミス）にセットアップして利用するため、可用性の担保は利用者側の責任となります。\n\n特に開発チームの規模が大きい場合や、ミッションクリティカルなシステム開発を行っている場合は、障害発生を前提とした冗長化構成が不可欠です。予め待機系ノードを用意しておき、障害発生時には自動的に稼働系から待機系に切り替えることで、最小限のダウンタイムでの復旧が実現できます。\n\n## 冗長化を実現する技術要素\n\nGitLabの停止リスクに対する有効な解決策が、HAクラスター構成による冗長化です。ここでは、高可用性を実現するための技術要素と、その中核を担う「LifeKeeper for Linux」について解説します。\n\n### HAクラスター構成の基本的な考え方\n\nHAクラスター構成では、稼働系（Active）と待機系（Standby）の2つのノードを用意します。通常時は稼働系でGitLabが動作し、障害が発生した際には自動的に待機系へ切り替わることで、サービスの継続性を確保します。\n\nこの仕組みにより、ハードウェア障害やソフトウェア障害が発生しても、数分程度のダウンタイムでGitLabを復旧できます。重要なのは、待機系が常にスタンバイ状態にあり、稼働系のデータをリアルタイムで同期していることです。これにより、切り替え時にもデータの一貫性が保たれ、開発者は障害発生前とほぼ同じ状態で作業を継続できます。\n\n### LifeKeeper for Linuxとは\n\nLifeKeeper for Linuxは、サイオステクノロジーが提供するHAクラスター製品で、全世界で9万ライセンス以上の導入実績を持つ信頼性の高いソリューションです。Linux環境におけるアプリケーションの高可用性を実現するために設計されており、GitLabのような重要なDevSecOpsプラットフォームの保護に最適です。\n\nLifeKeeperの大きな特徴は、アプリケーションレベルでの可用性担保を実現できる点です。単にサーバーの冗長化を行うだけでなく、GitLabというアプリケーション自体を監視し、異常を検知した際には自動的にフェイルオーバーを実行します。\n\n### 冗長化構成を支える3つの技術要素\n\nLifeKeeperによる冗長化構成は、以下の3つの技術要素で構成されています。\n\n#### 1. データ同期とレプリケーション\n\nLifeKeeperの製品ラインナップである「DataKeeper」は、ローカルディスク（Amazon EC2環境ではEBS）をブロックレベルでリアルタイム同期します。これにより、共有ストレージを使用せずに論理的な共有ディスクを実現できます。稼働系で発生したデータの変更は即座に待機系へ反映されるため、フェイルオーバー時にもデータの整合性が保たれます。\n\n#### 2. 多層的な障害監視\n\nLifeKeeperは2種類の障害監視を並行して実行します。1つ目は、クラスターノード間の相互ハートビート通信によるノード自体の障害監視です。2つ目は、稼働系で動作するGitLabなどのソフトウェアの障害監視です。この多層的な監視により、ハードウェア障害とソフトウェア障害の両方を確実に検知できます。\n\n#### 3. 自動フェイルオーバー機能\n\n障害を検知すると、LifeKeeperは自動的にフェイルオーバーを実行します。待機系ノードでGitLabを起動し、アクセス経路を切り替えることで、サービスを継続します。この一連のプロセスは自動化されているため、深夜や休日に障害が発生した場合でも、管理者の手動介入なしに復旧が完了します。\n\n### 自動フェイルオーバーがもたらすメリット\n\n自動フェイルオーバーの最大のメリットは、復旧時間の短縮です。手動での復旧作業では、障害の検知、原因の特定、復旧手順の実行に多くの時間がかかりますが、自動フェイルオーバーであれば数分以内に復旧が完了します。\\\nまた、人的ミスのリスクも排除できます。緊急時の手動作業では、手順の誤りや設定ミスが発生しがちですが、事前に設定された自動プロセスであれば、確実かつ一貫した復旧が可能です。\\\nさらに、24時間365日の監視体制を人的リソースだけで維持するのは困難ですが、自動フェイルオーバーがあれば、深夜や休日でもシステムが自律的に障害対応を行います。これにより、運用担当者の負担を大幅に軽減できます。\n\n### クラウド環境での冗長化にも対応\n\nLifeKeeperは、Amazon EC2などのクラウド環境での冗長化にも対応しています。標準機能として「Recovery Kit for Route53」や「Recovery Kit for EC2」が提供されており、クラウド特有のネットワーク構成にも柔軟に対応できます。これにより、オンプレミス環境だけでなく、IaaSを利用したSelf-Managed版GitLabの冗長化も実現可能です。\n\n## GitLabのHAクラスター構成\n\nそれでは、LifeKeeper for Linuxを使ってどのようにGitLabを冗長化するのかを見てみましょう。\n\n今回当社では、Amazon EC2環境でAZを跨いだ冗長化構成を検証しました。下記の図は検証構成の概念図です。\n\n![GitLabのHAクラスター構成](https://res.cloudinary.com/about-gitlab-com/image/upload/v1767660747/qdiodwqpg0bgjreswrnf.jpg)\n\n管理クライアントからはRoute53による名前解決でActive側のクラスターノードへのアクセスを実現しています。LifeKeeper for Linuxの標準機能の「Recovery Kit for EC2」を使うことで、スクリプト開発を行わずにGUI上でクラスターのアクセス制御を容易に設定できます。\\\n\\[参考]\\\n今回の検証ではElastic IPによる制御による名前解決を使用しましたが、LifeKeeperは製品の標準機能で下記の方式に対応しています。\\\n[→『LifeKeeper』によるAmazon EC2の冗長化構成の例](https://bccs.sios.jp/usecases/aws.html)\n\n* Recovery Kit for Route53：Route53の名前解決およびクラスターの切り替わり時にAレコードを書き換えて、名前解決した実IPに向けて通信する方式  \n* Recovery Kit for EC2：\n\n\n  - Elastic IPをActiveノードのENIに割り当てることで、外部からActiveノードへの接続を可能にする方式\n  \n  - CIDRの外を指す仮想IPに向けて通信し、クラスターの切り替わり時にルートテーブルの送信先が仮想IPのターゲットを書き換えて通信する方式\n\n\n### データ共有\n\n前述の通り、クラスターノード間のデータ共有には「DataKeeper」を使用しています。本検証では、EBSをブロックレベルでリアルタイム同期することで、論理的な共有ディスクを実現しました。\n\n## 障害監視とフェイルオーバー\n\nLifeKeeperは下記の2種類の障害監視を並行して行っており、障害が検知されると自動的に待機系に切り替え（フェイルオーバー）て復旧を実現します。\n\n1. 相互のハートビート通信によるノードの障害の監視  \n2. Active側の監視対象のソフトウェアの障害の監視\n\n上記の2.については、今回の検証ではQSP（Quick Service Protection）という機能を使っています。QSPはserviceのstatus/stop/startを使って簡易的にソフトウェアを監視や切り替えて保護できる機能です。\\\n\\[参考]\\\n今回の検証ではソフトウェアの保護にQSPを使用しましたが、LifeKeeperは他に下記の2つの方式に対応しています。\n\n* Application Recovery Kit：SIOSが開発した制御スクリプトのラインナップを使う方式  \n* Generic ARK：ユーザーが開発した制御スクリプトをLifeKeeperに組み込んで使う方式\n\n## 直感的な操作を実現するWebGUI\n\nLifeKeeperには直感的な操作を実現するWebGUIが標準機能として提供されています。GitLabのプログラムやファイルシステムなど、各保護対象をクラスターリソースとして登録し、依存関係（起動や停止させる時に他のクラスターリソースを道連れにするかしないか）もツリー構造で直感的かつ効率的に設定できます。\n\n＜クラスターの切り替え前＞\n\n![直感的な操作を実現するWebGUI - クラスターの切り替え前](https://res.cloudinary.com/about-gitlab-com/image/upload/v1767661178/riengalkhmlzhdy1dx4r.jpg)\n\n＜クラスターの切り替え後＞\n\n![直感的な操作を実現するWebGUI - クラスターの切り替え後](https://res.cloudinary.com/about-gitlab-com/image/upload/v1767661364/fo4sjpey107bgsztwijp.jpg)\n\n手順の詳細はぜひ検証レポートをご覧ください。下記からダウンロード頂けます。\n\nhttps://mk.sios.jp/lifekeeper-gitlab-report_l\n\n## まとめとHAクラスター製品「LifeKeeper」について\n\nここまでご覧頂きました通り、開発の中核を担うGitLabには「止まらない仕組み」が求められています。このためには、GitLabの障害を自動的に検知・復旧し、安定した運用が求められます。こうした冗長化構成を、直感的なWebのGUI上で容易に構築できるのが「LifeKeeper」なのです。\n\n「LifeKeeper」は、サイオステクノロジーが提供する全世界で9万ライセンス以上の導入実績があるHAクラスター製品です。「LifeKeeper」を導入することで、アプリケーションレベルでの可用性担保の実現に加えて、データレプリケーション製品の「DataKeeper」と組み合わせることで共有ストレージを使用せずクラウド上でシステムを冗長化させ、システム全体の可用性が高められます。\\\n詳細情報は、\u003Chttps://bccs.sios.jp/lifekeeper/> をご覧ください。\n\n> ### *サイオステクノロジーについて*\n>\n> *サイオステクノロジーは、Linuxに代表されるオープンソースソフトウェアを活用したシステムインテグレーションを原点とし、自社開発ソフトウェアおよびSaaSの販売とサービスを行っています。直近では、クラウドをはじめとするDXの技術領域に注力し、AIの活用支援や次世代を支える製品とサービスを提供しています。これからも革新的なソフトウェア技術を追求し、世界のIT産業に影響力のある存在となって価値を創造し、社会の発展に貢献してまいります。*\\\n> *詳細情報は、\u003Chttps://sios.jp> をご覧ください。*",[27,719],"Hiroshi Nishishita, SIOS Technology, Inc.","2026-01-07","2025-12-19","GitLabを少ない工数で冗長化して安定運用を実現する ～HAクラスターソフトウェア「LifeKeeper」による冗長化～",[724,20,17,725],"cloud native","production","この記事では、GitLabの止まらない仕組みを、直感的なGUIが用意されたHAクラスター製品による冗長化構成で実現する方法をご紹介します。",{"featured":36,"template":13,"slug":728},"gitlab-high-availability-with-lifekeeper-hacluster",{"promotions":730},[731,745,757],{"id":732,"categories":733,"header":735,"text":736,"button":737,"image":742},"ai-modernization",[734],"ai-ml","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":738,"config":739},"Get your AI maturity score",{"href":740,"dataGaName":741,"dataGaLocation":248},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":743},{"src":744},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":746,"categories":747,"header":749,"text":736,"button":750,"image":754},"devops-modernization",[748,10],"product","Are you just managing tools or shipping innovation?",{"text":751,"config":752},"Get your DevOps maturity score",{"href":753,"dataGaName":741,"dataGaLocation":248},"/assessments/devops-modernization-assessment/",{"config":755},{"src":756},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":758,"categories":759,"header":760,"text":736,"button":761,"image":765},"security-modernization",[697],"Are you trading speed for security?",{"text":762,"config":763},"Get your security maturity score",{"href":764,"dataGaName":741,"dataGaLocation":248},"/assessments/security-modernization-assessment/",{"config":766},{"src":767},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"header":769,"blurb":770,"button":771,"secondaryButton":775},"今すぐ開発をスピードアップ","DevSecOpsに特化したインテリジェントオーケストレーションプラットフォームで実現できることをご確認ください。\n",{"text":54,"config":772},{"href":773,"dataGaName":57,"dataGaLocation":774},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/ja-jp/","feature",{"text":59,"config":776},{"href":61,"dataGaName":62,"dataGaLocation":774},1777310012728]