[{"data":1,"prerenderedAt":712},["ShallowReactive",2],{"/ja-jp/blog/tutorial-automated-release-and-release-notes-with-gitlab":3,"navigation-ja-jp":41,"banner-ja-jp":455,"footer-ja-jp":468,"footer-source-/ja-jp/blog/tutorial-automated-release-and-release-notes-with-gitlab/":678,"Ben Ridley":684,"next-steps-ja-jp":697},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":8,"content":17,"config":31,"_id":34,"_type":35,"title":36,"_source":37,"_file":38,"_stem":39,"_extension":40},"/ja-jp/blog/tutorial-automated-release-and-release-notes-with-gitlab","blog",false,"",{"title":9,"description":10,"ogTitle":11,"ogDescription":10,"noIndex":6,"ogImage":12,"ogUrl":13,"ogSiteName":14,"ogType":15,"canonicalUrls":13,"schema":16},"チュートリアル：GitLabでリリースとリリースノートを自動化する","GitLabのChangelog APIを使用すると、リリースアーティファクト、リリースノートなどの変更をまとめた、包括的な変更履歴の生成を自動化できます。","チュートリアル：GitLabでリリース自動化とリリースノート自動生成","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659978/Blog/Hero%20Images/automation.png","https://about.gitlab.com/blog/tutorial-automated-release-and-release-notes-with-gitlab","https://about.gitlab.com","記事","\n                        \n        {\"@context\": \" https://schema.org \",\n        \"@type\": \"Article\",\n        \"headline\": \"チュートリアル：GitLabでリリース自動化とリリースノート自動生成\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Ben Ridley\"}],\n        \"datePublished\": \"2023-11-01\n      \",}",{"title":11,"description":10,"authors":18,"heroImage":12,"date":20,"body":21,"category":22,"tags":23,"updatedDate":30},[19],"Ben Ridley","2023-11-01","***2025年の更新情報**  GitLab Changelog APIは進化を続けており、今回のブログでは取り上げていない優れた新機能も追加されています。たとえば、コミット履歴からテンプレート化された値を使ってカスタムの変更履歴を提供できるようになっています。[詳しくは、変更履歴に関する公式ドキュメントをご覧ください。](https://docs.gitlab.com/user/project/changelogs/)*\n\nユーザーが頼りにしているソフトウェアを開発する際には、各リリースでの変更点を効果的に伝えることが不可欠です。新機能や変更点、削除された内容をきちんと伝えることで、ユーザーはソフトウェアを最大限に活用でき、アップグレード時の思わぬトラブルも回避できます。\n\nこれまで、リリースノートの作成や変更履歴の管理は手間のかかる作業でした。デベロッパーが外部ツールで変更を追跡したり、リリースマネージャーがマージ履歴を手作業で確認したりする必要があったためです。GitLabのChangelog APIを使うと、Gitリポジトリに記録された豊富な履歴情報を活用して、リリースノートの作成や変更履歴の管理を簡単に行うことができます。\n\nこのチュートリアルでは、GitLabを使ったリリースの自動化について詳しく説明します。リリースアーティファクトの生成、リリースノートの作成、そしてユーザーに関係する変更点をすべて網羅した包括的な変更履歴の生成方法について取り上げます。\n\n## GitLabにおけるリリース\nまずは、GitLabでリリースがどのように機能しているのかを見ていきましょう。\n\nGitLabにおけるリリースとは、Gitタグで識別される特定のコードバージョンのことを指します。このリリースには、前回のリリース以降に行われた変更内容（およびリリースノート）や、そのバージョンのコードからビルドされた関連アーティファクト（Dockerイメージ、インストールパッケージ、ドキュメントなど）が含まれます。\n\nリリースは、GitLabのUIを使って作成・管理することもできますし、Release APIを呼び出すか、CIパイプラインの中に特別な`release`ジョブを定義することでも実現できます。このチュートリアルでは、CI/CDパイプライン内の`release`ジョブを使用します。これにより、テストやコードスキャンなどに使っている自動化プロセスを、リリースの実行にも拡張できるようになります。\n\nリリースを自動化するために、まず確認しなければならないことがあります。「リリースノートや変更履歴を作成するための変更情報は、どこから取得するのか？」その答えは、Gitリポジトリです。コミットメッセージやマージコミットの履歴を通じて、豊富な開発履歴が得られます。この情報を活用して、リリースノートや変更履歴を自動生成できるか試してみましょう。\n\n## コミットトレーラーの導入\n[コミットトレーラー](https://git-scm.com/docs/git-interpret-trailers)とは、Gitのコミットメッセージの末尾に追加する、構造化されたエントリーのことです。書き方はシンプルで、`\u003CHEADER>:\u003CBODY>`という形式のメッセージをコミットの最後に追加するだけです。これにより、`git`のコマンドラインインターフェース（CLI）ツールがそれらを解析して、他のシステムで利用できるようになります。たとえば、すでに使ったことがあるかもしれませんが、`git commit --sign-off`でコミットに署名する機能もこの仕組みを使っています。これは、`Signed-off-by: \u003Cあなたの名前>`というトレーラーをコミットに追加することで実現されています。このトレーラーには、好きな構造化データを自由に追加できるので、変更履歴に役立つ情報を保存する場所として非常に便利です。\n\n実際に、コミットに`Changelog: \u003Cadded/changed/removed>`というトレーラーを使うと、GitLabのChangelog APIがそれを解析し、自動的に変更履歴を生成してくれます！\n\nそれでは、実際のコードベースに変更を加えてリリースを行い、リリースノートと変更履歴のエントリーを生成する手順を見ていきましょう。\n\n## サンプルプロジェクトについて\n今回のブログでは、シンプルなPythonのWebアプリのリポジトリを使っています。仮に、このアプリケーションのバージョン1.0.0がちょうどリリースされたばかりで、これが現在のコードのバージョンだとしましょう。また、GitLab上で1.0.0のリリースも作成してありますが、これはまだ自動化されたリリースパイプラインを作っていないため、手動で作成しました。\n\n![GitLabのUI上で、バージョン1.0.0のリリースが表示されているスクリーンショット](https://about.gitlab.com/images/blogimages/2023-08-22-automated-release-and-release-notes-with-gitlab/1-0-release.png)\n\n## 変更の実施\n現在は開発を急ピッチで進めている段階なので、今日はアプリケーションのバージョン2.0.0のリリース作業を進めていきます。2.0.0リリースでは、アプリに新機能の「チャットボット」を追加します。そして、量子ブロックチェーン機能は削除します。これは最初のベンチャーキャピタル向けに必要だっただけなので、もう不要です。さらに、2.0.0リリースに向けて、CI/CDパイプラインに自動リリースジョブも追加する予定です。\n\nまずは不要な機能の削除から始めましょう。不要な部分を削除したマージリクエストを作成しました。ここで重要なのは、コミットメッセージに`Changelog: removed`トレーラーを含めることです。これを行う方法はいくつかあります。たとえば、最初からコミットに直接含めたり、インタラクティブリベースを使ってCLIで後から追加したりもできます。しかし、今回の状況では、一番簡単な方法は最後にGitLabの`Edit commit message`ボタンを使って、マージコミットにトレーラーを追加する方法だと思います。\n\n![GitLabのUIに表示された、使われていない機能を削除するマージリクエストのスクリーンショット](https://about.gitlab.com/images/blogimages/2023-08-22-automated-release-and-release-notes-with-gitlab/remove-unused-features-mr.png)\n\nこの方法を使えば、マージコミットのタイトルをもっと簡潔なものに変更することもできます。ここでは、マージコミットのタイトルを'Remove Unused Features'に変更しました。これは変更履歴のエントリに表示されます。\n\n次に、2.0.0リリース用の新機能を追加しましょう。ここでも、新機能を含む別のマージリクエストを開き、マージコミットを編集して`Changelog: added`トレーラーを追加し、コミットのタイトルをより簡潔に編集するだけです。\n\n![GitLabのUIに表示された、新しい機能を追加するマージリクエストのスクリーンショット](https://about.gitlab.com/images/blogimages/2023-08-22-automated-release-and-release-notes-with-gitlab/add-chatbot-mr.png) \n\nこれで、バージョン2.0.0をリリースする準備はほとんど整いました。ただし、今回は手動でリリースを作成したくありません。そのため、リリースの前に`.gitlab-ci.yml`ファイルにいくつかのジョブを追加し、コードに`2.0.0`のような新しいバージョンのタグを付けた際に、自動でリリース処理を行い、対応するリリースノートや変更履歴のエントリを生成するようにします。\n\n**注：**変更履歴のトレーラーを強制したい場合は、[Dangerのようなツールを使用して、マージリクエストの規則を自動的にチェックする](https://docs.gitlab.com/ee/development/dangerbot.html)方法を検討してください。\n\n## 自動リリースパイプラインの構築\nパイプラインを機能させるには、プロジェクトアクセストークンを作成し、GitLabのAPIを呼び出して変更履歴のエントリーを生成できるようにする必要があります。[APIスコープを指定してプロジェクトアクセストークンを作成](https://docs.gitlab.com/ee/user/project/settings/project_access_tokens.html#create-a-project-access-token)し、それを`CI_API_TOKEN`という名前の[CI/CD変数として保存](https://docs.gitlab.com/ee/ci/variables/#define-a-cicd-variable-in-the-ui)します。この変数を参照して、APIの認証を行います。\n\n次に、`gitlab-ci.yml`ファイルに以下の2つの新しいジョブを追加します。\n```yaml\nprepare_job:\n  stage: prepare\n  image: alpine:latest\n  rules:\n  - if: '$CI_COMMIT_TAG =~ /^v?\\d+\\.\\d+\\.\\d+$/'\n  script:\n    - apk add curl jq\n    - 'curl -H \"PRIVATE-TOKEN: $CI_API_TOKEN\" \"$CI_API_V4_URL/projects/$CI_PROJECT_ID/repository/changelog?version=$CI_COMMIT_TAG\" | jq -r .notes > release_notes.md'\n  artifacts:\n    paths:\n    - release_notes.md\n\nrelease_job:\n  stage: release\n  image: registry.gitlab.com/gitlab-org/release-cli:latest\n  needs:\n    - job: prepare_job\n      artifacts: true\n  rules:\n  - if: '$CI_COMMIT_TAG =~ /^v?\\d+\\.\\d+\\.\\d+$/'\n  script:\n    - echo \"Creating release\"\n  release:\n    name: 'Release $CI_COMMIT_TAG'\n    description: release_notes.md\n    tag_name: '$CI_COMMIT_TAG'\n    ref: '$CI_COMMIT_SHA'\n    assets:\n      links:\n        - name: 'Container Image $CI_COMMIT_TAG'\n          url: \"https://$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG:$CI_COMMIT_SHA\"\n```\n\n上記の設定では、`prepare_job`が`curl`と`jq`を使ってGitLabのChangelog APIエンドポイントを呼び出し、その結果を`release_job`に渡して、リリースの作成を行います。詳しく見ていきましょう。\n- まず、先ほど作成したプロジェクトアクセストークンを使ってGitLabのChangelog APIを呼び出し、リリースノートを生成します。そして、その出力をアーティファクトとして保存します。\n- バージョンには`$CI_COMMIT_TAG`変数を使用しています。この仕組みが機能するには、タグにセマンティックバージョニング（たとえば`2.0.0`のような形式）を使用する必要があります。そのため、リリースジョブには、セマンティックバージョンのタグが付いているかどうかを確認する`rules`セクションを追加しています。\n\t- GitLabのChangelog APIを使うには、セマンティックバージョニングが必要です。この形式を用いて、現在のリリースとの比較対象となる最新リリースを特定します。\n- GitLabが提供する公式の`release-cli`イメージを使用しています。ジョブ内で`release`キーワードを使うには、この`release-cli`が必要です。\n- `release`キーワードを使用して、GitLab上にリリースを作成します。これは、リリースの作成と必須フィールドの入力のために確保されている特別なジョブキーワードです。\n- リリースの`description`には、ファイルを引数として渡すことができます。今回の例では、`prepare_job`で生成し、アーティファクトとしてこのジョブに渡されたファイルを使っています。\n- さらに、パイプラインの早い段階でビルドされているコンテナイメージも、リリースアセットとして追加しています。ビルドプロセスの中で作成したバイナリやドキュメントなども、パイプライン内でアップロード済みのURLを指定することで、リリースアセットとして添付できます。\n\n## 自動リリースの実行\nこの設定が完了すれば、リリースを実行するために必要なのは、バージョン付けのルールに従ったタグをリポジトリにプッシュすることだけです。CLIからタグをプッシュすることもできますが、ここではGitLabのUIを使って、mainブランチにタグを作成する例をご紹介します。タグを作成するには、サイドバーからコード > タグ > 新しいタグを選択します。\n![タグの作成方法を示すGitLabのUIのスクリーンショット](https://about.gitlab.com/images/blogimages/2023-08-22-automated-release-and-release-notes-with-gitlab/create-2-tag.png)\n\nタグの作成が完了すると、パイプラインの実行が開始されます。 GitLabのChangelog APIが、今回のリリースと前回のリリースの間に行われた変更をすべて含むリリースノートをMarkdown形式で自動的に生成します。 以下は、この例で生成されたMarkdownの出力結果です。\n\n```md\n## 2.0.0 (2023-08-25)\n\n### added (1 change)\n\n- [Add ChatBot](gl-demo-ultimate-bridley/super-devsecops-incorporated/simply-notes-release-demo@0c3601a45af617c5481322bfce4d71db1f911b02) ([merge request](gl-demo-ultimate-bridley/super-devsecops-incorporated/simply-notes-release-demo!4))\n\n### removed (1 change)\n\n- [Remove Unused Features](gl-demo-ultimate-bridley/super-devsecops-incorporated/simply-notes-release-demo@463d453c5ae0f4fc611ea969e5442e3298bf0d8a) ([merge request](gl-demo-ultimate-bridley/super-devsecops-incorporated/simply-notes-release-demo!3))\n```\n\nご覧のとおり、GitLabはgitのコミットトレーラーをもとに、リリースノートのエントリを自動で抽出しています。さらに、変更の詳細やディスカッションが確認できるよう、マージリクエストへのリンクも付けられています。\n\nそしてこちらが、最終的に作成されたリリースです。\n![GitLabのリリースUIに表示された、バージョン2.0.0のリリース画面](https://about.gitlab.com/images/blogimages/2023-08-22-automated-release-and-release-notes-with-gitlab/2-0-release.png)\n\n## 変更履歴の作成\n次に、変更履歴（すべてのリリースノートをまとめた履歴）を更新します。これを行うには、先ほど使用したChangelog APIエンドポイントに対して、`POST`リクエストを送ります。\n\n必要であれば、この処理をリリースパイプラインの一部として実行することも可能です。たとえば、prepareジョブの`script`セクションに以下の内容を追加します。\n```sh\n'curl -H \"PRIVATE-TOKEN: $CI_API_TOKEN\" -X POST \"$CI_API_V4_URL/projects/$CI_PROJECT_ID/repository/changelog?version=$CI_COMMIT_TAG\"\n```\n\n**この処理は実際にリポジトリを変更する点にご注意ください。** 具体的には、最新のリリースノートを`CHANGELOG.md`ファイルに追加するためのコミットが作成されます。\n![変更履歴ファイルを更新するコミットを示すリポジトリのスクリーンショット](https://about.gitlab.com/images/blogimages/2023-08-22-automated-release-and-release-notes-with-gitlab/changelog-api-commit.png)\n\nこれですべて完了です！`git`が提供する豊富な履歴情報と、便利なコミットトレーラーを活用することで、GitLabの強力なAPIとCI/CDパイプラインを使って、リリースプロセスとリリースノートの生成を自動化できます。\n\n> この記事で使用したプロジェクトを実際に確認したい場合は、[こちらのリンク](https://gitlab.com/gitlab-learn-labs/sample-projects/release-automation-demo)からご覧いただけます。\n","product",[24,25,26,27,28,29],"Tutorial","CI","CI/CD","DevOps","DevSecOps","git","2025-06-05",{"slug":32,"featured":6,"template":33},"tutorial-automated-release-and-release-notes-with-gitlab","BlogPost","content:ja-jp:blog:tutorial-automated-release-and-release-notes-with-gitlab.yml","yaml","Tutorial Automated Release And Release Notes With Gitlab","content","ja-jp/blog/tutorial-automated-release-and-release-notes-with-gitlab.yml","ja-jp/blog/tutorial-automated-release-and-release-notes-with-gitlab","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":112,"config":113,"link":115,"lists":119,"footer":189},"製品",true,{"dataNavLevelOne":114},"solutions",{"text":116,"config":117},"すべてのソリューションを表示",{"href":118,"dataGaName":114,"dataGaLocation":49},"/ja-jp/solutions/",[120,145,167],{"title":121,"description":122,"link":123,"items":128},"自動化","CI/CDと自動化でデプロイを加速",{"config":124},{"icon":125,"href":126,"dataGaName":127,"dataGaLocation":49},"AutomatedCodeAlt","/ja-jp/solutions/delivery-automation/","automated software delivery",[129,132,136,141],{"text":26,"config":130},{"href":131,"dataGaLocation":49,"dataGaName":26},"/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":126,"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":26,"config":416},{"href":131,"dataGaName":26,"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":126,"dataGaName":127,"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":26,"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":112},"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":112},"content:shared:ja-jp:main-footer.yml","Main Footer","shared/ja-jp/main-footer.yml","shared/ja-jp/main-footer",{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":679,"content":680,"config":683,"_id":34,"_type":35,"title":36,"_source":37,"_file":38,"_stem":39,"_extension":40},{"title":9,"description":10,"ogTitle":11,"ogDescription":10,"noIndex":6,"ogImage":12,"ogUrl":13,"ogSiteName":14,"ogType":15,"canonicalUrls":13,"schema":16},{"title":11,"description":10,"authors":681,"heroImage":12,"date":20,"body":21,"category":22,"tags":682,"updatedDate":30},[19],[24,25,26,27,28,29],{"slug":32,"featured":6,"template":33},[685],{"_path":686,"_dir":687,"_draft":6,"_partial":6,"_locale":7,"content":688,"config":692,"_id":694,"_type":35,"title":19,"_source":37,"_file":695,"_stem":696,"_extension":40},"/en-us/blog/authors/ben-ridley","authors",{"name":19,"config":689},{"headshot":690,"ctfId":691},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659973/Blog/Author%20Headshots/bridley-headshot.jpg","bridley",{"template":693},"BlogAuthor","content:en-us:blog:authors:ben-ridley.yml","en-us/blog/authors/ben-ridley.yml","en-us/blog/authors/ben-ridley",{"_path":698,"_dir":43,"_draft":6,"_partial":6,"_locale":7,"header":699,"eyebrow":700,"blurb":701,"button":702,"secondaryButton":706,"_id":708,"_type":35,"title":709,"_source":37,"_file":710,"_stem":711,"_extension":40},"/shared/ja-jp/next-steps","より優れたソフトウェアをより速く提供","フォーチュン100企業の50%以上がGitLabを信頼","インテリジェントなDevSecOpsプラットフォームで\n\n\nチームの可能性を広げましょう。\n",{"text":51,"config":703},{"href":704,"dataGaName":54,"dataGaLocation":705},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":56,"config":707},{"href":58,"dataGaName":59,"dataGaLocation":705},"content:shared:ja-jp:next-steps.yml","Next Steps","shared/ja-jp/next-steps.yml","shared/ja-jp/next-steps",1761814461290]