[{"data":1,"prerenderedAt":719},["ShallowReactive",2],{"/ja-jp/blog/how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes":3,"navigation-ja-jp":40,"banner-ja-jp":453,"footer-ja-jp":466,"Karthik Nayak-Manuel Kraft":675,"next-steps-ja-jp":698,"footer-source-/ja-jp/blog/how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes/":713},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":8,"content":16,"config":29,"_id":33,"_type":34,"title":35,"_source":36,"_file":37,"_stem":38,"_extension":39},"/ja-jp/blog/how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes","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リポジトリのバックアップを48時間から41分に短縮した方法","15年前のGit関数のパフォーマンス上のボトルネックを追跡して修正し、効率性の向上、より強固なバックアップ戦略の導入、リスクの軽減を実現した方法をご紹介します。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097166/Blog/Hero%20Images/Blog/Hero%20Images/REFERENCE%20-%20display%20preview%20for%20blog%20images%20%282%29_2pKf8RsKzAaThmQfqHIaa7_1750097166565.png","https://about.gitlab.com/blog/how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes","https://about.gitlab.com","記事","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLabリポジトリのバックアップを48時間から41分に短縮した方法\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Karthik Nayak\"},{\"@type\":\"Person\",\"name\":\"Manuel Kraft\"}],\n        \"datePublished\": \"2025-06-05\",\n      }",{"title":9,"description":10,"authors":17,"heroImage":11,"date":20,"body":21,"category":22,"tags":23},[18,19],"Karthik Nayak","Manuel Kraft","2025-06-05","リポジトリのバックアップは、いかなる堅牢なディザスタリカバリ戦略においても不可欠な要素です。しかし、リポジトリのサイズが大きくなるにつれて、信頼性の高いバックアップの作成プロセスはますます難しくなります。GitLabでは、[Railsリポジトリ](https://gitlab.com/gitlab-org/gitlab)のバックアップに48時間かかっていました。そのため、バックアップ頻度かシステムパフォーマンスのどちらを優先するかを選ばないといけないという難しい状況にありました。お客様のため、そして社内ユーザーのためにこの問題に取り組むことにしました。\n\n最終的に、15年前に作成したGit関数でO(N²)レベルの複雑なアルゴリズムが使われていたのがこの問題の原因であることを突き止め、アルゴリズムを変更して修正したところ、__バックアップ時間が大幅に短縮__されました。その結果、コストの削減、リスクの軽減とともに、コードベースに合わせて実際にスケールするバックアップ戦略を実施できるようになりました。\n\nこれは、大規模なリポジトリのユーザーなら誰にでも起こりうるGitのスケーラビリティの問題であることが判明しました。この問題をどのように追跡して修正したかをご説明します。\n\n## 大規模なバックアップ\n\nまずは、問題について詳しく見ていきましょう。組織においてリポジトリのサイズが大きくなり、バックアップが複雑化するにつれて、以下のような課題が生じる可能性があります。\n\n* **時間がかかるバックアップ**：非常にサイズの大きいリポジトリを使用している場合、バックアップの作成に数時間かかる可能性があるため、定期的なバックアップを行うのが難しくなりがちです。\n* **リソースの集中**：長時間のバックアップ処理には大量のサーバーリソースが必要となることがあるため、他のオペレーションに影響を及ぼす可能性があります。\n* **バックアップの実施期間**：24時間体制で業務を行っているチームにとって、このような長時間の処理を行える適切なメンテナンス期間を確保するのは難しい場合があります。\n* **失敗するリスクの増大**：バックアップ処理に長時間かかると、ネットワークの問題、サーバーの再起動、システムエラーなどによる中断の影響を受けやすくなります。そのため、場合によっては長時間かかるバックアップ処理を最初からやり直さざるを得なくなります。\n* **競合状態**：バックアップの作成に時間がかかるため、その間にリポジトリが大きく変更される可能性があります。結果として、使用できないバックアップが作成されたり、オブジェクトにアクセスできなくなってバックアップ処理が中断されたりすることがあります。\n\nこのような課題によって、バックアップの頻度や完全性を妥協せざるを得なくなる可能性があります。しかしながら、データ保護という観点では妥協すべきではありません。バックアップの実施期間が長くなると、顧客は回避策を取らざるを得なくなることがあります。その場合、外部ツールの導入やバックアップ頻度の削減などが行われますが、結果として、組織全体で一貫したデータ保護戦略を維持できなくなる可能性があります。\n\nでは、GitLabがどのような方法でパフォーマンス上のボトルネックを特定し、解決策を見つけ、バックアップ時間を短縮するためにどのように導入したかを詳しく見ていきましょう。\n\n## 技術的な課題\n\nGitLabのリポジトリバックアップ機能では、[`git bundle create`](https://git-scm.com/docs/git-bundle)コマンドを使用しています。このコマンドは、ブランチやタグのようなすべてのオブジェクトと参照を含むリポジトリの完全なスナップショットをキャプチャします。このバンドルは、リポジトリを正確な状態で再作成するための復元ポイントとして機能します。\n\nしかしながら、このコマンドの実装には参照数に関連するスケーラビリティの低さの問題があり、パフォーマンス上のボトルネックとなっていました。リポジトリ内の参照数が増えるにつれて、処理時間が飛躍的に増加していました。当社の一番大きなリポジトリでは数百万個の参照が含まれますが、バックアップ処理に48時間以上かかることもありました。\n\n### 根本原因分析\n\nそこで、このパフォーマンス上のボトルネックの根本原因を特定するために、実行中のコマンドのフレームグラフを分析しました。\n\n![実行中のコマンドが示されたフレームグラフ](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097176/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750097176388.jpg)\n\nフレームグラフは、スタックトレースを使用してコマンドの実行パスを表示します。各バーはコード内の関数に対応しており、バーの幅はその特定の関数内でコマンドの実行に費やされた時間を示します。\n\n10,000個の参照が含まれるリポジトリで実行された`git bundle create`コマンドのフレームグラフを調べたところ、実行時間の約80%が`object_array_remove_duplicates()`関数に費やされていました。この関数は、[コミットb2a6d1c686](https://gitlab.com/gitlab-org/git/-/commit/b2a6d1c686)（バンドル：同じ参照を複数回指定できるように許可、2009年1月17日）でGitに導入されたものです。\n\nこの変更内容を理解するには、`git bundle create`を使用すると、バンドルに含める参照を指定できることを把握する必要があります。完全なリポジトリバンドルの場合、`--all`フラグを指定するとすべての参照がパッケージ化されます。\n\nこのコミットは、ユーザーがコマンドラインから重複した参照を指定（例：`git bundle create main.bundle main main`）すると、重複したmain参照を適切に処理せずにバンドルが作成されてしまうという問題に対処したものでした。Gitリポジトリでこのバンドルをアンバンドルすると、同じ参照を二度書き込もうとするため、壊れてしまいます。そのため、重複回避を目的として、すべての参照で重複の特定処理が繰り返されるようにネストされた`for`ループを用いたコードが実装されました。このようなO(N²)アルゴリズムは、参照数が多いリポジトリではパフォーマンス上の重大なボトルネックとなり、かなりの処理時間がかかっていました。\n\n### 修正方法：O(N²)アルゴリズムを効率的なマッピングに置き換える\n\nGitLabは、明らかになったパフォーマンスの問題を解決するために、ネストされたループをマップデータ構造に置き換えるアップストリーム修正をGitにコントリビュートしました。これにより、各参照がマップに追加され、各参照の単一のコピーのみが処理目的で自動的に保持されるようになりました。\n\nこの変更により、`git bundle create`のパフォーマンスが劇的に向上し、参照数の多いリポジトリのスケーラビリティが大幅に改善されました。10,000個の参照があるリポジトリでベンチマークテストを行った結果、パフォーマンスが6倍向上することが明らかになりました。\n\n```shell\nBenchmark 1: bundle (refcount = 100000, revision = master)\n  Time (mean ± σ): \t14.653 s ±  0.203 s\t[User: 13.940 s, System: 0.762 s]\n  Range (min … max):   14.237 s … 14.920 s\t10 runs\n\nBenchmark 2: bundle (refcount = 100000, revision = HEAD)\n  Time (mean ± σ):  \t2.394 s ±  0.023 s\t[User: 1.684 s, System: 0.798 s]\n  Range (min … max):\t2.364 s …  2.425 s\t10 runs\n\nSummary\n  bundle (refcount = 100000, revision = HEAD) ran\n\t6.12 ± 0.10 times faster than bundle (refcount = 100000, revision = master)\n```\n\nパッチは承認され、アップストリームのGitに[マージ](https://gitlab.com/gitlab-org/git/-/commit/bb74c0abbc31da35be52999569ea481ebd149d1d)されました。GitLabでは、次のGitバージョンがリリースされる前にお客様がすぐに恩恵を受けられるように、この修正をバックポートしました。\n\n## 結果：バックアップ時間の大幅な短縮に成功\n\nこの改善によるパフォーマンスの向上は、まさにこれまでの状況を一変させるものでした。\n\n* **バックアップ時間が48時間から41分に短縮**：GitLab最大のリポジトリ（`gitlab-org/gitlab`）のバックアップを従来のわずか1.4%の時間で作成できるようになりました。\n* **一貫したパフォーマンスの維持**：この修正はリポジトリのサイズに関係なく機能し、安定してスケールします。\n* **効率的なリソースの利用**：バックアップ処理中のサーバー負荷が大幅に軽減されました。\n* **幅広い適用性**：もっとも劇的な改善が見られるのはバックアップの作成ですが、多数の参照を処理するすべてのバンドルベースの操作においてメリットがあります。\n\n## GitLabを利用するお客様にとってのメリット\n\nGitLabを利用する組織は、この改善によって、リポジトリのバックアップとディザスタリカバリ計画方法に関して、即座に次のような具体的なメリットを得られます。\n* **バックアップ戦略の変革**   \n  * 企業チームは、開発ワークフローに影響を与えたり、長期にわたるバックアップ期間を確保したりすることなく、夜間に実施する完全バックアップのスケジュールを確立できます。   \n  * 長期のバックアップ専用の時間を設けなくとも、夜間スケジュール中にバックグラウンドでシームレスに実行できます。  \n* **事業継続性の向上**  \n  * バックアップ時間が数日から数分に短縮されたことで、組織は回復ポイント目標（RPO）を大幅に最小化できます。これはビジネスリスクの軽減につながります。災害が発生した場合でも、数日かからず、数時間の作業で復旧できる可能性があります。  \n* **運用負荷の軽減**   \n  * サーバーリソースの消費を抑えられ、メンテナンス期間が短縮されます。  \n  * バックアップ時間が短縮されるため、コンピューティングコストも削減します。特に処理時間が延びると、コストの増加に直結するクラウド環境においては顕著です。  \n* **将来にわたって活用できるインフラストラクチャ**   \n  * リポジトリの規模が大きくなっても、バックアップ頻度とシステムパフォーマンスのどちらを優先するか選ぶ必要はもうありません。   \n  * コードベースの拡大にあわせて、バックアップ戦略もシームレスに拡張できます。\n\n組織は、パフォーマンスや完全性を犠牲にしなくても、より堅牢なバックアップ戦略を実施できるようになりました。以前は難しいトレードオフに直面していたものの、今では簡単な方法で運用できます。\n\n[GitLab 18.0](https://about.gitlab.com/ja-jp/blog/gitlab-18-0-release/)のリリース以降、ライセンスプランに関係なく、GitLabをご利用のお客様は全員、ご紹介した改善点を利用して[バックアップ](https://docs.gitlab.com/administration/backup_restore/backup_gitlab/)戦略の立案および実施を行えるようになりました。設定を変更する必要はもうありません。\n\n## 今後の展望\n\n今回の革新的な改善は、スケーラブルでエンタープライズグレードなGitインフラの提供に向けた、当社の継続的な取り組みの一環です。バックアップの作成時間が48時間から41分に短縮されたことは重要なマイルストーンとなりましたが、引き続きスタック全体においてパフォーマンス上のボトルネックを特定し、対処しています。\n\n今回の改善をGitのアップストリームプロジェクトにコントリビュートでき、GitLabユーザーだけでなく、広範なGitコミュニティにメリットをもたらせたことを特に誇りに思っています。このような協調的なアプローチにより、改善に対する徹底的なレビューおよび幅広いテストの実施が行われ、誰もがそのメリットを得られるようになります。\n\n> GitLabではパフォーマンスを最適化するために、このような深いレベルでインフラに取り組んでいます。ぜひGitLab 18のオンラインリリースイベントにご参加ください。ほかにどのような根本的な機能強化が行われたかをご紹介します。[今すぐご登録ください！](https://about.gitlab.com/ja-jp/eighteen/)","engineering",[24,25,26,27,28],"Git","オープンソース","製品","パフォーマンス","DevSecOpsプラットフォーム",{"slug":30,"featured":31,"template":32},"how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes",true,"BlogPost","content:ja-jp:blog:how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes.yml","yaml","How We Decreased Gitlab Repo Backup Times From 48 Hours To 41 Minutes","content","ja-jp/blog/how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes.yml","ja-jp/blog/how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes","yml",{"_path":41,"_dir":42,"_draft":6,"_partial":6,"_locale":7,"data":43,"_id":449,"_type":34,"title":450,"_source":36,"_file":451,"_stem":452,"_extension":39},"/shared/ja-jp/main-navigation","ja-jp",{"logo":44,"freeTrial":49,"sales":54,"login":59,"items":64,"search":393,"minimal":427,"duo":440},{"config":45},{"href":46,"dataGaName":47,"dataGaLocation":48},"/ja-jp/","gitlab logo","header",{"text":50,"config":51},"無料トライアルを開始",{"href":52,"dataGaName":53,"dataGaLocation":48},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":55,"config":56},"お問い合わせ",{"href":57,"dataGaName":58,"dataGaLocation":48},"/ja-jp/sales/","sales",{"text":60,"config":61},"サインイン",{"href":62,"dataGaName":63,"dataGaLocation":48},"https://gitlab.com/users/sign_in/","sign in",[65,109,205,210,315,375],{"text":66,"config":67,"cards":69,"footer":92},"プラットフォーム",{"dataNavLevelOne":68},"platform",[70,76,84],{"title":66,"description":71,"link":72},"最も包括的かつAIで強化されたDevSecOpsプラットフォーム",{"text":73,"config":74},"プラットフォームを詳しく見る",{"href":75,"dataGaName":68,"dataGaLocation":48},"/ja-jp/platform/",{"title":77,"description":78,"link":79},"GitLab Duo（AI）","開発のすべてのステージでAIを活用し、ソフトウェアをより迅速にビルド",{"text":80,"config":81},"GitLab Duoのご紹介",{"href":82,"dataGaName":83,"dataGaLocation":48},"/ja-jp/gitlab-duo/","gitlab duo ai",{"title":85,"description":86,"link":87},"GitLabが選ばれる理由","GitLabが大企業に選ばれる理由10選",{"text":88,"config":89},"詳細はこちら",{"href":90,"dataGaName":91,"dataGaLocation":48},"/ja-jp/why-gitlab/","why gitlab",{"title":93,"items":94},"利用を開始：",[95,100,105],{"text":96,"config":97},"プラットフォームエンジニアリング",{"href":98,"dataGaName":99,"dataGaLocation":48},"/ja-jp/solutions/platform-engineering/","platform engineering",{"text":101,"config":102},"開発者の経験",{"href":103,"dataGaName":104,"dataGaLocation":48},"/ja-jp/developer-experience/","Developer experience",{"text":106,"config":107},"MLOps",{"href":108,"dataGaName":106,"dataGaLocation":48},"/ja-jp/topics/devops/the-role-of-ai-in-devops/",{"text":26,"left":31,"config":110,"link":112,"lists":116,"footer":187},{"dataNavLevelOne":111},"solutions",{"text":113,"config":114},"すべてのソリューションを表示",{"href":115,"dataGaName":111,"dataGaLocation":48},"/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":48},"AutomatedCodeAlt","/ja-jp/solutions/delivery-automation/","automated software delivery",[126,130,134,139],{"text":127,"config":128},"CI/CD",{"href":129,"dataGaLocation":48,"dataGaName":127},"/ja-jp/solutions/continuous-integration/",{"text":131,"config":132},"AIアシストによる開発",{"href":82,"dataGaLocation":48,"dataGaName":133},"AI assisted development",{"text":135,"config":136},"ソースコード管理",{"href":137,"dataGaLocation":48,"dataGaName":138},"/ja-jp/solutions/source-code-management/","Source Code Management",{"text":140,"config":141},"自動化されたソフトウェアデリバリー",{"href":123,"dataGaLocation":48,"dataGaName":142},"Automated software delivery",{"title":144,"description":145,"link":146,"items":151},"セキュリティ","セキュリティを損なうことなくコードをより迅速に完成",{"config":147},{"href":148,"dataGaName":149,"dataGaLocation":48,"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":48},"Application security testing",{"text":157,"config":158},"ソフトウェアサプライチェーンの安全性",{"href":159,"dataGaLocation":48,"dataGaName":160},"/ja-jp/solutions/supply-chain/","Software supply chain security",{"text":162,"config":163},"Software Compliance",{"href":164,"dataGaName":162,"dataGaLocation":48},"/ja-jp/solutions/software-compliance/",{"title":166,"link":167,"items":172},"測定",{"config":168},{"icon":169,"href":170,"dataGaName":171,"dataGaLocation":48},"DigitalTransformation","/ja-jp/solutions/visibility-measurement/","visibility and measurement",[173,177,182],{"text":174,"config":175},"可視性と測定",{"href":170,"dataGaLocation":48,"dataGaName":176},"Visibility and Measurement",{"text":178,"config":179},"バリューストリーム管理",{"href":180,"dataGaLocation":48,"dataGaName":181},"/ja-jp/solutions/value-stream-management/","Value Stream Management",{"text":183,"config":184},"分析とインサイト",{"href":185,"dataGaLocation":48,"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":48,"dataGaName":194},"/ja-jp/enterprise/","enterprise",{"text":196,"config":197},"スモールビジネス",{"href":198,"dataGaLocation":48,"dataGaName":199},"/ja-jp/small-business/","small business",{"text":201,"config":202},"公共機関",{"href":203,"dataGaLocation":48,"dataGaName":204},"/ja-jp/solutions/public-sector/","public sector",{"text":206,"config":207},"価格",{"href":208,"dataGaName":209,"dataGaLocation":48,"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":48},"/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":48},"/ja-jp/install/","install",{"text":228,"config":229},"クイックスタートガイド",{"href":230,"dataGaName":231,"dataGaLocation":48},"/ja-jp/get-started/","quick setup checklists",{"text":233,"config":234},"学ぶ",{"href":235,"dataGaLocation":48,"dataGaName":236},"https://university.gitlab.com/","learn",{"text":238,"config":239},"製品ドキュメント",{"href":240,"dataGaName":241,"dataGaLocation":48},"https://docs.gitlab.com/","product documentation",{"text":243,"config":244},"ベストプラクティスビデオ",{"href":245,"dataGaName":246,"dataGaLocation":48},"/ja-jp/getting-started-videos/","best practice videos",{"text":248,"config":249},"インテグレーション",{"href":250,"dataGaName":251,"dataGaLocation":48},"/ja-jp/integrations/","integrations",{"title":253,"items":254},"検索する",[255,260,264,269],{"text":256,"config":257},"お客様成功事例",{"href":258,"dataGaName":259,"dataGaLocation":48},"/ja-jp/customers/","customer success stories",{"text":261,"config":262},"ブログ",{"href":263,"dataGaName":5,"dataGaLocation":48},"/ja-jp/blog/",{"text":265,"config":266},"リモート",{"href":267,"dataGaName":268,"dataGaLocation":48},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"text":270,"config":271},"TeamOps",{"href":272,"dataGaName":273,"dataGaLocation":48},"/ja-jp/teamops/","teamops",{"title":275,"items":276},"つなげる",[277,282,287,292,297],{"text":278,"config":279},"GitLabサービス",{"href":280,"dataGaName":281,"dataGaLocation":48},"/ja-jp/services/","services",{"text":283,"config":284},"コミュニティ",{"href":285,"dataGaName":286,"dataGaLocation":48},"/community/","community",{"text":288,"config":289},"フォーラム",{"href":290,"dataGaName":291,"dataGaLocation":48},"https://forum.gitlab.com/","forum",{"text":293,"config":294},"イベント",{"href":295,"dataGaName":296,"dataGaLocation":48},"/events/","events",{"text":298,"config":299},"パートナー",{"href":300,"dataGaName":301,"dataGaLocation":48},"/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":48},"/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":48},"/ja-jp/company/","about",{"text":328,"config":329,"footerGa":332},"採用情報",{"href":330,"dataGaName":331,"dataGaLocation":48},"/jobs/","jobs",{"dataGaName":331},{"text":293,"config":334},{"href":295,"dataGaName":296,"dataGaLocation":48},{"text":336,"config":337},"経営陣",{"href":338,"dataGaName":339,"dataGaLocation":48},"/company/team/e-group/","leadership",{"text":341,"config":342},"チーム",{"href":343,"dataGaName":344,"dataGaLocation":48},"/company/team/","team",{"text":346,"config":347},"ハンドブック",{"href":348,"dataGaName":349,"dataGaLocation":48},"https://handbook.gitlab.com/","handbook",{"text":351,"config":352},"投資家向け情報",{"href":353,"dataGaName":354,"dataGaLocation":48},"https://ir.gitlab.com/","investor relations",{"text":356,"config":357},"トラストセンター",{"href":358,"dataGaName":359,"dataGaLocation":48},"/ja-jp/security/","trust center",{"text":361,"config":362},"AI Transparency Center",{"href":363,"dataGaName":364,"dataGaLocation":48},"/ja-jp/ai-transparency-center/","ai transparency center",{"text":366,"config":367},"ニュースレター",{"href":368,"dataGaName":369,"dataGaLocation":48},"/company/contact/","newsletter",{"text":371,"config":372},"プレス",{"href":373,"dataGaName":374,"dataGaLocation":48},"/press/","press",{"text":55,"config":376,"lists":377},{"dataNavLevelOne":318},[378],{"items":379},[380,383,388],{"text":55,"config":381},{"href":57,"dataGaName":382,"dataGaLocation":48},"talk to sales",{"text":384,"config":385},"サポートを受ける",{"href":386,"dataGaName":387,"dataGaLocation":48},"/support/","get help",{"text":389,"config":390},"カスタマーポータル",{"href":391,"dataGaName":392,"dataGaLocation":48},"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":62,"dataGaName":400,"dataGaLocation":401},"search login","search",{"text":403,"default":404},"提案",[405,408,413,415,419,423],{"text":77,"config":406},{"href":82,"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":90,"dataGaName":426,"dataGaLocation":401},"Why GitLab?",{"freeTrial":428,"mobileIcon":432,"desktopIcon":437},{"text":50,"config":429},{"href":430,"dataGaName":53,"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":82,"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":42,"_draft":6,"_partial":6,"_locale":7,"title":455,"button":456,"config":461,"_id":463,"_type":34,"_source":36,"_file":464,"_stem":465,"_extension":39},"/shared/ja-jp/banner","GitLab Duo Agent Platformがパブリックベータ版で利用可能になりました！",{"text":457,"config":458},"ベータ版を試す",{"href":459,"dataGaName":460,"dataGaLocation":48},"/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":42,"_draft":6,"_partial":6,"_locale":7,"data":468,"_id":671,"_type":34,"title":672,"_source":36,"_file":673,"_stem":674,"_extension":39},"/shared/ja-jp/main-footer",{"text":469,"source":470,"edit":476,"contribute":481,"config":486,"items":491,"minimal":663},"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,514,568,600,635],{"title":66,"links":493,"subMenu":497},[494],{"text":28,"config":495},{"href":75,"dataGaName":496,"dataGaLocation":475},"devsecops platform",[498],{"title":206,"links":499},[500,504,509],{"text":501,"config":502},"プランの表示",{"href":208,"dataGaName":503,"dataGaLocation":475},"view plans",{"text":505,"config":506},"Premiumを選ぶ理由",{"href":507,"dataGaName":508,"dataGaLocation":475},"/ja-jp/pricing/premium/","why premium",{"text":510,"config":511},"Ultimateを選ぶ理由",{"href":512,"dataGaName":513,"dataGaLocation":475},"/ja-jp/pricing/ultimate/","why ultimate",{"title":515,"links":516},"ソリューション",[517,522,525,527,532,537,541,544,547,552,554,556,558,563],{"text":518,"config":519},"デジタルトランスフォーメーション",{"href":520,"dataGaName":521,"dataGaLocation":475},"/ja-jp/topics/digital-transformation/","digital transformation",{"text":523,"config":524},"セキュリティとコンプライアンス",{"href":148,"dataGaName":155,"dataGaLocation":475},{"text":140,"config":526},{"href":123,"dataGaName":124,"dataGaLocation":475},{"text":528,"config":529},"アジャイル開発",{"href":530,"dataGaName":531,"dataGaLocation":475},"/ja-jp/solutions/agile-delivery/","agile delivery",{"text":533,"config":534},"クラウドトランスフォーメーション",{"href":535,"dataGaName":536,"dataGaLocation":475},"/ja-jp/topics/cloud-native/","cloud transformation",{"text":538,"config":539},"SCM",{"href":137,"dataGaName":540,"dataGaLocation":475},"source code management",{"text":127,"config":542},{"href":129,"dataGaName":543,"dataGaLocation":475},"continuous integration & delivery",{"text":178,"config":545},{"href":180,"dataGaName":546,"dataGaLocation":475},"value stream management",{"text":548,"config":549},"GitOps",{"href":550,"dataGaName":551,"dataGaLocation":475},"/ja-jp/solutions/gitops/","gitops",{"text":191,"config":553},{"href":193,"dataGaName":194,"dataGaLocation":475},{"text":196,"config":555},{"href":198,"dataGaName":199,"dataGaLocation":475},{"text":201,"config":557},{"href":203,"dataGaName":204,"dataGaLocation":475},{"text":559,"config":560},"教育",{"href":561,"dataGaName":562,"dataGaLocation":475},"/ja-jp/solutions/education/","education",{"text":564,"config":565},"金融サービス",{"href":566,"dataGaName":567,"dataGaLocation":475},"/ja-jp/solutions/finance/","financial services",{"title":211,"links":569},[570,572,574,576,579,581,584,586,588,590,592,594,596,598],{"text":223,"config":571},{"href":225,"dataGaName":226,"dataGaLocation":475},{"text":228,"config":573},{"href":230,"dataGaName":231,"dataGaLocation":475},{"text":233,"config":575},{"href":235,"dataGaName":236,"dataGaLocation":475},{"text":238,"config":577},{"href":240,"dataGaName":578,"dataGaLocation":475},"docs",{"text":261,"config":580},{"href":263,"dataGaName":5},{"text":582,"config":583},"お客様の成功事例",{"href":258,"dataGaLocation":475},{"text":256,"config":585},{"href":258,"dataGaName":259,"dataGaLocation":475},{"text":265,"config":587},{"href":267,"dataGaName":268,"dataGaLocation":475},{"text":278,"config":589},{"href":280,"dataGaName":281,"dataGaLocation":475},{"text":270,"config":591},{"href":272,"dataGaName":273,"dataGaLocation":475},{"text":283,"config":593},{"href":285,"dataGaName":286,"dataGaLocation":475},{"text":288,"config":595},{"href":290,"dataGaName":291,"dataGaLocation":475},{"text":293,"config":597},{"href":295,"dataGaName":296,"dataGaLocation":475},{"text":298,"config":599},{"href":300,"dataGaName":301,"dataGaLocation":475},{"title":601,"links":602},"Company",[603,605,607,609,611,613,615,619,624,626,628,630],{"text":323,"config":604},{"href":325,"dataGaName":318,"dataGaLocation":475},{"text":328,"config":606},{"href":330,"dataGaName":331,"dataGaLocation":475},{"text":336,"config":608},{"href":338,"dataGaName":339,"dataGaLocation":475},{"text":341,"config":610},{"href":343,"dataGaName":344,"dataGaLocation":475},{"text":346,"config":612},{"href":348,"dataGaName":349,"dataGaLocation":475},{"text":351,"config":614},{"href":353,"dataGaName":354,"dataGaLocation":475},{"text":616,"config":617},"Sustainability",{"href":618,"dataGaName":616,"dataGaLocation":475},"/sustainability/",{"text":620,"config":621},"ダイバーシティ、インクルージョン、ビロンギング（DIB）",{"href":622,"dataGaName":623,"dataGaLocation":475},"/ja-jp/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":356,"config":625},{"href":358,"dataGaName":359,"dataGaLocation":475},{"text":366,"config":627},{"href":368,"dataGaName":369,"dataGaLocation":475},{"text":371,"config":629},{"href":373,"dataGaName":374,"dataGaLocation":475},{"text":631,"config":632},"現代奴隷制の透明性に関する声明",{"href":633,"dataGaName":634,"dataGaLocation":475},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":55,"links":636},[637,639,641,643,648,653,658],{"text":55,"config":638},{"href":57,"dataGaName":58,"dataGaLocation":475},{"text":384,"config":640},{"href":386,"dataGaName":387,"dataGaLocation":475},{"text":389,"config":642},{"href":391,"dataGaName":392,"dataGaLocation":475},{"text":644,"config":645},"ステータス",{"href":646,"dataGaName":647,"dataGaLocation":475},"https://status.gitlab.com/","status",{"text":649,"config":650},"利用規約",{"href":651,"dataGaName":652,"dataGaLocation":475},"/terms/","terms of use",{"text":654,"config":655},"プライバシーに関する声明",{"href":656,"dataGaName":657,"dataGaLocation":475},"/ja-jp/privacy/","privacy statement",{"text":659,"config":660},"Cookieの設定",{"dataGaName":661,"dataGaLocation":475,"id":662,"isOneTrustButton":31},"cookie preferences","ot-sdk-btn",{"items":664},[665,667,669],{"text":649,"config":666},{"href":651,"dataGaName":652,"dataGaLocation":475},{"text":654,"config":668},{"href":656,"dataGaName":657,"dataGaLocation":475},{"text":659,"config":670},{"dataGaName":661,"dataGaLocation":475,"id":662,"isOneTrustButton":31},"content:shared:ja-jp:main-footer.yml","Main Footer","shared/ja-jp/main-footer.yml","shared/ja-jp/main-footer",[676,688],{"_path":677,"_dir":678,"_draft":6,"_partial":6,"_locale":7,"content":679,"config":683,"_id":685,"_type":34,"title":18,"_source":36,"_file":686,"_stem":687,"_extension":39},"/en-us/blog/authors/karthik-nayak","authors",{"name":18,"config":680},{"headshot":681,"ctfId":682},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659809/Blog/Author%20Headshots/Screenshot_2025-06-04_at_8.49.51%C3%A2__AM.png","3Q6ZKvaiCRw7tFZdDGlecg",{"template":684},"BlogAuthor","content:en-us:blog:authors:karthik-nayak.yml","en-us/blog/authors/karthik-nayak.yml","en-us/blog/authors/karthik-nayak",{"_path":689,"_dir":678,"_draft":6,"_partial":6,"_locale":7,"content":690,"config":694,"_id":695,"_type":34,"title":19,"_source":36,"_file":696,"_stem":697,"_extension":39},"/en-us/blog/authors/manuel-kraft",{"name":19,"config":691},{"headshot":692,"ctfId":693},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659815/Blog/Author%20Headshots/manuel_kraft.png","5q1NADtEqxyoV1F1s6JKDz",{"template":684},"content:en-us:blog:authors:manuel-kraft.yml","en-us/blog/authors/manuel-kraft.yml","en-us/blog/authors/manuel-kraft",{"_path":699,"_dir":42,"_draft":6,"_partial":6,"_locale":7,"header":700,"eyebrow":701,"blurb":702,"button":703,"secondaryButton":707,"_id":709,"_type":34,"title":710,"_source":36,"_file":711,"_stem":712,"_extension":39},"/shared/ja-jp/next-steps","より優れたソフトウェアをより速く提供","フォーチュン100企業の50%以上がGitLabを信頼","インテリジェントなDevSecOpsプラットフォームで\n\n\nチームの可能性を広げましょう。\n",{"text":50,"config":704},{"href":705,"dataGaName":53,"dataGaLocation":706},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":55,"config":708},{"href":57,"dataGaName":58,"dataGaLocation":706},"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":714,"content":715,"config":718,"_id":33,"_type":34,"title":35,"_source":36,"_file":37,"_stem":38,"_extension":39},{"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":716,"heroImage":11,"date":20,"body":21,"category":22,"tags":717},[18,19],[24,25,26,27,28],{"slug":30,"featured":31,"template":32},1760039139027]