[{"data":1,"prerenderedAt":722},["ShallowReactive",2],{"/ja-jp/blog/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd":3,"navigation-ja-jp":41,"banner-ja-jp":455,"footer-ja-jp":468,"Rutvik Shah-Michael Friedrich":678,"footer-source-/ja-jp/blog/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd/":701,"next-steps-ja-jp":707},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":8,"content":16,"config":30,"_id":34,"_type":35,"title":36,"_source":37,"_file":38,"_stem":39,"_extension":40},"/ja-jp/blog/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd","blog",false,"",{"title":9,"description":10,"ogTitle":9,"ogDescription":10,"noIndex":6,"ogImage":11,"ogUrl":12,"ogSiteName":13,"ogType":14,"canonicalUrls":12,"schema":15},"GitLab Duo開発の現場から：AIと根本原因分析を併用したCI/CDパイプラインの修正","AIを活用したGitLabの根本原因分析が、破損したCI/CDパイプラインの修復にどのように役立つかについて、具体的なシナリオと実習問題を交えながら解説します。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097321/Blog/Hero%20Images/Blog/Hero%20Images/blog-hero-banner-1-0178-820x470-fy25_7JlF3WlEkswGQbcTe8DOTB_1750097321081.png","https://about.gitlab.com/blog/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd","https://about.gitlab.com","article","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab Duo開発の現場から：AIと根本原因分析を併用したCI/CDパイプラインの修正\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Rutvik Shah\"},{\"@type\":\"Person\",\"name\":\"Michael Friedrich\"}],\n        \"datePublished\": \"2024-06-06\",\n      }",{"title":9,"description":10,"authors":17,"heroImage":11,"date":20,"body":21,"category":22,"tags":23,"updatedDate":29},[18,19],"Rutvik Shah","Michael Friedrich","2024-06-06","___生成AIは、ソフトウェアの開発、保護、運用を容易にし、ソフトウェア開発業界に重要な変化をもたらしています。GitLabの製品チームとエンジニアリングチームが手掛ける新しいブログシリーズでは、企業全体に統合すべきAI機能をどのように作成、テスト、そしてデプロイするか明らかにし、DevSecOpsチームがよりよいソフトウェアを顧客に届ける上で、GitLab Duoの新機能がどのように役立つのかご理解いただける内容になっています。___\n\n[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)パイプラインがエラーを起こして、その根本原因を突き止めるために、やむを得ずDevSecOpsワークフローを停止したり、ソフトウェアのデプロイを遅らせたりした経験はありませんか？従来のアプローチでは、ソフトウェア開発で問題が発生した場合、デベロッパーはトラブルシューティングやログファイルの分析を行い、多くの場合で、試行錯誤を繰り返しながら開発を進める必要があります。[GitLab Duo根本原因分析](https://about.gitlab.com/ja-jp/gitlab-duo/)はGitLabの一連のAI搭載機能に含まれるもので、類推に頼ることなくCI/CDパイプラインで発生した失敗の根本原因を特定します。この記事では、根本原因分析について、また、GitLab DuoのAI搭載機能をDevSecOpsワークフローに適用する方法についてご説明します。\n\n> デモ動画公開！GitLab 17バーチャルローンチイベントで、AI主導のソフトウェア開発の未来を体験しませんか？（[今すぐ登録する](https://about.gitlab.com/ja-jp/eighteen/)）\n\n### 根本原因分析とは？\n\nGitLab Duoの根本原因分析は、ログを分析してCI/CDジョブログにおける失敗の根本原因を特定し、修正方法を提案してくれるAI搭載機能です。\n\n根本原因分析はソフトウェア開発のインシデント管理によく用いられますが、そのワークフローやデバッグの手法はあらゆるDevSecOpsワークフローにも活用されています。パイプラインの失敗を調査する際、運用チーム、管理者、そしてプラットフォームエンジニアは、Infrastructure as Code（IaC）のデプロイエラー、KubernetesやGitOpsの問題、そして長いスタックトレースなどに対処しなければなりません。\n\nGitLab Duoの根本原因分析は、全員を同じインターフェイスに集め、AIを活用して要約、分析、修正提案を行うことで、組織がより迅速に安全なソフトウェアをリリースできるように支援します。\n\nパイプラインの失敗の原因としては、コードの構文エラー、パイプラインに使用される依存関係の欠落、ビルドプロセスにおけるテストの失敗、KubernetesやIaCのデプロイタイムアウト、その他多くの問題が考えられます。そのような失敗が発生した場合、関係者全員が、パイプラインで生成されたログを慎重に確認する必要があります。こうしたログの確認には、詳細な出力情報を精査してエラーを特定し、パイプラインにおける失敗の根本原因を特定したりする作業が伴います。たとえば、次のパイプラインには、調査と修正が必要なジョブの失敗が複数あります。\n\n![複数のジョブの失敗を示す画像](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097332/Blog/Content%20Images/Blog/Content%20Images/image3_aHR0cHM6_1750097332601.png)\n\nこうした失敗の修正に要する時間は、次のような要因によって大きく異なります。\n- プロジェクトに関するデベロッパーの熟知度\n- 同様の問題の対処に関するデベロッパーの経験値\n- パイプラインにおけるトラブルシューティングと問題解決に関するデベロッパーの全体的なスキルレベル\n\n手動での分析は非常に困難で時間がかかることがあります。これは、ログデータを構成するアプリケーションログとシステムメッセージに、さまざまな失敗の原因が含まれている可能性があるためです。一般的なパイプライン修正のプロセスでは、複数回にわたるイテレーションや、（作業を行ったり来たりすることによる）頭の切り替えが必要になります。ログの複雑さや非構造的な性質に対しては、生成AIを使うことで作業を高速化できます。AIを活用することで、パイプラインのエラーを特定して修正する時間を大幅に短縮でき、上記のようなパイプラインを修正するために必要な専門知識のハードルも下げられます。\n\n以下の動画で、実際にGitLab Duoの根本原因分析を使用する流れをご覧ください。\n\n\u003C!-- 空白行 -->\n\n\u003Cfigure class=\"video_container\">\n\n \u003Ciframe src=\"https://www.youtube.com/embed/sTpSLwX5DIs?si=J6-0Bf6PtYjrHX1K\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\n\u003C/figure>\n\n\u003C!-- 空白行 -->\n\n### 根本原因分析の仕組み\n\n[根本原因分析](https://docs.gitlab.com/ee/user/ai_experiments.html#root-cause-analysis)は、CI/CDジョブログの一部を[GitLab AIゲートウェイ](https://docs.gitlab.com/ee/architecture/blueprints/ai_gateway/)に転送することで機能します。GitLabでは、転送される内容が大規模言語モデル（LLM）のトークン制限内に収まるように調整されます。また、ジョブの失敗原因に関する洞察を提供するよう指示する既定のプロンプトも併せて送信されます。また、このプロンプトは、破損したジョブの修正方法の例をユーザーに提示するよう、LLMに指示します。\n\nここでは、根本原因分析を活用できるシナリオの例を2つご紹介します。\n\n#### 1. Pythonの依存関係エラーを分析する\n\nPythonのアプリケーションでは、標準ライブラリには備わっていない機能を含むパッケージモジュールをインポートできます。プロジェクト「[Challenge - Root Cause Analysis - Python Config（演習 - 根本原因分析 - Pythonの構成）](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-challenges/root-cause-analysis/challenge-root-cause-analysis-python-config)」では、構成の解析とSQLiteデータベースの初期化を実行するアプリケーションが実装されており、いずれも依存関係なしで正常に動作しています。また、このプロジェクトでは、Python環境とキャッシュを用いて、CI/CDのベストプラクティスを採用しています。最新の機能追加でRedisのキャッシュクライアントが導入されましたが、これを機にCI/CDビルドが何らかの理由で失敗するようになりました。\n\n根本原因分析を使用すれば、`ModuleNotFoundError`テキストの内容が、モジュールが実際にはPython環境にインストールされていないことを意味しているとすぐにわかります。また、GitLab Duoによって「PIPパッケージマネージャーを介してRedisモジュールをインストールする」ことが修正方法として提案されます。\n\n!['modulenotfounderror'とGitLab Duoによって提案された解決策を示す画像](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097332/Blog/Content%20Images/Blog/Content%20Images/image2_aHR0cHM6_1750097332602.png)\n\n失敗しているパイプラインは[こちら](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-challenges/root-cause-analysis/challenge-root-cause-analysis-python-config/-/jobs/6992716398)でご確認いただけます。\n\n根本原因分析のプロンプトに問題のサマリーが表示されており、`redis`モジュールが欠落していることが問題のようです。では、`redis`モジュールをインストールして問題を解決できるか試してみましょう。CI/CDジョブの`スクリプト`セクションで`pip install redis`を呼び出すか、`requirements.txt`ファイルを使用した、より高度なアプローチも選択できます。後者の方法は、開発環境とCI/CDパイプラインにインストールされている依存関係に関連した信頼できる唯一の情報源を確立するのに有効です。\n\n```yaml\ntest:\n  extends: [.python-req]\n  stage: test \n  before_script:\n     # [🦊] hint: Root cause analysis.\n    # Solution 1: Install redis using pip\n    - pip install redis\n    # Solution 2: Add redis to requirements.txt, use pip\n    - pip install -r requirements.txt \n\n  script:\n    - python src/main.py\n```\n\n欠落しているPythonの依存関係を修正した後、CI/CDジョブが再び失敗します。根本原因分析をもう一度使用すると、ジョブでRedisサービスが実行されていないことがわかります。GitLab Duoチャットに切り替え、`How to start a Redis service in CI/CD`（CI/CDでRedisサービスを開始する方法）というプロンプトを使用して、CI/CDジョブで`services`属性を構成する方法を確認します。\n\n![Redisサービスを開始する方法を尋ねるプロンプトを示す画像](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097333/Blog/Content%20Images/Blog/Content%20Images/image6_aHR0cHM6_1750097332602.png)\n\n`.gitlab-ci.yml`を`test`ジョブで修正し、`redis`サービスを指定します。\n\n```yaml\ntest:\n  extends: [.python-req]\n  stage: test \n  before_script:\n    # [🦊] hint: Root cause analysis.\n   # Solution 1: Install redis using pip\n    - pip install redis\n    # Solution 2: Add redis to requirements.txt, use pip\n    - pip install -r requirements.txt \n\n  script:\n    - python src/main.py\n\n  # Solution 3 - Running Redis\n  services:\n    - redis\n```\n\nRedisサーバーを実行すると、Pythonアプリケーションを正常に実行し、その出力をCI/CDジョブログに出力できます。\n\n![Pythonアプリケーションの出力](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097332/Blog/Content%20Images/Blog/Content%20Images/image4_aHR0cHM6_1750097332603.png)\n\nこの解決策は、[solution/ ディレクトリ](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-challenges/root-cause-analysis/challenge-root-cause-analysis-python-config/-/tree/main/solution?ref_type=heads)で確認できます。\n\n**ヒント**：以下のようなプロンプトを使用して、[GitLab Duoチャット](https://docs.gitlab.com/ee/user/gitlab_duo_chat.html)に発生リスクのある問題のフォローアップを依頼することもできます。\n\n```markdown\nHow to lint Python code? Which tools are recommended for CI/CD.\nHow to pin a package version in Python requirements file?\t\nWhat are possible ways that this exception stacktrace is triggered in the future?\nAre there ways to prevent the application from failing?\n``` \n\n次の例はより高度で、複数の失敗が含まれています。\n\n#### 2. 不足しているGoランタイムを分析する\n\nCI/CDジョブは、指定された`イメージ`から生成されたコンテナ内で実行できます。コンテナがプログラミング言語のランタイムを提供していない場合、`go`バイナリを参照する実行スクリプトセクションは失敗します。たとえば、`/ bin/sh: eval: line 149: go: not found`というエラーメッセージが表示されたら、これを理解して修正する必要があります。\n\nコンテナ内で`go`コマンドが見つからない場合、以下のような複数の理由が考えられます。\n\n1. ジョブが最小限のコンテナイメージ（`alpine`など）を使用しており、Go言語ランタイムがインストールされていない。\n1. ジョブが誤ったデフォルトのコンテナイメージを使用している。これには、CI/CD構成の先頭で指定されたイメージや`default`キーワードを使用して指定されたイメージなどが該当する。\n1. ジョブがコンテナイメージではなく、Shell executorで実行されている。ホストのオペレーティングシステムにGo言語ランタイムがインストールされていない、または設定が壊れているか正しく構成されていない。\n\nプロジェクト「[Challenge - Root Cause Analysis - Go GitLab Release Fetcher（演習 - 根本原因分析 - GoのGitLabリリースフェッチャー）](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-challenges/root-cause-analysis/challenge-root-cause-analysis-go-gitlab-release-fetcher)」は、Goで構築されたGitLabリリースフェッチャーアプリケーションのCI/CD問題を分析し、修正するための演習課題です。このプロジェクトでは、`build`と`docker-build`のCI/CDジョブが失敗しています。この問題を解決するには、2つのポイントを抑える必要があります。ひとつはGoランタイムがインストールされていない理由を理解すること、もうひとつは`Dockerfile`構文について学ぶことです。\n\n![変更Dockerラベルジョブの失敗を示すスクリーンショット](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097332/Blog/Content%20Images/Blog/Content%20Images/image5_aHR0cHM6_1750097332603.png)\n\n[`solution/` ディレクトリ](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-challenges/root-cause-analysis/challenge-root-cause-analysis-go-gitlab-release-fetcher)では、根本原因分析の次に試す2つの解決策が確認できます。\n\n## 根本原因分析の練習\n\n以下のシナリオを想定して、根本原因分析を練習してみましょう。\n\n- Kubernetesデプロイメントのエラーやタイムアウトが発生した場合。\n\n- OpenTofuやTerraformのIaCパイプラインがクラウドリソースのプロビジョニングに失敗した場合。\n\n- AnsibleプレイブックがCI/CDで不可解な権限エラーで失敗した場合。\n\n- Javaのスタックトレースが10ページにも及ぶ場合。\n\n- シェルスクリプトが実行エラーを示している場合。\n\n- Perlスクリプトが1行（スクリプト内の唯一の行）で失敗した場合。\n\n- CI/CDジョブがタイムアウトし、どの部分が原因なのか不明な場合。\n\n- ネットワーク接続のタイムアウトが発生し、DNSが原因でないと思われる場合。\n\n### GitLab Duoの根本原因分析の次のステップ\n\nGitLabは、最小限のイテレーションでパイプラインの問題を修正できるようユーザーを支援したいと考えています。根本原因分析が目指す次のステップでは、根本原因分析はGitLab Duoチャット（AIアシスタント）で結果を表示します。ユーザーは、提案された内容を基に、さらに具体的な質問（例：プログラミング言語に特化した修正方法を尋ねる）をしたり、根本原因に基づいた代替の修正方法を尋ねたりすることで、より正確な修正方法を確立できます。\n\nたとえば、失敗したジョブの根本原因分析は次のとおりです。\n\n![根本原因分析の回答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097332/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750097332603.png)\n\nユーザーは、AIが生成した回答に対し、掘り下げた質問ができます。\n\n- 独自のDockerイメージを作成したくありません。問題を解決するための別の方法を説明してください。\n\n- Dockerイメージの作成にアクセスできません。Goバイナリが見つからないようです。代替のイメージを提案できますか？\n\nGitLabでは、生成された回答の品質ベンチマークを実行し、使いやすさの改善も行います。\n\n詳しくは、[根本原因分析の一般提供（GA）エピック](https://gitlab.com/groups/gitlab-org/-/epics/13080)をご参照ください。機能に関するフィードバックをお寄せいただける方は、[根本原因分析のフィードバック用イシュー](https://gitlab.com/groups/gitlab-org/-/epics/13872)にコメントを投稿してください。\n\n## 根本原因分析を開始する\n\nGitLab Ultimateプランで利用可能な機能を有効化する方法を説明するGitLab[ドキュメント](https://docs.gitlab.com/ee/user/ai_experiments.html#root-cause-analysis)をご参照ください。また、GitLab Duoの根本原因分析は、GitLab Self-ManagedとGitLab Dedicatedでまもなく利用可能になります。\n\nGitLab Ultimateをご利用でない場合は、[無料トライアル](https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp/blog&glm_content=default-saas-trial)を今すぐ開始していただけます。\n\n*監修：佐々木 直晴 [@naosasaki](https://gitlab.com/naosasaki) （GitLab合同会社 ソリューションアーキテクト本部 シニアソリューションアーキテクト）*\n\n## 「GitLab Duo開発の現場から」シリーズをもっと読む\n\n- [GitLab Duo開発の現場から：AIモデルの大規模な検証とテストの方法](https://about.gitlab.com/ja-jp/blog/developing-gitlab-duo-how-we-validate-and-test-ai-models-at-scale/)\n\n- [GitLab Duo開発の現場から：AIインパクト分析ダッシュボードによるAIのROI測定](https://about.gitlab.com/ja-jp/blog/developing-gitlab-duo-ai-impact-analytics-dashboard-measures-the-roi-of-ai/)\n\n- [GitLab Duo開発の現場から：GitLabにおけるAI機能のドッグフーディングの取り組み](https://about.gitlab.com/ja-jp/blog/developing-gitlab-duo-how-we-are-dogfooding-our-ai-features/)\n\n- [GitLab Duo開発の現場から： AI生成コードに対するセキュリティ確保と徹底的なテスト](https://about.gitlab.com/ja-jp/blog/how-gitlab-duo-helps-secure-and-thoroughly-test-ai-generated-code/)","ai-ml",[24,25,26,27,28],"AI/ML","tutorial","DevSecOps","DevSecOps platform","features","2024-11-15",{"slug":31,"featured":32,"template":33},"developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd",true,"BlogPost","content:ja-jp:blog:developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd.yml","yaml","Developing Gitlab Duo Blending Ai And Root Cause Analysis To Fix Ci Cd","content","ja-jp/blog/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd.yml","ja-jp/blog/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd","yml",{"_path":42,"_dir":43,"_draft":6,"_partial":6,"_locale":7,"data":44,"_id":451,"_type":35,"title":452,"_source":37,"_file":453,"_stem":454,"_extension":40},"/shared/ja-jp/main-navigation","ja-jp",{"logo":45,"freeTrial":50,"sales":55,"login":60,"items":65,"search":395,"minimal":429,"duo":442},{"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&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,110,207,212,317,377],{"text":67,"config":68,"cards":70,"footer":93},"プラットフォーム",{"dataNavLevelOne":69},"platform",[71,77,85],{"title":67,"description":72,"link":73},"最も包括的かつAIで強化されたDevSecOpsプラットフォーム",{"text":74,"config":75},"プラットフォームを詳しく見る",{"href":76,"dataGaName":69,"dataGaLocation":49},"/ja-jp/platform/",{"title":78,"description":79,"link":80},"GitLab Duo（AI）","開発のすべてのステージでAIを活用し、ソフトウェアをより迅速にビルド",{"text":81,"config":82},"GitLab Duoのご紹介",{"href":83,"dataGaName":84,"dataGaLocation":49},"/ja-jp/gitlab-duo/","gitlab duo ai",{"title":86,"description":87,"link":88},"GitLabが選ばれる理由","GitLabが大企業に選ばれる理由10選",{"text":89,"config":90},"詳細はこちら",{"href":91,"dataGaName":92,"dataGaLocation":49},"/ja-jp/why-gitlab/","why gitlab",{"title":94,"items":95},"利用を開始：",[96,101,106],{"text":97,"config":98},"プラットフォームエンジニアリング",{"href":99,"dataGaName":100,"dataGaLocation":49},"/ja-jp/solutions/platform-engineering/","platform engineering",{"text":102,"config":103},"開発者の経験",{"href":104,"dataGaName":105,"dataGaLocation":49},"/ja-jp/developer-experience/","Developer experience",{"text":107,"config":108},"MLOps",{"href":109,"dataGaName":107,"dataGaLocation":49},"/ja-jp/topics/devops/the-role-of-ai-in-devops/",{"text":111,"left":32,"config":112,"link":114,"lists":118,"footer":189},"製品",{"dataNavLevelOne":113},"solutions",{"text":115,"config":116},"すべてのソリューションを表示",{"href":117,"dataGaName":113,"dataGaLocation":49},"/ja-jp/solutions/",[119,145,167],{"title":120,"description":121,"link":122,"items":127},"自動化","CI/CDと自動化でデプロイを加速",{"config":123},{"icon":124,"href":125,"dataGaName":126,"dataGaLocation":49},"AutomatedCodeAlt","/ja-jp/solutions/delivery-automation/","automated software delivery",[128,132,136,141],{"text":129,"config":130},"CI/CD",{"href":131,"dataGaLocation":49,"dataGaName":129},"/ja-jp/solutions/continuous-integration/",{"text":133,"config":134},"AIアシストによる開発",{"href":83,"dataGaLocation":49,"dataGaName":135},"AI assisted development",{"text":137,"config":138},"ソースコード管理",{"href":139,"dataGaLocation":49,"dataGaName":140},"/ja-jp/solutions/source-code-management/","Source Code Management",{"text":142,"config":143},"自動化されたソフトウェアデリバリー",{"href":125,"dataGaLocation":49,"dataGaName":144},"Automated software delivery",{"title":146,"description":147,"link":148,"items":153},"セキュリティ","セキュリティを損なうことなくコードをより迅速に完成",{"config":149},{"href":150,"dataGaName":151,"dataGaLocation":49,"icon":152},"/ja-jp/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[154,158,163],{"text":155,"config":156},"Application Security Testing",{"href":150,"dataGaName":157,"dataGaLocation":49},"Application security testing",{"text":159,"config":160},"ソフトウェアサプライチェーンの安全性",{"href":161,"dataGaLocation":49,"dataGaName":162},"/ja-jp/solutions/supply-chain/","Software supply chain security",{"text":164,"config":165},"Software Compliance",{"href":166,"dataGaName":164,"dataGaLocation":49},"/ja-jp/solutions/software-compliance/",{"title":168,"link":169,"items":174},"測定",{"config":170},{"icon":171,"href":172,"dataGaName":173,"dataGaLocation":49},"DigitalTransformation","/ja-jp/solutions/visibility-measurement/","visibility and measurement",[175,179,184],{"text":176,"config":177},"可視性と測定",{"href":172,"dataGaLocation":49,"dataGaName":178},"Visibility and Measurement",{"text":180,"config":181},"バリューストリーム管理",{"href":182,"dataGaLocation":49,"dataGaName":183},"/ja-jp/solutions/value-stream-management/","Value Stream Management",{"text":185,"config":186},"分析とインサイト",{"href":187,"dataGaLocation":49,"dataGaName":188},"/ja-jp/solutions/analytics-and-insights/","Analytics and insights",{"title":190,"items":191},"GitLabが活躍する場所",[192,197,202],{"text":193,"config":194},"Enterprise",{"href":195,"dataGaLocation":49,"dataGaName":196},"/ja-jp/enterprise/","enterprise",{"text":198,"config":199},"スモールビジネス",{"href":200,"dataGaLocation":49,"dataGaName":201},"/ja-jp/small-business/","small business",{"text":203,"config":204},"公共機関",{"href":205,"dataGaLocation":49,"dataGaName":206},"/ja-jp/solutions/public-sector/","public sector",{"text":208,"config":209},"価格",{"href":210,"dataGaName":211,"dataGaLocation":49,"dataNavLevelOne":211},"/ja-jp/pricing/","pricing",{"text":213,"config":214,"link":216,"lists":220,"feature":304},"関連リソース",{"dataNavLevelOne":215},"resources",{"text":217,"config":218},"すべてのリソースを表示",{"href":219,"dataGaName":215,"dataGaLocation":49},"/ja-jp/resources/",[221,254,276],{"title":222,"items":223},"はじめに",[224,229,234,239,244,249],{"text":225,"config":226},"インストール",{"href":227,"dataGaName":228,"dataGaLocation":49},"/ja-jp/install/","install",{"text":230,"config":231},"クイックスタートガイド",{"href":232,"dataGaName":233,"dataGaLocation":49},"/ja-jp/get-started/","quick setup checklists",{"text":235,"config":236},"学ぶ",{"href":237,"dataGaLocation":49,"dataGaName":238},"https://university.gitlab.com/","learn",{"text":240,"config":241},"製品ドキュメント",{"href":242,"dataGaName":243,"dataGaLocation":49},"https://docs.gitlab.com/","product documentation",{"text":245,"config":246},"ベストプラクティスビデオ",{"href":247,"dataGaName":248,"dataGaLocation":49},"/ja-jp/getting-started-videos/","best practice videos",{"text":250,"config":251},"インテグレーション",{"href":252,"dataGaName":253,"dataGaLocation":49},"/ja-jp/integrations/","integrations",{"title":255,"items":256},"検索する",[257,262,266,271],{"text":258,"config":259},"お客様成功事例",{"href":260,"dataGaName":261,"dataGaLocation":49},"/ja-jp/customers/","customer success stories",{"text":263,"config":264},"ブログ",{"href":265,"dataGaName":5,"dataGaLocation":49},"/ja-jp/blog/",{"text":267,"config":268},"リモート",{"href":269,"dataGaName":270,"dataGaLocation":49},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"text":272,"config":273},"TeamOps",{"href":274,"dataGaName":275,"dataGaLocation":49},"/ja-jp/teamops/","teamops",{"title":277,"items":278},"つなげる",[279,284,289,294,299],{"text":280,"config":281},"GitLabサービス",{"href":282,"dataGaName":283,"dataGaLocation":49},"/ja-jp/services/","services",{"text":285,"config":286},"コミュニティ",{"href":287,"dataGaName":288,"dataGaLocation":49},"/community/","community",{"text":290,"config":291},"フォーラム",{"href":292,"dataGaName":293,"dataGaLocation":49},"https://forum.gitlab.com/","forum",{"text":295,"config":296},"イベント",{"href":297,"dataGaName":298,"dataGaLocation":49},"/events/","events",{"text":300,"config":301},"パートナー",{"href":302,"dataGaName":303,"dataGaLocation":49},"/ja-jp/partners/","partners",{"backgroundColor":305,"textColor":306,"text":307,"image":308,"link":312},"#2f2a6b","#fff","ソフトウェア開発の未来への洞察",{"altText":309,"config":310},"ソースプロモカード",{"src":311},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":313,"config":314},"最新情報を読む",{"href":315,"dataGaName":316,"dataGaLocation":49},"/ja-jp/the-source/","the source",{"text":318,"config":319,"lists":321},"会社情報",{"dataNavLevelOne":320},"company",[322],{"items":323},[324,329,335,337,342,347,352,357,362,367,372],{"text":325,"config":326},"GitLabについて",{"href":327,"dataGaName":328,"dataGaLocation":49},"/ja-jp/company/","about",{"text":330,"config":331,"footerGa":334},"採用情報",{"href":332,"dataGaName":333,"dataGaLocation":49},"/jobs/","jobs",{"dataGaName":333},{"text":295,"config":336},{"href":297,"dataGaName":298,"dataGaLocation":49},{"text":338,"config":339},"経営陣",{"href":340,"dataGaName":341,"dataGaLocation":49},"/company/team/e-group/","leadership",{"text":343,"config":344},"チーム",{"href":345,"dataGaName":346,"dataGaLocation":49},"/company/team/","team",{"text":348,"config":349},"ハンドブック",{"href":350,"dataGaName":351,"dataGaLocation":49},"https://handbook.gitlab.com/","handbook",{"text":353,"config":354},"投資家向け情報",{"href":355,"dataGaName":356,"dataGaLocation":49},"https://ir.gitlab.com/","investor relations",{"text":358,"config":359},"トラストセンター",{"href":360,"dataGaName":361,"dataGaLocation":49},"/ja-jp/security/","trust center",{"text":363,"config":364},"AI Transparency Center",{"href":365,"dataGaName":366,"dataGaLocation":49},"/ja-jp/ai-transparency-center/","ai transparency center",{"text":368,"config":369},"ニュースレター",{"href":370,"dataGaName":371,"dataGaLocation":49},"/company/contact/","newsletter",{"text":373,"config":374},"プレス",{"href":375,"dataGaName":376,"dataGaLocation":49},"/press/","press",{"text":56,"config":378,"lists":379},{"dataNavLevelOne":320},[380],{"items":381},[382,385,390],{"text":56,"config":383},{"href":58,"dataGaName":384,"dataGaLocation":49},"talk to sales",{"text":386,"config":387},"サポートを受ける",{"href":388,"dataGaName":389,"dataGaLocation":49},"/support/","get help",{"text":391,"config":392},"カスタマーポータル",{"href":393,"dataGaName":394,"dataGaLocation":49},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":396,"login":397,"suggestions":404},"閉じる",{"text":398,"link":399},"リポジトリとプロジェクトを検索するには、次にログインします",{"text":400,"config":401},"GitLab.com",{"href":63,"dataGaName":402,"dataGaLocation":403},"search login","search",{"text":405,"default":406},"提案",[407,410,415,417,421,425],{"text":78,"config":408},{"href":83,"dataGaName":409,"dataGaLocation":403},"GitLab Duo (AI)",{"text":411,"config":412},"コード提案（AI）",{"href":413,"dataGaName":414,"dataGaLocation":403},"/ja-jp/solutions/code-suggestions/","Code Suggestions (AI)",{"text":129,"config":416},{"href":131,"dataGaName":129,"dataGaLocation":403},{"text":418,"config":419},"GitLab on AWS",{"href":420,"dataGaName":418,"dataGaLocation":403},"/ja-jp/partners/technology-partners/aws/",{"text":422,"config":423},"GitLab on Google Cloud",{"href":424,"dataGaName":422,"dataGaLocation":403},"/ja-jp/partners/technology-partners/google-cloud-platform/",{"text":426,"config":427},"GitLabを選ぶ理由",{"href":91,"dataGaName":428,"dataGaLocation":403},"Why GitLab?",{"freeTrial":430,"mobileIcon":434,"desktopIcon":439},{"text":51,"config":431},{"href":432,"dataGaName":54,"dataGaLocation":433},"https://gitlab.com/-/trials/new/","nav",{"altText":435,"config":436},"GitLabアイコン",{"src":437,"dataGaName":438,"dataGaLocation":433},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":435,"config":440},{"src":441,"dataGaName":438,"dataGaLocation":433},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"freeTrial":443,"mobileIcon":447,"desktopIcon":449},{"text":444,"config":445},"GitLab Duoの詳細について",{"href":83,"dataGaName":446,"dataGaLocation":433},"gitlab duo",{"altText":435,"config":448},{"src":437,"dataGaName":438,"dataGaLocation":433},{"altText":435,"config":450},{"src":441,"dataGaName":438,"dataGaLocation":433},"content:shared:ja-jp:main-navigation.yml","Main Navigation","shared/ja-jp/main-navigation.yml","shared/ja-jp/main-navigation",{"_path":456,"_dir":43,"_draft":6,"_partial":6,"_locale":7,"title":457,"button":458,"config":463,"_id":465,"_type":35,"_source":37,"_file":466,"_stem":467,"_extension":40},"/shared/ja-jp/banner","GitLab Duo Agent Platformがパブリックベータ版で利用可能になりました！",{"text":459,"config":460},"ベータ版を試す",{"href":461,"dataGaName":462,"dataGaLocation":49},"/ja-jp/gitlab-duo/agent-platform/","duo banner",{"layout":464},"release","content:shared:ja-jp:banner.yml","shared/ja-jp/banner.yml","shared/ja-jp/banner",{"_path":469,"_dir":43,"_draft":6,"_partial":6,"_locale":7,"data":470,"_id":674,"_type":35,"title":675,"_source":37,"_file":676,"_stem":677,"_extension":40},"/shared/ja-jp/main-footer",{"text":471,"source":472,"edit":478,"contribute":483,"config":488,"items":493,"minimal":666},"GitはSoftware Freedom Conservancyの商標です。当社は「GitLab」をライセンスに基づいて使用しています",{"text":473,"config":474},"ページのソースを表示",{"href":475,"dataGaName":476,"dataGaLocation":477},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":479,"config":480},"このページを編集",{"href":481,"dataGaName":482,"dataGaLocation":477},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":484,"config":485},"ご協力をお願いします",{"href":486,"dataGaName":487,"dataGaLocation":477},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":489,"facebook":490,"youtube":491,"linkedin":492},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[494,517,571,603,638],{"title":67,"links":495,"subMenu":500},[496],{"text":497,"config":498},"DevSecOpsプラットフォーム",{"href":76,"dataGaName":499,"dataGaLocation":477},"devsecops platform",[501],{"title":208,"links":502},[503,507,512],{"text":504,"config":505},"プランの表示",{"href":210,"dataGaName":506,"dataGaLocation":477},"view plans",{"text":508,"config":509},"Premiumを選ぶ理由",{"href":510,"dataGaName":511,"dataGaLocation":477},"/ja-jp/pricing/premium/","why premium",{"text":513,"config":514},"Ultimateを選ぶ理由",{"href":515,"dataGaName":516,"dataGaLocation":477},"/ja-jp/pricing/ultimate/","why ultimate",{"title":518,"links":519},"ソリューション",[520,525,528,530,535,540,544,547,550,555,557,559,561,566],{"text":521,"config":522},"デジタルトランスフォーメーション",{"href":523,"dataGaName":524,"dataGaLocation":477},"/ja-jp/topics/digital-transformation/","digital transformation",{"text":526,"config":527},"セキュリティとコンプライアンス",{"href":150,"dataGaName":157,"dataGaLocation":477},{"text":142,"config":529},{"href":125,"dataGaName":126,"dataGaLocation":477},{"text":531,"config":532},"アジャイル開発",{"href":533,"dataGaName":534,"dataGaLocation":477},"/ja-jp/solutions/agile-delivery/","agile delivery",{"text":536,"config":537},"クラウドトランスフォーメーション",{"href":538,"dataGaName":539,"dataGaLocation":477},"/ja-jp/topics/cloud-native/","cloud transformation",{"text":541,"config":542},"SCM",{"href":139,"dataGaName":543,"dataGaLocation":477},"source code management",{"text":129,"config":545},{"href":131,"dataGaName":546,"dataGaLocation":477},"continuous integration & delivery",{"text":180,"config":548},{"href":182,"dataGaName":549,"dataGaLocation":477},"value stream management",{"text":551,"config":552},"GitOps",{"href":553,"dataGaName":554,"dataGaLocation":477},"/ja-jp/solutions/gitops/","gitops",{"text":193,"config":556},{"href":195,"dataGaName":196,"dataGaLocation":477},{"text":198,"config":558},{"href":200,"dataGaName":201,"dataGaLocation":477},{"text":203,"config":560},{"href":205,"dataGaName":206,"dataGaLocation":477},{"text":562,"config":563},"教育",{"href":564,"dataGaName":565,"dataGaLocation":477},"/ja-jp/solutions/education/","education",{"text":567,"config":568},"金融サービス",{"href":569,"dataGaName":570,"dataGaLocation":477},"/ja-jp/solutions/finance/","financial services",{"title":213,"links":572},[573,575,577,579,582,584,587,589,591,593,595,597,599,601],{"text":225,"config":574},{"href":227,"dataGaName":228,"dataGaLocation":477},{"text":230,"config":576},{"href":232,"dataGaName":233,"dataGaLocation":477},{"text":235,"config":578},{"href":237,"dataGaName":238,"dataGaLocation":477},{"text":240,"config":580},{"href":242,"dataGaName":581,"dataGaLocation":477},"docs",{"text":263,"config":583},{"href":265,"dataGaName":5},{"text":585,"config":586},"お客様の成功事例",{"href":260,"dataGaLocation":477},{"text":258,"config":588},{"href":260,"dataGaName":261,"dataGaLocation":477},{"text":267,"config":590},{"href":269,"dataGaName":270,"dataGaLocation":477},{"text":280,"config":592},{"href":282,"dataGaName":283,"dataGaLocation":477},{"text":272,"config":594},{"href":274,"dataGaName":275,"dataGaLocation":477},{"text":285,"config":596},{"href":287,"dataGaName":288,"dataGaLocation":477},{"text":290,"config":598},{"href":292,"dataGaName":293,"dataGaLocation":477},{"text":295,"config":600},{"href":297,"dataGaName":298,"dataGaLocation":477},{"text":300,"config":602},{"href":302,"dataGaName":303,"dataGaLocation":477},{"title":604,"links":605},"Company",[606,608,610,612,614,616,618,622,627,629,631,633],{"text":325,"config":607},{"href":327,"dataGaName":320,"dataGaLocation":477},{"text":330,"config":609},{"href":332,"dataGaName":333,"dataGaLocation":477},{"text":338,"config":611},{"href":340,"dataGaName":341,"dataGaLocation":477},{"text":343,"config":613},{"href":345,"dataGaName":346,"dataGaLocation":477},{"text":348,"config":615},{"href":350,"dataGaName":351,"dataGaLocation":477},{"text":353,"config":617},{"href":355,"dataGaName":356,"dataGaLocation":477},{"text":619,"config":620},"Sustainability",{"href":621,"dataGaName":619,"dataGaLocation":477},"/sustainability/",{"text":623,"config":624},"ダイバーシティ、インクルージョン、ビロンギング（DIB）",{"href":625,"dataGaName":626,"dataGaLocation":477},"/ja-jp/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":358,"config":628},{"href":360,"dataGaName":361,"dataGaLocation":477},{"text":368,"config":630},{"href":370,"dataGaName":371,"dataGaLocation":477},{"text":373,"config":632},{"href":375,"dataGaName":376,"dataGaLocation":477},{"text":634,"config":635},"現代奴隷制の透明性に関する声明",{"href":636,"dataGaName":637,"dataGaLocation":477},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":56,"links":639},[640,642,644,646,651,656,661],{"text":56,"config":641},{"href":58,"dataGaName":59,"dataGaLocation":477},{"text":386,"config":643},{"href":388,"dataGaName":389,"dataGaLocation":477},{"text":391,"config":645},{"href":393,"dataGaName":394,"dataGaLocation":477},{"text":647,"config":648},"ステータス",{"href":649,"dataGaName":650,"dataGaLocation":477},"https://status.gitlab.com/","status",{"text":652,"config":653},"利用規約",{"href":654,"dataGaName":655,"dataGaLocation":477},"/terms/","terms of use",{"text":657,"config":658},"プライバシーに関する声明",{"href":659,"dataGaName":660,"dataGaLocation":477},"/ja-jp/privacy/","privacy statement",{"text":662,"config":663},"Cookieの設定",{"dataGaName":664,"dataGaLocation":477,"id":665,"isOneTrustButton":32},"cookie preferences","ot-sdk-btn",{"items":667},[668,670,672],{"text":652,"config":669},{"href":654,"dataGaName":655,"dataGaLocation":477},{"text":657,"config":671},{"href":659,"dataGaName":660,"dataGaLocation":477},{"text":662,"config":673},{"dataGaName":664,"dataGaLocation":477,"id":665,"isOneTrustButton":32},"content:shared:ja-jp:main-footer.yml","Main Footer","shared/ja-jp/main-footer.yml","shared/ja-jp/main-footer",[679,691],{"_path":680,"_dir":681,"_draft":6,"_partial":6,"_locale":7,"content":682,"config":686,"_id":688,"_type":35,"title":18,"_source":37,"_file":689,"_stem":690,"_extension":40},"/en-us/blog/authors/rutvik-shah","authors",{"name":18,"config":683},{"headshot":684,"ctfId":685},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749661843/Blog/Author%20Headshots/rutvik_shah_headshot.png","6co92rUBTbWcyV3EW23iEx",{"template":687},"BlogAuthor","content:en-us:blog:authors:rutvik-shah.yml","en-us/blog/authors/rutvik-shah.yml","en-us/blog/authors/rutvik-shah",{"_path":692,"_dir":681,"_draft":6,"_partial":6,"_locale":7,"content":693,"config":697,"_id":698,"_type":35,"title":19,"_source":37,"_file":699,"_stem":700,"_extension":40},"/en-us/blog/authors/michael-friedrich",{"name":19,"config":694},{"headshot":695,"ctfId":696},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659879/Blog/Author%20Headshots/dnsmichi-headshot.jpg","dnsmichi",{"template":687},"content:en-us:blog:authors:michael-friedrich.yml","en-us/blog/authors/michael-friedrich.yml","en-us/blog/authors/michael-friedrich",{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":702,"content":703,"config":706,"_id":34,"_type":35,"title":36,"_source":37,"_file":38,"_stem":39,"_extension":40},{"title":9,"description":10,"ogTitle":9,"ogDescription":10,"noIndex":6,"ogImage":11,"ogUrl":12,"ogSiteName":13,"ogType":14,"canonicalUrls":12,"schema":15},{"title":9,"description":10,"authors":704,"heroImage":11,"date":20,"body":21,"category":22,"tags":705,"updatedDate":29},[18,19],[24,25,26,27,28],{"slug":31,"featured":32,"template":33},{"_path":708,"_dir":43,"_draft":6,"_partial":6,"_locale":7,"header":709,"eyebrow":710,"blurb":711,"button":712,"secondaryButton":716,"_id":718,"_type":35,"title":719,"_source":37,"_file":720,"_stem":721,"_extension":40},"/shared/ja-jp/next-steps","より優れたソフトウェアをより速く提供","フォーチュン100企業の50%以上がGitLabを信頼","インテリジェントなDevSecOpsプラットフォームで\n\n\nチームの可能性を広げましょう。\n",{"text":51,"config":713},{"href":714,"dataGaName":54,"dataGaLocation":715},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":56,"config":717},{"href":58,"dataGaName":59,"dataGaLocation":715},"content:shared:ja-jp:next-steps.yml","Next Steps","shared/ja-jp/next-steps.yml","shared/ja-jp/next-steps",1761814459480]