[{"data":1,"prerenderedAt":701},["ShallowReactive",2],{"/ja-jp/blog/whats-new-in-git-2-46-0/":3,"navigation-ja-jp":37,"banner-ja-jp":451,"footer-ja-jp":463,"Justin Tobler":673,"next-steps-ja-jp":686},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":8,"content":16,"config":26,"_id":30,"_type":31,"title":32,"_source":33,"_file":34,"_stem":35,"_extension":36},"/ja-jp/blog/whats-new-in-git-2-46-0","blog",false,"",{"title":9,"description":10,"ogTitle":9,"ogDescription":10,"noIndex":6,"ogImage":11,"ogUrl":12,"ogSiteName":13,"ogType":14,"canonicalUrls":12,"schema":15},"Git 2.46.0の新機能","ここでは、参照バックエンド移行ツールやトランザクションシンボリック参照の更新など、GitLabのGitチームやより広範なGitコミュニティがリリースにコントリビュートしたハイライトをご紹介します。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749660028/Blog/Hero%20Images/blog-image-template-1800x945__25_.png","https://about.gitlab.com/blog/whats-new-in-git-2-46-0","https://about.gitlab.com","article","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Git 2.46.0の新機能\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Justin Tobler\"}],\n        \"datePublished\": \"2024-07-29\",\n      }",{"title":9,"description":10,"authors":17,"heroImage":11,"date":19,"body":20,"category":21,"tags":22},[18],"Justin Tobler","2024-07-29","Gitプロジェクトは最近[Gitバージョン2.46.0](https://lore.kernel.org/git/xmqqzfq0i0qa.fsf@gitster.g/T/#u)をリリースしました。GitLabのGitチームやより広範なGitコミュニティからのコントリビュートを含む、本リリースの主なハイライトをご覧ください。\n\n## 参照バックエンド移行ツール\n\n前回の[Git 2.45.0](https://gitlab.com/gitlab-org/git/-/raw/master/Documentation/RelNotes/2.45.0.txt?ref_type=heads)リリースでは、reftablesフォーマットが参照を保存するための新しいバックエンドとして導入されました。この新しい参照フォーマットは、参照数の増加に伴って大規模なリポジトリが直面する複数の課題を解決します。reftableバックエンドについての詳細は、前回の[Gitリリースに関するブログ記事](https://about.gitlab.com/blog/whats-new-in-git-2-45-0/)をお読みください。機能の紹介や、初心者向けガイドが掲載されているため、[reftablesの仕組みについて詳しく確認できます](https://about.gitlab.com/blog/a-beginners-guide-to-the-git-reftable-format/)。\n\nreftableバックエンドのオンディスクフォーマットは、既存のファイルバックエンドとは異なります。したがって、既存のリポジトリでreftableを使用するにはさまざまなフォーマット間の変換が必要となります。これを達成するため、参照バックエンド移行の実行時に利用可能な`migrate`サブコマンドを含む新しいgit-refs(1)コマンドが導入されました。以下は、このコマンドの使用方法の例です。\n\n```shell\n# reflogが含まれないようにするために、新規リポジトリを「bare」として初期化します。\n$ git init --bare .\n$ git commit --allow-empty -m \"init\"\n# リポジトリに、バックエンドのファイルへの参照を投入します。\n$ git branch foo\n$ git branch bar\n$ tree .git/refs\n.git/refs\n├── heads\n│   ├── bar\n│   ├── foo\n│   ├── main\n└── tags\n# reftableフォーマットへの参照移行を実行します。\n$ git refs migrate --ref-format=reftable\n# reftableバックエンドが使用されていることを確認します。\n$ tree .git/reftable\n.git/reftable\n├── 0x000000000001-0x000000000001-a3451eed.ref\n└── tables.list\n# リポジトリ設定をチェックして、`refstorage`フォーマットが変更されていることを確認します。\n$ cat config\n[core]\n        repositoryformatversion = 1\n        filemode = true\n        bare = true\n        ignorecase = true\n        precomposeunicode = true\n[extensions]\n        refstorage = reftable\n```\n\nリポジトリが移行されるとオンディスクフォーマットが変更され、reftableバックエンドを使用するようになります。リポジトリに対するGit操作は引き続き機能し、以前と同様にリモートでやり取りを行います。移行はリポジトリ内での参照の保存方法にのみ影響します。ファイル参照バックエンドに戻したい場合は、代わりに`--ref-format=files`を指定して同じコマンドで実行します。\n\n移行ツールには現在いくつか留意すべき制限があります。リポジトリ内のreflogは参照バックエンドのコンポーネントであり、フォーマット間の移行が必要となります。残念ながら、現時点ではツールを使用してファイルとreftablesバックエンド間でreflogを変換することはできません。また、worktreeが含まれるリポジトリには基本的に複数のrefストアがありますが、移行ツールはまだこのようなシナリオに対応していません。したがって、リポジトリにreflogまたはworktreeが含まれている場合、現時点では参照移行を行えません。こうした制限は、今後のバージョンでなくなる可能性があります。\n\nbare Gitリポジトリにはreflogが含まれないため、移行は簡単です。標準的なnon-bareリポジトリを移行するには、まずreflogを削除する必要があります。そのため、reflogやworktreeのないリポジトリであれば、すべて移行できます。こうした制限はありますが、このツールを使うことで既存のリポジトリでreftablesバックエンドを活用し始められます。\n\nこのプロジェクトは[Patrick Steinhardt](https://gitlab.com/pks-gitlab)が主導しました。\n\n## トランザクションシンボリック参照の更新\n\n[git-update-ref(1)](https://git-scm.com/docs/git-update-ref)コマンドは、Gitリポジトリ内で参照更新を実行します。こうした参照更新は、`git update-ref --stdin`を使用してupdate-ref命令をstdinに渡すことで、トランザクションで一括してアトミックに実行することもできます。こちらは実行方法の例です。\n\n```shell\n$ git init .\n$ git branch -m main\n$ git commit --allow-empty -m \"foo\" && git commit --allow-empty -m \"bar\"\n# 作成された2つのコミットのオブジェクトIDを取得します。\n$ git rev-parse main~ main\n567aac2b3d1fbf0bd2433f669eb0b82a0348775e\n3b13462a9a42e0a3130b9cbc472ab479d3ef0631\n# トランザクションを開始し、update-ref命令を出し、コミットします。\n$ git update-ref --stdin \u003C\u003CEOF\n> start\n> create refs/heads/new-ref 3b13462a9a42e0a3130b9cbc472ab479d3ef0631\n> update refs/heads/main 567aac2b3d1fbf0bd2433f669eb0b82a0348775e\n> commit\n> EOF\n$ git for-each-ref\n567aac2b3d1fbf0bd2433f669eb0b82a0348775e commit refs/heads/main\n3b13462a9a42e0a3130b9cbc472ab479d3ef0631 commit refs/heads/my-ref\n```\n\nこの例では、トランザクションがコミットされると「bar」コミットを指す新しいブランチが作成され、メインブランチは以前の 「foo」コミットを指すよう更新されます。トランザクションをコミットすると、指定された参照更新がアトミックに実行されます。個々の参照更新が失敗した場合、トランザクションは中止され、参照更新は実行されません。\n\nここで注目すべきは、こうしたトランザクションでシンボリック参照更新をサポートする命令がないことです。ユーザーが、同一のトランザクション内で他の参照とともにシンボリック参照をアトミックに更新したい場合でも、それに対応できるツールはありません。今回のリリースでは、この機能を提供するために`symref-create`、`symref-update`、`symref-delete`、`symref-verify`命令が導入されました。\n\n```shell\n# 次の操作で更新されるシンボリック参照を作成します。\n$ git symbolic-ref refs/heads/symref refs/heads/main\n# シンボリック参照自体が更新されるようにするには、--no-derefフラグが必要です。\n$ git update-ref --stdin --no-deref \u003C\u003CEOF\n> start\n> symref-create refs/heads/new-symref refs/heads/main\n> symref-update refs/heads/symref refs/heads/new-ref\n> commit\n> EOF\n$ git symbolic-ref refs/heads/symref\nrefs/heads/new-ref\n$ git symbolic-ref refs/heads/new-symref\nrefs/heads/main\n```\n\n上記の例ではトランザクション内で新しいシンボリック参照が作成され、別のシンボリック参照が更新されています。こうした新しいsymref命令を既存の命令と組み合わせて使用することで、あらゆる種類の参照更新を単一のトランザクションで実行できます。新しい命令に関する詳細はこちらの[ドキュメント](https://git-scm.com/docs/git-update-ref)をご覧ください。\n\nこのプロジェクトは[Karthik Nayak](https://gitlab.com/knayakgl)が主導しました。\n\n## git-config(1)のUXの改善\n\ngit-config(1)コマンドを使用すると、リポジトリやグローバルオプションの表示や設定を行えます。設定を行う際に使用するモードは、フラグを使用して明示的に選択したり、コマンドに指定した引数の数に基づいて暗黙的に決定したりすることができます。例：\n\n```shell\n$ git config --list\n# ユーザー名の設定を明示的に取得\n$ git config --get user.name\n# ユーザー名の設定を暗黙的に取得\n$ git config user.name\n# ユーザー名の設定を明示的に行う\n$ git config --set user.name \"Sidney Jones\"\n# ユーザー名の設定を暗黙的に行う\n$ git config user.name \"Sidney Jones\"\n# 3つ目の引数を指定することも可能です。これは何の役に立つのでしょうか？\n$ git config \u003Cname> [\u003Cvalue> [\u003Cvalue-pattern>]]\n```\n\n全体的に[git-config(1)](https://git-scm.com/docs/git-config)のユーザーインターフェイスは、サブコマンドを使うのが一般的な、他のより現代的なGitコマンドの動作とは一致していません（例：`git remist`）。このリリースではconfigコマンドで使用するサブコマンドとして`list`、`get`、`set`、`unset`、`rename-section`、`remove-section`、`edit`が導入されましたが、以前の形式の構文も引き続き使用できます。今回の変更はconfigコマンドをよりUIに沿ったものにし、Git内の他のコマンドとの整合性を高めてユーザーエクスペリエンスを向上させることを目的としています。以下は新しいコマンドの使用例です。\n\n```shell\n$ git config list\n$ git config get user.name\n$ git config set user.name \"Sidney Jones\"\n```\n\nこのプロジェクトは[Patrick Steinhardt](https://gitlab.com/pks-gitlab)によって主導されました。\n\n## パフォーマンスのリグレッションへの対応\n\n属性を使用するGit操作は、リポジトリのworktreeにある`.gitattributes`ファイルの読み取りに依存しています。bare Gitリポジトリの場合は定義上worktreeが欠如しているため、問題となります。これを回避するためGitには`attr.tree`という設定があり、SourceTreeを指定して属性を参照できます。\n\nGitリリース2.43.0では、bareリポジトリのGit属性のソースとして`HEAD`のツリーをデフォルトで使用するようになりました。残念なことに、Gitの属性ファイルのスキャンによる負荷の増加は、パフォーマンスに深刻な影響を及ぼす結果となっています。これは`attr.tree`が設定されている場合、属性を検索するたびにSourceTreeを開いて関連する`.gitattributes`ファイルを確認する必要があるためです。リポジトリのSourceTreeが大きく深くなればなるほど、性能のリグレッションも顕著なものとなります。たとえば、linux.gitリポジトリで実行されるベンチマークでは、git-pack-objects(1)完了までに1.68倍の時間がかかっています。これにより、クローンやフェッチを実行する際に速度が低下するおそれがあります。\n\n```\n# Gitバージョン2.43.0では、デフォルトでattr.treeがHEADに完了済みとして設定されています。\nBenchmark 1: git -c attr.tree=HEAD pack-objects --all --stdout \u003C/dev/null >/dev/null\n  Time (mean ± σ):     133.807 s ±  4.866 s    [User: 129.034 s, System: 6.671 s]\n  Range (min … max):   128.447 s … 137.945 s    3 runs\n\n# 2.43.0より前のバージョンのGitでは、属性検索を無効にするためにattr.treeが空のツリーに設定されていました。\nBenchmark 2: git -c attr.tree=4b825dc642cb6eb9a060e54bf8d69288fbee4904 pack-objects --all --stdout \u003C/dev/null >/dev/null\n  Time (mean ± σ):     79.442 s ±  0.822 s    [User: 77.500 s, System: 6.056 s]\n  Range (min … max):   78.583 s … 80.221 s    3 runs\n```\n\n影響を受けた重要なGitコマンドには、前述のように大規模または深いツリーのあるリポジトリで使用された場合の`clone`、`pull`、`fetch`、`diff`などがあります。そのため、パフォーマンスのリグレッションに対処するために、'attr.tree`設定は部分的に元に戻され、デフォルトで`HEAD`に設定されることはなくなりました。詳細についてはこちらのメール[スレッド](https://lore.kernel.org/git/CAKOHPAn1btewYTdLYWpW+fOaXMY+JQZsLCQxUSwoUqnnFN_ohA@mail.gmail.com/)をご覧ください。\n\n## ユニットテストの移行\n\nこれまでGitプロジェクトでのテストは、シェルスクリプトとして実装されたE2Eテストを通じて行われてきました。Gitプロジェクトでは比較的最近、Cで書かれたユニットテストフレームワークが導入されました。この新しいテストフレームワークにより、個々の関数呼び出しレベルで低レベルの実装の詳細をより詳しくテストする機会がもたらされたほか、既存のE2Eテストが補完されます。既存のE2Eテストにはユニットテストにより適しているものがあり、移行に適しています。\n\n本年度も、GitLabは[Google Summer of Code（GSoC）](https://summerofcode.withgoogle.com/)のGitプロジェクトに参加するコントリビューターのメンターを務めています。進行中のGSoCプロジェクトとより広範なGitコミュニティの貢献により、既存のテストの一部がリファクタリングされ、ユニットテストフレームワークに移行されつつあります。前回のリリースサイクルでは、Gitプロジェクトのテストを改善するという目標に向けて複数のコントリビュートがありました。上述のGSoCコントリビューターのプロジェクトの詳細については、[Chandra](https://chand-ra.github.io/)および[Ghanshyam](https://spectre10.github.io/posts/)のブログをご確認ください。\n\n## バンドルURIの修正\n\n通常、クライアントがリモートリポジトリからフェッチする場合、必要なすべてのオブジェクトはリモートサーバーによって計算されたパックファイルで送信されます。こうした計算の一部を回避するため、サーバーは、リモートサーバーとは別に保存され、クライアントが必要とする可能性のある参照とオブジェクトのセットを含む事前構築の「バンドル」のアドバタイズを選択できます。クライアントは、[bundle-uri](https://git-scm.com/docs/bundle-uri)と呼ばれるメカニズムを介して最初にこうしたバンドルを取得できます。\n\n[Xing Xin](https://lore.kernel.org/git/pull.1730.git.1715742069966.gitgitgadget@gmail.com/)さんのコントリビュートにより、いくつかのバンドルをダウンロードしたにもかかわらず、Gitがバンドルがないかのようにリモートからすべてをダウンロードし続けるという問題が特定・修正されました。これは、Gitがダウンロードしたすべてのバンドルを正しく検出できなかったために、リモートから連続したバンドルを取得する必要があったことが理由でした。この問題が修正されたことで、bundle-uriメカニズムを使用するリモートは冗長な作業を実行する必要がなくなったため、パフォーマンスが向上します。\n\n## 補足情報\n\n今回の記事では、最新リリースでGitLabとGitコミュニティが行ったコントリビュートのほんの一部をご紹介しました。Gitプロジェクトの[公式リリースのお知らせ](https://lore.kernel.org/git/xmqqzfq0i0qa.fsf@gitster.g/T/#u)ではさらに詳しい情報をご覧いただけます。また、[以前のGitリリースのブログ記事](https://about.gitlab.com/blog/tags/git/)をチェックしてGitLabチームメンバーによる過去の主なコントリビュートをご覧ください。","open-source",[23,24,25],"git","open source","community",{"slug":27,"featured":28,"template":29},"whats-new-in-git-2-46-0",true,"BlogPost","content:ja-jp:blog:whats-new-in-git-2-46-0.yml","yaml","Whats New In Git 2 46 0","content","ja-jp/blog/whats-new-in-git-2-46-0.yml","ja-jp/blog/whats-new-in-git-2-46-0","yml",{"_path":38,"_dir":39,"_draft":6,"_partial":6,"_locale":7,"data":40,"_id":447,"_type":31,"title":448,"_source":33,"_file":449,"_stem":450,"_extension":36},"/shared/ja-jp/main-navigation","ja-jp",{"logo":41,"freeTrial":46,"sales":51,"login":56,"items":61,"search":391,"minimal":425,"duo":438},{"config":42},{"href":43,"dataGaName":44,"dataGaLocation":45},"/ja-jp/","gitlab logo","header",{"text":47,"config":48},"無料トライアルを開始",{"href":49,"dataGaName":50,"dataGaLocation":45},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":52,"config":53},"お問い合わせ",{"href":54,"dataGaName":55,"dataGaLocation":45},"/ja-jp/sales/","sales",{"text":57,"config":58},"サインイン",{"href":59,"dataGaName":60,"dataGaLocation":45},"https://gitlab.com/users/sign_in/","sign in",[62,106,204,209,313,373],{"text":63,"config":64,"cards":66,"footer":89},"プラットフォーム",{"dataNavLevelOne":65},"platform",[67,73,81],{"title":63,"description":68,"link":69},"最も包括的かつAIで強化されたDevSecOpsプラットフォーム",{"text":70,"config":71},"プラットフォームを詳しく見る",{"href":72,"dataGaName":65,"dataGaLocation":45},"/ja-jp/platform/",{"title":74,"description":75,"link":76},"GitLab Duo（AI）","開発のすべてのステージでAIを活用し、ソフトウェアをより迅速にビルド",{"text":77,"config":78},"GitLab Duoのご紹介",{"href":79,"dataGaName":80,"dataGaLocation":45},"/ja-jp/gitlab-duo/","gitlab duo ai",{"title":82,"description":83,"link":84},"GitLabが選ばれる理由","GitLabが大企業に選ばれる理由10選",{"text":85,"config":86},"詳細はこちら",{"href":87,"dataGaName":88,"dataGaLocation":45},"/ja-jp/why-gitlab/","why gitlab",{"title":90,"items":91},"利用を開始：",[92,97,102],{"text":93,"config":94},"プラットフォームエンジニアリング",{"href":95,"dataGaName":96,"dataGaLocation":45},"/ja-jp/solutions/platform-engineering/","platform engineering",{"text":98,"config":99},"開発者の経験",{"href":100,"dataGaName":101,"dataGaLocation":45},"/ja-jp/developer-experience/","Developer experience",{"text":103,"config":104},"MLOps",{"href":105,"dataGaName":103,"dataGaLocation":45},"/ja-jp/topics/devops/the-role-of-ai-in-devops/",{"text":107,"left":28,"config":108,"link":110,"lists":114,"footer":186},"製品",{"dataNavLevelOne":109},"solutions",{"text":111,"config":112},"すべてのソリューションを表示",{"href":113,"dataGaName":109,"dataGaLocation":45},"/ja-jp/solutions/",[115,141,164],{"title":116,"description":117,"link":118,"items":123},"自動化","CI/CDと自動化でデプロイを加速",{"config":119},{"icon":120,"href":121,"dataGaName":122,"dataGaLocation":45},"AutomatedCodeAlt","/ja-jp/solutions/delivery-automation/","automated software delivery",[124,128,132,137],{"text":125,"config":126},"CI/CD",{"href":127,"dataGaLocation":45,"dataGaName":125},"/ja-jp/solutions/continuous-integration/",{"text":129,"config":130},"AIアシストによる開発",{"href":79,"dataGaLocation":45,"dataGaName":131},"AI assisted development",{"text":133,"config":134},"ソースコード管理",{"href":135,"dataGaLocation":45,"dataGaName":136},"/ja-jp/solutions/source-code-management/","Source Code Management",{"text":138,"config":139},"自動化されたソフトウェアデリバリー",{"href":121,"dataGaLocation":45,"dataGaName":140},"Automated software delivery",{"title":142,"description":143,"link":144,"items":149},"セキュリティ","セキュリティを損なうことなくコードをより迅速に完成",{"config":145},{"href":146,"dataGaName":147,"dataGaLocation":45,"icon":148},"/ja-jp/solutions/security-compliance/","security and compliance","ShieldCheckLight",[150,154,159],{"text":151,"config":152},"セキュリティとコンプライアンス",{"href":146,"dataGaLocation":45,"dataGaName":153},"Security & Compliance",{"text":155,"config":156},"ソフトウェアサプライチェーンの安全性",{"href":157,"dataGaLocation":45,"dataGaName":158},"/ja-jp/solutions/supply-chain/","Software supply chain security",{"text":160,"config":161},"コンプライアンスとガバナンス",{"href":162,"dataGaLocation":45,"dataGaName":163},"/ja-jp/solutions/continuous-software-compliance/","Compliance and governance",{"title":165,"link":166,"items":171},"測定",{"config":167},{"icon":168,"href":169,"dataGaName":170,"dataGaLocation":45},"DigitalTransformation","/ja-jp/solutions/visibility-measurement/","visibility and measurement",[172,176,181],{"text":173,"config":174},"可視性と測定",{"href":169,"dataGaLocation":45,"dataGaName":175},"Visibility and Measurement",{"text":177,"config":178},"バリューストリーム管理",{"href":179,"dataGaLocation":45,"dataGaName":180},"/ja-jp/solutions/value-stream-management/","Value Stream Management",{"text":182,"config":183},"分析とインサイト",{"href":184,"dataGaLocation":45,"dataGaName":185},"/ja-jp/solutions/analytics-and-insights/","Analytics and insights",{"title":187,"items":188},"GitLabが活躍する場所",[189,194,199],{"text":190,"config":191},"Enterprise",{"href":192,"dataGaLocation":45,"dataGaName":193},"/ja-jp/enterprise/","enterprise",{"text":195,"config":196},"スモールビジネス",{"href":197,"dataGaLocation":45,"dataGaName":198},"/ja-jp/small-business/","small business",{"text":200,"config":201},"公共機関",{"href":202,"dataGaLocation":45,"dataGaName":203},"/ja-jp/solutions/public-sector/","public sector",{"text":205,"config":206},"価格",{"href":207,"dataGaName":208,"dataGaLocation":45,"dataNavLevelOne":208},"/ja-jp/pricing/","pricing",{"text":210,"config":211,"link":213,"lists":217,"feature":300},"関連リソース",{"dataNavLevelOne":212},"resources",{"text":214,"config":215},"すべてのリソースを表示",{"href":216,"dataGaName":212,"dataGaLocation":45},"/ja-jp/resources/",[218,251,273],{"title":219,"items":220},"はじめに",[221,226,231,236,241,246],{"text":222,"config":223},"インストール",{"href":224,"dataGaName":225,"dataGaLocation":45},"/ja-jp/install/","install",{"text":227,"config":228},"クイックスタートガイド",{"href":229,"dataGaName":230,"dataGaLocation":45},"/ja-jp/get-started/","quick setup checklists",{"text":232,"config":233},"学ぶ",{"href":234,"dataGaLocation":45,"dataGaName":235},"https://university.gitlab.com/","learn",{"text":237,"config":238},"製品ドキュメント",{"href":239,"dataGaName":240,"dataGaLocation":45},"https://docs.gitlab.com/","product documentation",{"text":242,"config":243},"ベストプラクティスビデオ",{"href":244,"dataGaName":245,"dataGaLocation":45},"/ja-jp/getting-started-videos/","best practice videos",{"text":247,"config":248},"インテグレーション",{"href":249,"dataGaName":250,"dataGaLocation":45},"/ja-jp/integrations/","integrations",{"title":252,"items":253},"検索する",[254,259,263,268],{"text":255,"config":256},"お客様成功事例",{"href":257,"dataGaName":258,"dataGaLocation":45},"/ja-jp/customers/","customer success stories",{"text":260,"config":261},"ブログ",{"href":262,"dataGaName":5,"dataGaLocation":45},"/ja-jp/blog/",{"text":264,"config":265},"リモート",{"href":266,"dataGaName":267,"dataGaLocation":45},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"text":269,"config":270},"TeamOps",{"href":271,"dataGaName":272,"dataGaLocation":45},"/ja-jp/teamops/","teamops",{"title":274,"items":275},"つなげる",[276,281,285,290,295],{"text":277,"config":278},"GitLabサービス",{"href":279,"dataGaName":280,"dataGaLocation":45},"/ja-jp/services/","services",{"text":282,"config":283},"コミュニティ",{"href":284,"dataGaName":25,"dataGaLocation":45},"/community/",{"text":286,"config":287},"フォーラム",{"href":288,"dataGaName":289,"dataGaLocation":45},"https://forum.gitlab.com/","forum",{"text":291,"config":292},"イベント",{"href":293,"dataGaName":294,"dataGaLocation":45},"/events/","events",{"text":296,"config":297},"パートナー",{"href":298,"dataGaName":299,"dataGaLocation":45},"/ja-jp/partners/","partners",{"backgroundColor":301,"textColor":302,"text":303,"image":304,"link":308},"#2f2a6b","#fff","ソフトウェア開発の未来への洞察",{"altText":305,"config":306},"ソースプロモカード",{"src":307},"/images/navigation/the-source-promo-card.svg",{"text":309,"config":310},"最新情報を読む",{"href":311,"dataGaName":312,"dataGaLocation":45},"/ja-jp/the-source/","the source",{"text":314,"config":315,"lists":317},"Company",{"dataNavLevelOne":316},"company",[318],{"items":319},[320,325,331,333,338,343,348,353,358,363,368],{"text":321,"config":322},"GitLabについて",{"href":323,"dataGaName":324,"dataGaLocation":45},"/ja-jp/company/","about",{"text":326,"config":327,"footerGa":330},"採用情報",{"href":328,"dataGaName":329,"dataGaLocation":45},"/jobs/","jobs",{"dataGaName":329},{"text":291,"config":332},{"href":293,"dataGaName":294,"dataGaLocation":45},{"text":334,"config":335},"経営陣",{"href":336,"dataGaName":337,"dataGaLocation":45},"/company/team/e-group/","leadership",{"text":339,"config":340},"チーム",{"href":341,"dataGaName":342,"dataGaLocation":45},"/company/team/","team",{"text":344,"config":345},"ハンドブック",{"href":346,"dataGaName":347,"dataGaLocation":45},"https://handbook.gitlab.com/","handbook",{"text":349,"config":350},"投資家向け情報",{"href":351,"dataGaName":352,"dataGaLocation":45},"https://ir.gitlab.com/","investor relations",{"text":354,"config":355},"トラストセンター",{"href":356,"dataGaName":357,"dataGaLocation":45},"/ja-jp/security/","trust center",{"text":359,"config":360},"AI Transparency Center",{"href":361,"dataGaName":362,"dataGaLocation":45},"/ja-jp/ai-transparency-center/","ai transparency center",{"text":364,"config":365},"ニュースレター",{"href":366,"dataGaName":367,"dataGaLocation":45},"/company/contact/","newsletter",{"text":369,"config":370},"プレス",{"href":371,"dataGaName":372,"dataGaLocation":45},"/press/","press",{"text":52,"config":374,"lists":375},{"dataNavLevelOne":316},[376],{"items":377},[378,381,386],{"text":52,"config":379},{"href":54,"dataGaName":380,"dataGaLocation":45},"talk to sales",{"text":382,"config":383},"サポートを受ける",{"href":384,"dataGaName":385,"dataGaLocation":45},"/support/","get help",{"text":387,"config":388},"カスタマーポータル",{"href":389,"dataGaName":390,"dataGaLocation":45},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":392,"login":393,"suggestions":400},"閉じる",{"text":394,"link":395},"リポジトリとプロジェクトを検索するには、次にログインします",{"text":396,"config":397},"GitLab.com",{"href":59,"dataGaName":398,"dataGaLocation":399},"search login","search",{"text":401,"default":402},"提案",[403,406,411,413,417,421],{"text":74,"config":404},{"href":79,"dataGaName":405,"dataGaLocation":399},"GitLab Duo (AI)",{"text":407,"config":408},"コード提案（AI）",{"href":409,"dataGaName":410,"dataGaLocation":399},"/ja-jp/solutions/code-suggestions/","Code Suggestions (AI)",{"text":125,"config":412},{"href":127,"dataGaName":125,"dataGaLocation":399},{"text":414,"config":415},"GitLab on AWS",{"href":416,"dataGaName":414,"dataGaLocation":399},"/ja-jp/partners/technology-partners/aws/",{"text":418,"config":419},"GitLab on Google Cloud",{"href":420,"dataGaName":418,"dataGaLocation":399},"/ja-jp/partners/technology-partners/google-cloud-platform/",{"text":422,"config":423},"GitLabを選ぶ理由",{"href":87,"dataGaName":424,"dataGaLocation":399},"Why GitLab?",{"freeTrial":426,"mobileIcon":430,"desktopIcon":435},{"text":47,"config":427},{"href":428,"dataGaName":50,"dataGaLocation":429},"https://gitlab.com/-/trials/new/","nav",{"altText":431,"config":432},"GitLabアイコン",{"src":433,"dataGaName":434,"dataGaLocation":429},"/images/brand/gitlab-logo-tanuki.svg","gitlab icon",{"altText":431,"config":436},{"src":437,"dataGaName":434,"dataGaLocation":429},"/images/brand/gitlab-logo-type.svg",{"freeTrial":439,"mobileIcon":443,"desktopIcon":445},{"text":440,"config":441},"GitLab Duoの詳細について",{"href":79,"dataGaName":442,"dataGaLocation":429},"gitlab duo",{"altText":431,"config":444},{"src":433,"dataGaName":434,"dataGaLocation":429},{"altText":431,"config":446},{"src":437,"dataGaName":434,"dataGaLocation":429},"content:shared:ja-jp:main-navigation.yml","Main Navigation","shared/ja-jp/main-navigation.yml","shared/ja-jp/main-navigation",{"_path":452,"_dir":39,"_draft":6,"_partial":6,"_locale":7,"title":453,"button":454,"config":458,"_id":460,"_type":31,"_source":33,"_file":461,"_stem":462,"_extension":36},"/shared/ja-jp/banner","GitLab Duo Agent Platformがパブリックベータ版で利用可能になりました！",{"text":85,"config":455},{"href":456,"dataGaName":457,"dataGaLocation":45},"/ja-jp/gitlab-duo/agent-platform/","duo banner",{"layout":459},"release","content:shared:ja-jp:banner.yml","shared/ja-jp/banner.yml","shared/ja-jp/banner",{"_path":464,"_dir":39,"_draft":6,"_partial":6,"_locale":7,"data":465,"_id":669,"_type":31,"title":670,"_source":33,"_file":671,"_stem":672,"_extension":36},"/shared/ja-jp/main-footer",{"text":466,"source":467,"edit":473,"contribute":478,"config":483,"items":488,"minimal":661},"GitはSoftware Freedom Conservancyの商標です。当社は「GitLab」をライセンスに基づいて使用しています",{"text":468,"config":469},"ページのソースを表示",{"href":470,"dataGaName":471,"dataGaLocation":472},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":474,"config":475},"このページを編集",{"href":476,"dataGaName":477,"dataGaLocation":472},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":479,"config":480},"ご協力をお願いします",{"href":481,"dataGaName":482,"dataGaLocation":472},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":484,"facebook":485,"youtube":486,"linkedin":487},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[489,512,566,599,633],{"title":63,"links":490,"subMenu":495},[491],{"text":492,"config":493},"DevSecOpsプラットフォーム",{"href":72,"dataGaName":494,"dataGaLocation":472},"devsecops platform",[496],{"title":205,"links":497},[498,502,507],{"text":499,"config":500},"プランの表示",{"href":207,"dataGaName":501,"dataGaLocation":472},"view plans",{"text":503,"config":504},"Premiumを選ぶ理由",{"href":505,"dataGaName":506,"dataGaLocation":472},"/ja-jp/pricing/premium/","why premium",{"text":508,"config":509},"Ultimateを選ぶ理由",{"href":510,"dataGaName":511,"dataGaLocation":472},"/ja-jp/pricing/ultimate/","why ultimate",{"title":513,"links":514},"ソリューション",[515,520,523,525,530,535,539,542,545,550,552,554,556,561],{"text":516,"config":517},"デジタルトランスフォーメーション",{"href":518,"dataGaName":519,"dataGaLocation":472},"/ja-jp/topics/digital-transformation/","digital transformation",{"text":151,"config":521},{"href":146,"dataGaName":522,"dataGaLocation":472},"security & compliance",{"text":138,"config":524},{"href":121,"dataGaName":122,"dataGaLocation":472},{"text":526,"config":527},"アジャイル開発",{"href":528,"dataGaName":529,"dataGaLocation":472},"/ja-jp/solutions/agile-delivery/","agile delivery",{"text":531,"config":532},"クラウドトランスフォーメーション",{"href":533,"dataGaName":534,"dataGaLocation":472},"/ja-jp/topics/cloud-native/","cloud transformation",{"text":536,"config":537},"SCM",{"href":135,"dataGaName":538,"dataGaLocation":472},"source code management",{"text":125,"config":540},{"href":127,"dataGaName":541,"dataGaLocation":472},"continuous integration & delivery",{"text":177,"config":543},{"href":179,"dataGaName":544,"dataGaLocation":472},"value stream management",{"text":546,"config":547},"GitOps",{"href":548,"dataGaName":549,"dataGaLocation":472},"/ja-jp/solutions/gitops/","gitops",{"text":190,"config":551},{"href":192,"dataGaName":193,"dataGaLocation":472},{"text":195,"config":553},{"href":197,"dataGaName":198,"dataGaLocation":472},{"text":200,"config":555},{"href":202,"dataGaName":203,"dataGaLocation":472},{"text":557,"config":558},"教育",{"href":559,"dataGaName":560,"dataGaLocation":472},"/ja-jp/solutions/education/","education",{"text":562,"config":563},"金融サービス",{"href":564,"dataGaName":565,"dataGaLocation":472},"/ja-jp/solutions/finance/","financial services",{"title":210,"links":567},[568,570,572,574,577,579,583,585,587,589,591,593,595,597],{"text":222,"config":569},{"href":224,"dataGaName":225,"dataGaLocation":472},{"text":227,"config":571},{"href":229,"dataGaName":230,"dataGaLocation":472},{"text":232,"config":573},{"href":234,"dataGaName":235,"dataGaLocation":472},{"text":237,"config":575},{"href":239,"dataGaName":576,"dataGaLocation":472},"docs",{"text":260,"config":578},{"href":262,"dataGaName":5},{"text":580,"config":581},"お客様の成功事例",{"href":582,"dataGaLocation":472},"/customers/",{"text":255,"config":584},{"href":257,"dataGaName":258,"dataGaLocation":472},{"text":264,"config":586},{"href":266,"dataGaName":267,"dataGaLocation":472},{"text":277,"config":588},{"href":279,"dataGaName":280,"dataGaLocation":472},{"text":269,"config":590},{"href":271,"dataGaName":272,"dataGaLocation":472},{"text":282,"config":592},{"href":284,"dataGaName":25,"dataGaLocation":472},{"text":286,"config":594},{"href":288,"dataGaName":289,"dataGaLocation":472},{"text":291,"config":596},{"href":293,"dataGaName":294,"dataGaLocation":472},{"text":296,"config":598},{"href":298,"dataGaName":299,"dataGaLocation":472},{"title":314,"links":600},[601,603,605,607,609,611,613,617,622,624,626,628],{"text":321,"config":602},{"href":323,"dataGaName":316,"dataGaLocation":472},{"text":326,"config":604},{"href":328,"dataGaName":329,"dataGaLocation":472},{"text":334,"config":606},{"href":336,"dataGaName":337,"dataGaLocation":472},{"text":339,"config":608},{"href":341,"dataGaName":342,"dataGaLocation":472},{"text":344,"config":610},{"href":346,"dataGaName":347,"dataGaLocation":472},{"text":349,"config":612},{"href":351,"dataGaName":352,"dataGaLocation":472},{"text":614,"config":615},"Sustainability",{"href":616,"dataGaName":614,"dataGaLocation":472},"/sustainability/",{"text":618,"config":619},"ダイバーシティ、インクルージョン、ビロンギング（DIB）",{"href":620,"dataGaName":621,"dataGaLocation":472},"/ja-jp/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":354,"config":623},{"href":356,"dataGaName":357,"dataGaLocation":472},{"text":364,"config":625},{"href":366,"dataGaName":367,"dataGaLocation":472},{"text":369,"config":627},{"href":371,"dataGaName":372,"dataGaLocation":472},{"text":629,"config":630},"現代奴隷制の透明性に関する声明",{"href":631,"dataGaName":632,"dataGaLocation":472},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":52,"links":634},[635,637,639,641,646,651,656],{"text":52,"config":636},{"href":54,"dataGaName":55,"dataGaLocation":472},{"text":382,"config":638},{"href":384,"dataGaName":385,"dataGaLocation":472},{"text":387,"config":640},{"href":389,"dataGaName":390,"dataGaLocation":472},{"text":642,"config":643},"ステータス",{"href":644,"dataGaName":645,"dataGaLocation":472},"https://status.gitlab.com/","status",{"text":647,"config":648},"利用規約",{"href":649,"dataGaName":650,"dataGaLocation":472},"/terms/","terms of use",{"text":652,"config":653},"プライバシーに関する声明",{"href":654,"dataGaName":655,"dataGaLocation":472},"/ja-jp/privacy/","privacy statement",{"text":657,"config":658},"Cookieの設定",{"dataGaName":659,"dataGaLocation":472,"id":660,"isOneTrustButton":28},"cookie preferences","ot-sdk-btn",{"items":662},[663,665,667],{"text":647,"config":664},{"href":649,"dataGaName":650,"dataGaLocation":472},{"text":652,"config":666},{"href":654,"dataGaName":655,"dataGaLocation":472},{"text":657,"config":668},{"dataGaName":659,"dataGaLocation":472,"id":660,"isOneTrustButton":28},"content:shared:ja-jp:main-footer.yml","Main Footer","shared/ja-jp/main-footer.yml","shared/ja-jp/main-footer",[674],{"_path":675,"_dir":676,"_draft":6,"_partial":6,"_locale":7,"content":677,"config":681,"_id":683,"_type":31,"title":18,"_source":33,"_file":684,"_stem":685,"_extension":36},"/en-us/blog/authors/justin-tobler","authors",{"name":18,"config":678},{"headshot":679,"ctfId":680},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664737/Blog/Author%20Headshots/james_tobler_headshot.png","5pnOIbNI1Sc5IFnReNHNtv",{"template":682},"BlogAuthor","content:en-us:blog:authors:justin-tobler.yml","en-us/blog/authors/justin-tobler.yml","en-us/blog/authors/justin-tobler",{"_path":687,"_dir":39,"_draft":6,"_partial":6,"_locale":7,"header":688,"eyebrow":689,"blurb":690,"button":691,"secondaryButton":695,"_id":697,"_type":31,"title":698,"_source":33,"_file":699,"_stem":700,"_extension":36},"/shared/ja-jp/next-steps","より優れたソフトウェアをより速く提供","フォーチュン100企業の50%以上がGitLabを信頼","インテリジェントなDevSecOpsプラットフォームで\n\n\nチームの可能性を広げましょう。\n",{"text":47,"config":692},{"href":693,"dataGaName":50,"dataGaLocation":694},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":52,"config":696},{"href":54,"dataGaName":55,"dataGaLocation":694},"content:shared:ja-jp:next-steps.yml","Next Steps","shared/ja-jp/next-steps.yml","shared/ja-jp/next-steps",1753207468199]