[{"data":1,"prerenderedAt":711},["ShallowReactive",2],{"/ja-jp/blog/how-gitlab-duo-helps-secure-and-thoroughly-test-ai-generated-code":3,"navigation-ja-jp":38,"banner-ja-jp":453,"footer-ja-jp":466,"David O'Regan":676,"next-steps-ja-jp":690,"footer-source-/ja-jp/blog/how-gitlab-duo-helps-secure-and-thoroughly-test-ai-generated-code/":705},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":8,"content":16,"config":28,"_id":31,"_type":32,"title":33,"_source":34,"_file":35,"_stem":36,"_extension":37},"/ja-jp/blog/how-gitlab-duo-helps-secure-and-thoroughly-test-ai-generated-code","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生成コードに対するセキュリティ確保と徹底的なテスト","GitLab DuoとGitLab Pages、コードサンプルとプロンプトを使用して、AI生成コードの信頼性とセキュリティを強化する方法をステップごとにご紹介します。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097183/Blog/Hero%20Images/Blog/Hero%20Images/blog-hero-banner-1-0178-820x470-fy25_7JlF3WlEkswGQbcTe8DOTB_1750097183481.png","https://about.gitlab.com/blog/how-gitlab-duo-helps-secure-and-thoroughly-test-ai-generated-code","https://about.gitlab.com","article","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab Duo開発の現場から： AI生成コードに対するセキュリティ確保と徹底的なテスト\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"David O'Regan\"}],\n        \"datePublished\": \"2024-05-30\",\n      }",{"title":9,"description":10,"authors":17,"heroImage":11,"date":19,"body":20,"category":21,"tags":22,"updatedDate":27},[18],"David O'Regan","2024-05-30","___生成系AIは、ソフトウェアの開発、保護、運用を容易にし、ソフトウェア開発業界に重要な変化をもたらしています。この新しいブログシリーズでは、GitLabの製品チームとエンジニアリングチームが、必要なAI機能をエンタープライズ全体に統合し、どのように作成、テスト、デプロイするかをご紹介します。GitLab\nDuoの新機能によってDevSecOpsチームがお客様にどんな価値をもたらせるようになるか、見ていきましょう！___\n\n\nソフトウェア開発でAIがますます重要な役割を果たすようになる中、AI生成コードに対するセキュリティ確保や、徹底したテストの実施は極めて重要です。本記事では、AI機能を活用してDevSecOpsワークフローを強化できる[GitLab\nDuo](https://about.gitlab.com/gitlab-duo/)と、[GitLab\nPages](https://docs.gitlab.com/ee/user/project/pages/)を組み合わせて、AI生成コードを安全にテストする手順をステップごとに説明しています。一般的なリスクを軽減する方法や、テストの自動生成、コードのテスト、テストレポートのデプロイなどのプロセスについても取り上げます。これらはすべて、AI生成コードの信頼性を高めるためのアプローチです。\n\n\n> デモ動画公開！GitLab\n17バーチャルローンチイベントで、AI主導のソフトウェア開発の未来を体験しませんか？[今すぐ登録する](https://about.gitlab.com/ja-jp/eighteen/)\n\n\n## AI生成コードの課題\n\n\nAI生成コードは、次のような問題に頻繁に直面します。\n\n\n- アルゴリズムの不一致：不適切または最適化されていないアルゴリズムが生成される場合があります。\n\n- 依存関係の問題： AIが生成するコードには、古い依存関係や互換性のない依存関係が含まれている可能性があります。\n\n- セキュリティ上の脆弱性：AIは、セキュリティ上の欠陥を伴うコードを生成することがあります。\n\n\n上記のように、AI生成コードは、アルゴリズムの不一致、依存関係の問題、セキュリティの脆弱性などの問題によく直面します。プログラミング関連の質問に対するChatGPTの回答について、[Association\nof Computing\nMachinery（計算機協会）が発表した最近の研究](https://dl.acm.org/doi/pdf/10.1145/3613904.3642596)（外部サイト）では、回答の52%に誤った情報が含まれており、77%が過度に冗長であることがわかりました。これらの欠点があるにもかかわらず、ユーザーはChatGPTの包括的でよく構成された回答を35%の割合で好み、誤情報が含まれていても39%の割合でそれを見過ごしました。これらの課題に対処するには、高度なツールとフレームワークを使用する必要があります。\n\n\n## AIセキュリティとテストに対するGitLabのアプローチ\n\n\nGitLabでは、開発ワークフロー内にセキュリティ対策を組み込むことに焦点を当てた、包括的なコンテンツ戦略を採用しています。GitLab\nDuoを活用してAIによるコード生成を応用したり、GitLab\nPagesを利用してテストレポートを（ウェブサイトに）埋め込んだりすることで、デベロッパーはAI生成コードのセキュリティと信頼性を確保できます。\n\n\n以下は、GitLab DuoとGitLab Pagesを組み合わせて、[Flask\nwebサーバー](https://flask.palletsprojects.com/en/3.0.x/)（外部サイト）を実装することでAI生成コードを安全かつ徹底的にテストするための手順ガイドになります。\n\n\n#### 1. GitLab.comで新しいプロジェクトを作成する\n\n\n- [GitLab.com](http://GitLab.com)にアクセスします。\n\n- 「新しいプロジェクト」ボタンをクリックします。\n\n- 「空白のプロジェクトを作成」を選択します。\n\n- プロジェクト名を入力します（例：AI_CODE_SECURITY）。\n\n- 表示レベル（公開、内部、非公開）を設定します。\n\n- 「プロジェクトを作成」をクリックします。\n\n\n#### 2. GitLab Duoのコード提案を有効にする\n\n\n- プロジェクトに移動します。\n\n- 「Web IDE」ボタンをクリックしてWeb IDEを開きます。\n\n- GitLab Duoの機能（コード提案、Duoチャットなど）が有効になっていることを確認します。\n\n- [Web\nIDE](https://docs.gitlab.com/ee/user/project/web_ide/)でコーディングを開始します。入力する際に、GitLab\nDuoによるコード提案が表示され、より効率的なコーディングを支援してくれます。\n\n\n#### 3. Flask Webサーバーを作成する\n\n\n下のスクリーンショットのコメント（緑色のテキスト）を使用して、Flask Webサーバーを作成できます。\n\n\n![DGDテスト -\n画像1](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097192/Blog/Content%20Images/Blog/Content%20Images/image4_aHR0cHM6_1750097192520.png)\n\n\n#### 4. GitLab Duoでテストを生成する\n\n\nユニットテストは、生成されたコードの機能を検証する上で不可欠です。GitLab Duoの` /tests`コマンドを使用して、直接[Web\nIDE内でテストの提案を生成](https://docs.gitlab.com/ee/user/gitlab_duo_chat_examples.html#write-tests-in-the-ide)します。このコマンドは、具体的な側面（パフォーマンス、リグレッション、特定のフレームワークの使用など）に焦点を当てるために、指示を追加してカスタマイズできます。\n\n\n##### Web IDEでの使用例：\n\n\n- テストを生成したいコードを選択します。\n\n- `/tests`コマンドを使用し、必要に応じて指示を追加します。\n\n\n![DGDテスト -\n画像2](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097192/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750097192521.png)\n\n\n#### 5. GitLab Duoチャットを使用してAI生成コードの問題を特定する\n\n\nGitLab Duoチャットを使用して、AIが生成したコードのレビューと修正を行います。たとえば、Flask\nWebサーバーのコードにセキュリティ脆弱性がないか確認する場合は、以下のプロンプトを使用します。\n\n\n```unset\n\nプロンプト：このコードをレビューして、潜在的なセキュリティ脆弱性と依存関係の問題を検証してください。\n\n\n```\n\n\n![DGDテスト -\n画像3](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097192/Blog/Content%20Images/Blog/Content%20Images/image2_aHR0cHM6_1750097192523.png)\n\n\nGitLab Duoチャットを使用することで、上記のコード内の脆弱性を特定しやすくなります。\n\n\n#### 6. テストレポートを生成する\n\n\nテストを実行した後、GitLab Pagesを使用してデプロイするテストレポートを生成します。\n\n\n```unset\n\n\nプロンプト：GitLab Pagesを使用してデプロイするテストレポートを生成するPythonスクリプトを作成してください。\n\n\n```\n\n\n![DGDテスト -\n画像4](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097192/Blog/Content%20Images/Blog/Content%20Images/image3_aHR0cHM6_1750097192525.png)\n\n\nここでの処理内容は以下のとおりです。\n\n\n- スクリプトは、test_reportsディレクトリが存在することを確認します。\n\n- `subprocess.run()`を使用して`test_server.py`ファイルを実行し、出力（テスト結果）をキャプチャします。\n\n- 出力のRAWデータを`test_reports/test_output.txt`に保存します。\n\n-\nテスト結果を読みやすいように`\u003Cpre>`タグ内に埋め込んだHTMLレポートを生成し、`test_reports/index.html`として保存します。\n\n\n#### 7. GitLab Pagesを使用してテストレポートをデプロイする\n\n\n[GitLab\nPages](https://docs.gitlab.com/ee/user/project/pages/)を使用し、テストレポートを公開します。テストレポートをデプロイするための`.gitlab-ci.yml`ファイルの構成は次のとおりです。\n\n\n```python\n\n\nstages:\n  - test\n  - deploy\ntest_job:\n  stage: test\n  script:\n    - python generate_test_report.py\n  artifacts:\n    paths:\n      - test_reports/\npages:\n  stage: deploy\n  script:\n    - mv test_reports public\n  artifacts:\n    paths:\n      - public\n\n ```\n\nこの構成では、`test_job`ステージでPythonスクリプトを実行してテストレポートを生成します。`pages`ステージでは、`test_reports`ディレクトリが`public`に移動され、GitLab\nPagesがそのコンテンツを提供するために使用されます。\n\n\n#### 8. MRウィジェットにテストレポートを埋め込む\n\n\n[MRウィジェットにテストレポート](https://docs.gitlab.com/ee/ci/testing/unit_test_reports.html)を埋め込むことで、テストの結果を即座に確認でき、透明性と信頼性を確保できます。これは、次のように、CI/CDパイプラインの構成にテストレポートをアーティファクトとして含めることで実現できます。\n\n\n```python\n\n\nstages:\n  - build\n  - test\n  - deploy\n\nbuild_job:\n  stage: build\n  script:\n    - echo \"Building the project...\"\n    - # Your build commands here\n\ntest_job:\n  stage: test\n  script:\n    - mkdir -p test-reports\n    - python test_server.py > test-reports/results.xml\n  artifacts:\n    when: always\n    reports:\n      junit: test-reports/results.xml\n    paths:\n      - test-reports/results.xml\n\npages:\n  stage: deploy\n  script:\n    - mkdir .public\n    - mv test-reports .public/\n  artifacts:\n    paths:\n      - .public\n\n```\n\nテストレポートをアーティファクトとして含め、レポートセクションに指定することで、GitLabによってテスト結果が自動的にMRウィジェットに表示されます。これにより、テストの結果が即座に確認でき、透明性と信頼性が向上します。\n\n\n#### ケーススタディ：セキュリティポリシーとスキャナーによるAIの信頼性\n\n\nAI生成コードのスニペットが、既知の脆弱性を持つ依存関係を取り込んだ状況を想定してみましょう。GitLab\nDuoとそのセキュリティポリシーを使用することで、この依存関係はコード生成プロセス中に検出されます。AIによって生成された以下のスニペットの例を見てみましょう。\n\n\n```python\n\n\nimport os\n\nfrom flask import Flask, request\n\n\napp = Flask(__name__)\n\n\n@app.route('/search')\n\ndef search():\n    query = request.args.get('query')\n    execute_os_command(query)\n    return 'You searched for: ' + query\n\ndef execute_os_command(command):\n    os.system(command)\n\nif __name__ == '__main__':\n    app.run()\n\n```\n\n\nこの例では、検索エンドポイントがOSコマンドインジェクションの脆弱性を持っています。GitLabの静的アプリケーションセキュリティテスト（[SAST](https://docs.gitlab.com/ee/user/application_security/sast/)）コンポーネントを活用することで、この脆弱性はCI/CDパイプライン中に検出されます。\n\n\n##### SASTスキャンを統合して脆弱性を検出する\n\n\nGitLab\nSASTは、自動的にコードを分析してセキュリティ脆弱性を検出します。以下は、`.gitlab-ci.yml`ファイルに統合して問題をスキャンする方法です。\n\n\n```python\n\n\nstages:\n  - build\n  - test\n  - sast\n  - deploy\n\nbuild_job:\n  stage: build\n  script:\n    - echo \"Building the project...\"\n    - # Your build commands here\n\ntest_job:\n  stage: test\n  script:\n    - python test_server.py > test-reports/results.xml\n  artifacts:\n    when: always\n    reports:\n      junit: test-reports/results.xml\n    paths:\n      - test-reports/results.xml\n\nsast_job:\n  stage: sast\n  script:\n    - echo \"Running SAST...\"\n  artifacts:\n    reports:\n      sast: gl-sast-report.json\n  only:\n    - branches\n\npages:\n  stage: deploy\n  script:\n    - mv test-reports public\n  artifacts:\n    paths:\n      - public\n\n```\n\n\nこの設定では、`sast_job`ステージがSASTを実行してコードの脆弱性を検出し、パイプラインアーティファクトに含まれるレポート（`gl-sast-report.json`）を生成します。GitLab\nDuoは、セキュリティポリシーと強力なテストフレームワークを統合することで、お客様がAI生成コードの効率性とセキュリティを確保することを支援します。\n\n\n## 始めてみよう\n\nソフトウェア開発におけるAIの統合は大きなメリットをもたらしますが、新たな課題も伴います。GitLab DuoやGitLab\nPagesのようなツールを使用することで、デベロッパーはAI生成コードを徹底的にテストし、そのセキュリティと信頼性を確保できます。まずはこれらのツールをお試しになり、AIセキュリティとテストの強化を検討してみませんか？\u003Cbr>\n\n\u003Cbr>\n\n\n*監修：川瀬 洋平 [@ykawase](https://gitlab.com/ykawase)\n\n（GitLab合同会社 カスタマーサクセス本部 シニアカスタマーサクセスマネージャー）*\n\n\n> 今すぐ[GitLab\nUltimateのトライアルを開始](https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/blog&glm_content=default-saas-trial)して、GitLab\nDuoとGitLab Pagesをご利用ください。\n\n\n## 「GitLab Duo開発の現場から」シリーズをもっと読む\n\n\n- [GitLab\nDuo開発の現場から：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\nDuo開発の現場から：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\nDuo開発の現場から：GitLabにおけるAI機能のドッグフーディングの取り組み](https://about.gitlab.com/ja-jp/blog/developing-gitlab-duo-how-we-are-dogfooding-our-ai-features/)\n\n- [GitLab\nDuo開発の現場から：AIと根本原因分析を併用したCI/CDパイプラインの修正](https://about.gitlab.com/ja-jp/blog/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd/)\n","ai-ml",[23,24,25,26],"AI/ML","DevSecOps","tutorial","security","2024-10-10",{"slug":29,"featured":6,"template":30},"how-gitlab-duo-helps-secure-and-thoroughly-test-ai-generated-code","BlogPost","content:ja-jp:blog:how-gitlab-duo-helps-secure-and-thoroughly-test-ai-generated-code.yml","yaml","How Gitlab Duo Helps Secure And Thoroughly Test Ai Generated Code","content","ja-jp/blog/how-gitlab-duo-helps-secure-and-thoroughly-test-ai-generated-code.yml","ja-jp/blog/how-gitlab-duo-helps-secure-and-thoroughly-test-ai-generated-code","yml",{"_path":39,"_dir":40,"_draft":6,"_partial":6,"_locale":7,"data":41,"_id":449,"_type":32,"title":450,"_source":34,"_file":451,"_stem":452,"_extension":37},"/shared/ja-jp/main-navigation","ja-jp",{"logo":42,"freeTrial":47,"sales":52,"login":57,"items":62,"search":393,"minimal":427,"duo":440},{"config":43},{"href":44,"dataGaName":45,"dataGaLocation":46},"/ja-jp/","gitlab logo","header",{"text":48,"config":49},"無料トライアルを開始",{"href":50,"dataGaName":51,"dataGaLocation":46},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":53,"config":54},"お問い合わせ",{"href":55,"dataGaName":56,"dataGaLocation":46},"/ja-jp/sales/","sales",{"text":58,"config":59},"サインイン",{"href":60,"dataGaName":61,"dataGaLocation":46},"https://gitlab.com/users/sign_in/","sign in",[63,107,205,210,315,375],{"text":64,"config":65,"cards":67,"footer":90},"プラットフォーム",{"dataNavLevelOne":66},"platform",[68,74,82],{"title":64,"description":69,"link":70},"最も包括的かつAIで強化されたDevSecOpsプラットフォーム",{"text":71,"config":72},"プラットフォームを詳しく見る",{"href":73,"dataGaName":66,"dataGaLocation":46},"/ja-jp/platform/",{"title":75,"description":76,"link":77},"GitLab Duo（AI）","開発のすべてのステージでAIを活用し、ソフトウェアをより迅速にビルド",{"text":78,"config":79},"GitLab Duoのご紹介",{"href":80,"dataGaName":81,"dataGaLocation":46},"/ja-jp/gitlab-duo/","gitlab duo ai",{"title":83,"description":84,"link":85},"GitLabが選ばれる理由","GitLabが大企業に選ばれる理由10選",{"text":86,"config":87},"詳細はこちら",{"href":88,"dataGaName":89,"dataGaLocation":46},"/ja-jp/why-gitlab/","why gitlab",{"title":91,"items":92},"利用を開始：",[93,98,103],{"text":94,"config":95},"プラットフォームエンジニアリング",{"href":96,"dataGaName":97,"dataGaLocation":46},"/ja-jp/solutions/platform-engineering/","platform engineering",{"text":99,"config":100},"開発者の経験",{"href":101,"dataGaName":102,"dataGaLocation":46},"/ja-jp/developer-experience/","Developer experience",{"text":104,"config":105},"MLOps",{"href":106,"dataGaName":104,"dataGaLocation":46},"/ja-jp/topics/devops/the-role-of-ai-in-devops/",{"text":108,"left":109,"config":110,"link":112,"lists":116,"footer":187},"製品",true,{"dataNavLevelOne":111},"solutions",{"text":113,"config":114},"すべてのソリューションを表示",{"href":115,"dataGaName":111,"dataGaLocation":46},"/ja-jp/solutions/",[117,143,165],{"title":118,"description":119,"link":120,"items":125},"自動化","CI/CDと自動化でデプロイを加速",{"config":121},{"icon":122,"href":123,"dataGaName":124,"dataGaLocation":46},"AutomatedCodeAlt","/ja-jp/solutions/delivery-automation/","automated software delivery",[126,130,134,139],{"text":127,"config":128},"CI/CD",{"href":129,"dataGaLocation":46,"dataGaName":127},"/ja-jp/solutions/continuous-integration/",{"text":131,"config":132},"AIアシストによる開発",{"href":80,"dataGaLocation":46,"dataGaName":133},"AI assisted development",{"text":135,"config":136},"ソースコード管理",{"href":137,"dataGaLocation":46,"dataGaName":138},"/ja-jp/solutions/source-code-management/","Source Code Management",{"text":140,"config":141},"自動化されたソフトウェアデリバリー",{"href":123,"dataGaLocation":46,"dataGaName":142},"Automated software delivery",{"title":144,"description":145,"link":146,"items":151},"セキュリティ","セキュリティを損なうことなくコードをより迅速に完成",{"config":147},{"href":148,"dataGaName":149,"dataGaLocation":46,"icon":150},"/ja-jp/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[152,156,161],{"text":153,"config":154},"Application Security Testing",{"href":148,"dataGaName":155,"dataGaLocation":46},"Application security testing",{"text":157,"config":158},"ソフトウェアサプライチェーンの安全性",{"href":159,"dataGaLocation":46,"dataGaName":160},"/ja-jp/solutions/supply-chain/","Software supply chain security",{"text":162,"config":163},"Software Compliance",{"href":164,"dataGaName":162,"dataGaLocation":46},"/ja-jp/solutions/software-compliance/",{"title":166,"link":167,"items":172},"測定",{"config":168},{"icon":169,"href":170,"dataGaName":171,"dataGaLocation":46},"DigitalTransformation","/ja-jp/solutions/visibility-measurement/","visibility and measurement",[173,177,182],{"text":174,"config":175},"可視性と測定",{"href":170,"dataGaLocation":46,"dataGaName":176},"Visibility and Measurement",{"text":178,"config":179},"バリューストリーム管理",{"href":180,"dataGaLocation":46,"dataGaName":181},"/ja-jp/solutions/value-stream-management/","Value Stream Management",{"text":183,"config":184},"分析とインサイト",{"href":185,"dataGaLocation":46,"dataGaName":186},"/ja-jp/solutions/analytics-and-insights/","Analytics and insights",{"title":188,"items":189},"GitLabが活躍する場所",[190,195,200],{"text":191,"config":192},"Enterprise",{"href":193,"dataGaLocation":46,"dataGaName":194},"/ja-jp/enterprise/","enterprise",{"text":196,"config":197},"スモールビジネス",{"href":198,"dataGaLocation":46,"dataGaName":199},"/ja-jp/small-business/","small business",{"text":201,"config":202},"公共機関",{"href":203,"dataGaLocation":46,"dataGaName":204},"/ja-jp/solutions/public-sector/","public sector",{"text":206,"config":207},"価格",{"href":208,"dataGaName":209,"dataGaLocation":46,"dataNavLevelOne":209},"/ja-jp/pricing/","pricing",{"text":211,"config":212,"link":214,"lists":218,"feature":302},"関連リソース",{"dataNavLevelOne":213},"resources",{"text":215,"config":216},"すべてのリソースを表示",{"href":217,"dataGaName":213,"dataGaLocation":46},"/ja-jp/resources/",[219,252,274],{"title":220,"items":221},"はじめに",[222,227,232,237,242,247],{"text":223,"config":224},"インストール",{"href":225,"dataGaName":226,"dataGaLocation":46},"/ja-jp/install/","install",{"text":228,"config":229},"クイックスタートガイド",{"href":230,"dataGaName":231,"dataGaLocation":46},"/ja-jp/get-started/","quick setup checklists",{"text":233,"config":234},"学ぶ",{"href":235,"dataGaLocation":46,"dataGaName":236},"https://university.gitlab.com/","learn",{"text":238,"config":239},"製品ドキュメント",{"href":240,"dataGaName":241,"dataGaLocation":46},"https://docs.gitlab.com/","product documentation",{"text":243,"config":244},"ベストプラクティスビデオ",{"href":245,"dataGaName":246,"dataGaLocation":46},"/ja-jp/getting-started-videos/","best practice videos",{"text":248,"config":249},"インテグレーション",{"href":250,"dataGaName":251,"dataGaLocation":46},"/ja-jp/integrations/","integrations",{"title":253,"items":254},"検索する",[255,260,264,269],{"text":256,"config":257},"お客様成功事例",{"href":258,"dataGaName":259,"dataGaLocation":46},"/ja-jp/customers/","customer success stories",{"text":261,"config":262},"ブログ",{"href":263,"dataGaName":5,"dataGaLocation":46},"/ja-jp/blog/",{"text":265,"config":266},"リモート",{"href":267,"dataGaName":268,"dataGaLocation":46},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"text":270,"config":271},"TeamOps",{"href":272,"dataGaName":273,"dataGaLocation":46},"/ja-jp/teamops/","teamops",{"title":275,"items":276},"つなげる",[277,282,287,292,297],{"text":278,"config":279},"GitLabサービス",{"href":280,"dataGaName":281,"dataGaLocation":46},"/ja-jp/services/","services",{"text":283,"config":284},"コミュニティ",{"href":285,"dataGaName":286,"dataGaLocation":46},"/community/","community",{"text":288,"config":289},"フォーラム",{"href":290,"dataGaName":291,"dataGaLocation":46},"https://forum.gitlab.com/","forum",{"text":293,"config":294},"イベント",{"href":295,"dataGaName":296,"dataGaLocation":46},"/events/","events",{"text":298,"config":299},"パートナー",{"href":300,"dataGaName":301,"dataGaLocation":46},"/ja-jp/partners/","partners",{"backgroundColor":303,"textColor":304,"text":305,"image":306,"link":310},"#2f2a6b","#fff","ソフトウェア開発の未来への洞察",{"altText":307,"config":308},"ソースプロモカード",{"src":309},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":311,"config":312},"最新情報を読む",{"href":313,"dataGaName":314,"dataGaLocation":46},"/ja-jp/the-source/","the source",{"text":316,"config":317,"lists":319},"会社情報",{"dataNavLevelOne":318},"company",[320],{"items":321},[322,327,333,335,340,345,350,355,360,365,370],{"text":323,"config":324},"GitLabについて",{"href":325,"dataGaName":326,"dataGaLocation":46},"/ja-jp/company/","about",{"text":328,"config":329,"footerGa":332},"採用情報",{"href":330,"dataGaName":331,"dataGaLocation":46},"/jobs/","jobs",{"dataGaName":331},{"text":293,"config":334},{"href":295,"dataGaName":296,"dataGaLocation":46},{"text":336,"config":337},"経営陣",{"href":338,"dataGaName":339,"dataGaLocation":46},"/company/team/e-group/","leadership",{"text":341,"config":342},"チーム",{"href":343,"dataGaName":344,"dataGaLocation":46},"/company/team/","team",{"text":346,"config":347},"ハンドブック",{"href":348,"dataGaName":349,"dataGaLocation":46},"https://handbook.gitlab.com/","handbook",{"text":351,"config":352},"投資家向け情報",{"href":353,"dataGaName":354,"dataGaLocation":46},"https://ir.gitlab.com/","investor relations",{"text":356,"config":357},"トラストセンター",{"href":358,"dataGaName":359,"dataGaLocation":46},"/ja-jp/security/","trust center",{"text":361,"config":362},"AI Transparency Center",{"href":363,"dataGaName":364,"dataGaLocation":46},"/ja-jp/ai-transparency-center/","ai transparency center",{"text":366,"config":367},"ニュースレター",{"href":368,"dataGaName":369,"dataGaLocation":46},"/company/contact/","newsletter",{"text":371,"config":372},"プレス",{"href":373,"dataGaName":374,"dataGaLocation":46},"/press/","press",{"text":53,"config":376,"lists":377},{"dataNavLevelOne":318},[378],{"items":379},[380,383,388],{"text":53,"config":381},{"href":55,"dataGaName":382,"dataGaLocation":46},"talk to sales",{"text":384,"config":385},"サポートを受ける",{"href":386,"dataGaName":387,"dataGaLocation":46},"/support/","get help",{"text":389,"config":390},"カスタマーポータル",{"href":391,"dataGaName":392,"dataGaLocation":46},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":394,"login":395,"suggestions":402},"閉じる",{"text":396,"link":397},"リポジトリとプロジェクトを検索するには、次にログインします",{"text":398,"config":399},"GitLab.com",{"href":60,"dataGaName":400,"dataGaLocation":401},"search login","search",{"text":403,"default":404},"提案",[405,408,413,415,419,423],{"text":75,"config":406},{"href":80,"dataGaName":407,"dataGaLocation":401},"GitLab Duo (AI)",{"text":409,"config":410},"コード提案（AI）",{"href":411,"dataGaName":412,"dataGaLocation":401},"/ja-jp/solutions/code-suggestions/","Code Suggestions (AI)",{"text":127,"config":414},{"href":129,"dataGaName":127,"dataGaLocation":401},{"text":416,"config":417},"GitLab on AWS",{"href":418,"dataGaName":416,"dataGaLocation":401},"/ja-jp/partners/technology-partners/aws/",{"text":420,"config":421},"GitLab on Google Cloud",{"href":422,"dataGaName":420,"dataGaLocation":401},"/ja-jp/partners/technology-partners/google-cloud-platform/",{"text":424,"config":425},"GitLabを選ぶ理由",{"href":88,"dataGaName":426,"dataGaLocation":401},"Why GitLab?",{"freeTrial":428,"mobileIcon":432,"desktopIcon":437},{"text":48,"config":429},{"href":430,"dataGaName":51,"dataGaLocation":431},"https://gitlab.com/-/trials/new/","nav",{"altText":433,"config":434},"GitLabアイコン",{"src":435,"dataGaName":436,"dataGaLocation":431},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":433,"config":438},{"src":439,"dataGaName":436,"dataGaLocation":431},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"freeTrial":441,"mobileIcon":445,"desktopIcon":447},{"text":442,"config":443},"GitLab Duoの詳細について",{"href":80,"dataGaName":444,"dataGaLocation":431},"gitlab duo",{"altText":433,"config":446},{"src":435,"dataGaName":436,"dataGaLocation":431},{"altText":433,"config":448},{"src":439,"dataGaName":436,"dataGaLocation":431},"content:shared:ja-jp:main-navigation.yml","Main Navigation","shared/ja-jp/main-navigation.yml","shared/ja-jp/main-navigation",{"_path":454,"_dir":40,"_draft":6,"_partial":6,"_locale":7,"title":455,"button":456,"config":461,"_id":463,"_type":32,"_source":34,"_file":464,"_stem":465,"_extension":37},"/shared/ja-jp/banner","GitLab Duo Agent Platformがパブリックベータ版で利用可能になりました！",{"text":457,"config":458},"ベータ版を試す",{"href":459,"dataGaName":460,"dataGaLocation":46},"/ja-jp/gitlab-duo/agent-platform/","duo banner",{"layout":462},"release","content:shared:ja-jp:banner.yml","shared/ja-jp/banner.yml","shared/ja-jp/banner",{"_path":467,"_dir":40,"_draft":6,"_partial":6,"_locale":7,"data":468,"_id":672,"_type":32,"title":673,"_source":34,"_file":674,"_stem":675,"_extension":37},"/shared/ja-jp/main-footer",{"text":469,"source":470,"edit":476,"contribute":481,"config":486,"items":491,"minimal":664},"GitはSoftware Freedom Conservancyの商標です。当社は「GitLab」をライセンスに基づいて使用しています",{"text":471,"config":472},"ページのソースを表示",{"href":473,"dataGaName":474,"dataGaLocation":475},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":477,"config":478},"このページを編集",{"href":479,"dataGaName":480,"dataGaLocation":475},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":482,"config":483},"ご協力をお願いします",{"href":484,"dataGaName":485,"dataGaLocation":475},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":487,"facebook":488,"youtube":489,"linkedin":490},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[492,515,569,601,636],{"title":64,"links":493,"subMenu":498},[494],{"text":495,"config":496},"DevSecOpsプラットフォーム",{"href":73,"dataGaName":497,"dataGaLocation":475},"devsecops platform",[499],{"title":206,"links":500},[501,505,510],{"text":502,"config":503},"プランの表示",{"href":208,"dataGaName":504,"dataGaLocation":475},"view plans",{"text":506,"config":507},"Premiumを選ぶ理由",{"href":508,"dataGaName":509,"dataGaLocation":475},"/ja-jp/pricing/premium/","why premium",{"text":511,"config":512},"Ultimateを選ぶ理由",{"href":513,"dataGaName":514,"dataGaLocation":475},"/ja-jp/pricing/ultimate/","why ultimate",{"title":516,"links":517},"ソリューション",[518,523,526,528,533,538,542,545,548,553,555,557,559,564],{"text":519,"config":520},"デジタルトランスフォーメーション",{"href":521,"dataGaName":522,"dataGaLocation":475},"/ja-jp/topics/digital-transformation/","digital transformation",{"text":524,"config":525},"セキュリティとコンプライアンス",{"href":148,"dataGaName":155,"dataGaLocation":475},{"text":140,"config":527},{"href":123,"dataGaName":124,"dataGaLocation":475},{"text":529,"config":530},"アジャイル開発",{"href":531,"dataGaName":532,"dataGaLocation":475},"/ja-jp/solutions/agile-delivery/","agile delivery",{"text":534,"config":535},"クラウドトランスフォーメーション",{"href":536,"dataGaName":537,"dataGaLocation":475},"/ja-jp/topics/cloud-native/","cloud transformation",{"text":539,"config":540},"SCM",{"href":137,"dataGaName":541,"dataGaLocation":475},"source code management",{"text":127,"config":543},{"href":129,"dataGaName":544,"dataGaLocation":475},"continuous integration & delivery",{"text":178,"config":546},{"href":180,"dataGaName":547,"dataGaLocation":475},"value stream management",{"text":549,"config":550},"GitOps",{"href":551,"dataGaName":552,"dataGaLocation":475},"/ja-jp/solutions/gitops/","gitops",{"text":191,"config":554},{"href":193,"dataGaName":194,"dataGaLocation":475},{"text":196,"config":556},{"href":198,"dataGaName":199,"dataGaLocation":475},{"text":201,"config":558},{"href":203,"dataGaName":204,"dataGaLocation":475},{"text":560,"config":561},"教育",{"href":562,"dataGaName":563,"dataGaLocation":475},"/ja-jp/solutions/education/","education",{"text":565,"config":566},"金融サービス",{"href":567,"dataGaName":568,"dataGaLocation":475},"/ja-jp/solutions/finance/","financial services",{"title":211,"links":570},[571,573,575,577,580,582,585,587,589,591,593,595,597,599],{"text":223,"config":572},{"href":225,"dataGaName":226,"dataGaLocation":475},{"text":228,"config":574},{"href":230,"dataGaName":231,"dataGaLocation":475},{"text":233,"config":576},{"href":235,"dataGaName":236,"dataGaLocation":475},{"text":238,"config":578},{"href":240,"dataGaName":579,"dataGaLocation":475},"docs",{"text":261,"config":581},{"href":263,"dataGaName":5},{"text":583,"config":584},"お客様の成功事例",{"href":258,"dataGaLocation":475},{"text":256,"config":586},{"href":258,"dataGaName":259,"dataGaLocation":475},{"text":265,"config":588},{"href":267,"dataGaName":268,"dataGaLocation":475},{"text":278,"config":590},{"href":280,"dataGaName":281,"dataGaLocation":475},{"text":270,"config":592},{"href":272,"dataGaName":273,"dataGaLocation":475},{"text":283,"config":594},{"href":285,"dataGaName":286,"dataGaLocation":475},{"text":288,"config":596},{"href":290,"dataGaName":291,"dataGaLocation":475},{"text":293,"config":598},{"href":295,"dataGaName":296,"dataGaLocation":475},{"text":298,"config":600},{"href":300,"dataGaName":301,"dataGaLocation":475},{"title":602,"links":603},"Company",[604,606,608,610,612,614,616,620,625,627,629,631],{"text":323,"config":605},{"href":325,"dataGaName":318,"dataGaLocation":475},{"text":328,"config":607},{"href":330,"dataGaName":331,"dataGaLocation":475},{"text":336,"config":609},{"href":338,"dataGaName":339,"dataGaLocation":475},{"text":341,"config":611},{"href":343,"dataGaName":344,"dataGaLocation":475},{"text":346,"config":613},{"href":348,"dataGaName":349,"dataGaLocation":475},{"text":351,"config":615},{"href":353,"dataGaName":354,"dataGaLocation":475},{"text":617,"config":618},"Sustainability",{"href":619,"dataGaName":617,"dataGaLocation":475},"/sustainability/",{"text":621,"config":622},"ダイバーシティ、インクルージョン、ビロンギング（DIB）",{"href":623,"dataGaName":624,"dataGaLocation":475},"/ja-jp/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":356,"config":626},{"href":358,"dataGaName":359,"dataGaLocation":475},{"text":366,"config":628},{"href":368,"dataGaName":369,"dataGaLocation":475},{"text":371,"config":630},{"href":373,"dataGaName":374,"dataGaLocation":475},{"text":632,"config":633},"現代奴隷制の透明性に関する声明",{"href":634,"dataGaName":635,"dataGaLocation":475},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":53,"links":637},[638,640,642,644,649,654,659],{"text":53,"config":639},{"href":55,"dataGaName":56,"dataGaLocation":475},{"text":384,"config":641},{"href":386,"dataGaName":387,"dataGaLocation":475},{"text":389,"config":643},{"href":391,"dataGaName":392,"dataGaLocation":475},{"text":645,"config":646},"ステータス",{"href":647,"dataGaName":648,"dataGaLocation":475},"https://status.gitlab.com/","status",{"text":650,"config":651},"利用規約",{"href":652,"dataGaName":653,"dataGaLocation":475},"/terms/","terms of use",{"text":655,"config":656},"プライバシーに関する声明",{"href":657,"dataGaName":658,"dataGaLocation":475},"/ja-jp/privacy/","privacy statement",{"text":660,"config":661},"Cookieの設定",{"dataGaName":662,"dataGaLocation":475,"id":663,"isOneTrustButton":109},"cookie preferences","ot-sdk-btn",{"items":665},[666,668,670],{"text":650,"config":667},{"href":652,"dataGaName":653,"dataGaLocation":475},{"text":655,"config":669},{"href":657,"dataGaName":658,"dataGaLocation":475},{"text":660,"config":671},{"dataGaName":662,"dataGaLocation":475,"id":663,"isOneTrustButton":109},"content:shared:ja-jp:main-footer.yml","Main Footer","shared/ja-jp/main-footer.yml","shared/ja-jp/main-footer",[677],{"_path":678,"_dir":679,"_draft":6,"_partial":6,"_locale":7,"content":680,"config":684,"_id":686,"_type":32,"title":687,"_source":34,"_file":688,"_stem":689,"_extension":37},"/en-us/blog/authors/david-oregan","authors",{"name":18,"config":681},{"headshot":682,"ctfId":683},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659853/Blog/Author%20Headshots/oregand-headshot.png","oregand",{"template":685},"BlogAuthor","content:en-us:blog:authors:david-oregan.yml","David Oregan","en-us/blog/authors/david-oregan.yml","en-us/blog/authors/david-oregan",{"_path":691,"_dir":40,"_draft":6,"_partial":6,"_locale":7,"header":692,"eyebrow":693,"blurb":694,"button":695,"secondaryButton":699,"_id":701,"_type":32,"title":702,"_source":34,"_file":703,"_stem":704,"_extension":37},"/shared/ja-jp/next-steps","より優れたソフトウェアをより速く提供","フォーチュン100企業の50%以上がGitLabを信頼","インテリジェントなDevSecOpsプラットフォームで\n\n\nチームの可能性を広げましょう。\n",{"text":48,"config":696},{"href":697,"dataGaName":51,"dataGaLocation":698},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":53,"config":700},{"href":55,"dataGaName":56,"dataGaLocation":698},"content:shared:ja-jp:next-steps.yml","Next Steps","shared/ja-jp/next-steps.yml","shared/ja-jp/next-steps",{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":706,"content":707,"config":710,"_id":31,"_type":32,"title":33,"_source":34,"_file":35,"_stem":36,"_extension":37},{"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":708,"heroImage":11,"date":19,"body":20,"category":21,"tags":709,"updatedDate":27},[18],[23,24,25,26],{"slug":29,"featured":6,"template":30},1761814454043]