[{"data":1,"prerenderedAt":1060},["ShallowReactive",2],{"/ja-jp/blog/ai-agents-for-migrating-rate-limiting-system":3,"navigation-ja-jp":280,"banner-ja-jp":709,"footer-ja-jp":717,"blog-post-authors-ja-jp-Sam Wiskow":959,"blog-related-posts-ja-jp-ai-agents-for-migrating-rate-limiting-system":974,"blog-promotions-ja-jp":998,"next-steps-ja-jp":1051},{"id":4,"title":5,"authors":6,"body":8,"category":259,"date":260,"description":261,"extension":262,"externalUrl":263,"faq":263,"featured":264,"heroImage":265,"meta":266,"navigation":264,"path":267,"seo":268,"slug":271,"stem":272,"tags":273,"template":277,"updatedDate":278,"__hash__":279},"blogPosts/ja-jp/blog/ai-agents-for-migrating-rate-limiting-system.md","AIエージェントでGitLabのレート制限システムを移行した方法",[7],"Sam Wiskow",{"type":9,"value":10,"toc":250},"minimark",[11,15,25,29,41,50,53,59,66,69,72,86,96,99,102,105,108,111,114,117,120,129,132,135,138,143,146,157,160,167,170,175,180,186,189,195,198,201,206,209,212,215,222,229,247],[12,13,14],"p",{},"ここ数週間、GitLabの小さなチームがある実験に取り組んでいました。レガシーなレート制限システムの一部を、安全性を犠牲にせずにAIエージェントで移行できるのか、という実験です。",[12,16,17,18,24],{},"結論を先に言うと、答えはイエスです。AIエージェントは確かに機能します。同時に、普段の仕事の進め方にある弱点を浮き彫りにすることもあります。今回の取り組みでは、エージェントそのものよりも、チーム体制、レビューのループ、そしてオブザーバビリティの方が重要でした。以下では、GitLabと",[19,20,23],"a",{"href":21,"rel":22},"https://about.gitlab.com/ja-jp/gitlab-duo-agent-platform/",[],"GitLab Duo Agent Platform","などのツールを使ってどのように作業を進めたか、何がうまくいったか、ループとは何でどこがうまく機能しなかったか、そして同じことを再現する方法を紹介します。",[26,27,28],"h2",{"id":28},"背景",[12,30,31,32,36,37,40],{},"GitLabでは長年、本番環境に2つのレート制限の仕組みが存在していました。121個のキーを持つアプリケーションレベルの",[33,34,35],"code",{},"Gitlab::ApplicationRateLimiter","と、それとは別のRackレベルのシステムです。今回の目標は、これらを",[33,38,39],{},"labkit-ruby","内の単一の実装に統合することでした。可観測性があり、テスト可能で、どこでも同じ方法で運用できる状態にすることです。モノリスへのすべてのリクエストがこの仕組みを通るため、障害の発生パターンは可視化され、かつ元に戻せる必要があります。",[12,42,43,44,49],{},"このプロジェクトのチーム(ポッド)は、GitLabのメンバー3名と数体の",[19,45,48],{"href":46,"rel":47},"https://about.gitlab.com/ja-jp/topics/agentic-ai/",[],"AIエージェント","で構成されていました。API PlatformチームのスタッフバックエンドエンジニアであるMax Woolfがモノリス側を担当し、ロールアウトの大部分を実行しました。Scalabilityチームで働くBob Van Landuytはgem(labkit-ruby)を担当し、アーキテクチャの設計を主導しました。私はスコープ管理を担い、初期のlabkitコードの一部を書きました。他に数名のエンジニアが加わり、コンテキストを吸収しながらコードとレビューに貢献してくれました。",[12,51,52],{},"エージェントはコンテキストを読み取り、仕様書のドラフトを作成し、範囲を限定した変更を実装し、テストを書き、マージリクエストの事前レビューを行いました。GitLab Duo Code Reviewが、マージリクエストのコード品質を高く保つ役割を担いました。一方、スコープ、アーキテクチャ、ロールアウト、そして最終レビューは人間が担当しました。",[12,54,55,56,58],{},"私たちが実践した厳格なループは次の通りです。エピックを読む→仕様書を書く→仕様書に対して敵対的レビューを行う→ブロッカーが解消してから初めて実装する→明確な根拠をもって検証する→マージリクエストに対して敵対的レビューを行う→人間によるレビューへエスカレーションする→マージする。敵対的レビューは、人間が介入するまでの解決ラウンドを2回までに制限していました。プロジェクト全体では、14件の仕様書と30件を超えるマージリクエストを",[33,57,39],{},"に投入しました。実際には、このループの厳密さは担当者によって多少異なりました。Bobは、共有可能な形にする前に、仕様書とレビューのサイクルを何度も一人で回すことがよくありました。",[12,60,61],{},[62,63],"img",{"alt":64,"src":65},"ループの図解","https://res.cloudinary.com/about-gitlab-com/image/upload/v1783518190/iejv72y7iz9i9rczcfbr.png",[12,67,68],{},"このループは、聞くとかなり手間がかかるように見えるかもしれません。しかし、レガシーコードに対してであれば、私はこのループの実行をエージェントに任せて信頼できます。",[26,70,71],{"id":71},"うまくいったこと",[12,73,74,75,78,79,78,82,85],{},"コホート1は、最も緊張感のあるテストでした。",[33,76,77],{},"pipelines_create","、",[33,80,81],{},"notes_create",[33,83,84],{},"user_sign_in","を含む、トラフィックの多い5つのキーが対象です。2026年5月4日に1%→10%→50%とロールアウトし、2026年5月5日に100%まで展開しました。その日のBobの実況コメントは、私たちの運用モデルを端的に表しています。",[12,87,88],{},[89,90,91,92,95],"em",{},"「ロールアウトはすべて完了しました。これまでのところ、",[33,93,94],{},"applimiter","とlabkit実装のレート制限はすべて一致しています。ただ、トラフィックがあまり多くないだけかもしれません。制限を超えるトラフィックを意図的に発生させてみようと思います。」",[12,97,98],{},"これこそが良いロールアウトの姿であり、エージェントに任せるべきではない種類の判断です。新システムが旧システムと一致していること自体は成功を意味せず、単に何も引っかからなかっただけという可能性もあります。",[12,100,101],{},"コホート2では、モノリス内83箇所、Enterprise Edition(EE)内12箇所を含む、次の95箇所の呼び出しサイトを、単一のフィーチャーフラグのペアに集約しました。この統合を行わなければ、ロールアウトには95個のフラグを個別に切り替え、約190件のYAML編集が必要になっていたはずです。エージェントは、コードベース全体にわたるこの種の機械的な展開作業を非常に得意としています。人間はこれが非常に苦手です。",[26,103,104],{"id":104},"ループが機能しなかった点",[12,106,107],{},"このループには、いくつかの見落としがありました。",[12,109,110],{},"1つはシャドーモードでの見落としです。コホート2は数日間シャドーモードで稼働し、旧実装と一致していました。観察モードから強制モードへの切り替えは、何も起きないはずでした。しかし、小さな不具合が発生しました。",[12,112,113],{},"新しいアダプターは、未認証の1つのコードパスで識別子を静かに欠落させていました。3つのString値が2つのプリミティブなスロットに詰め込まれ、誤った値が識別子を上書きしてしまったのです。ごく一部のユーザーが、短時間だけ一般的な失敗エラーを目にすることになりました。",[12,115,116],{},"シャドー比較は、実際にはこのキーの差異をフラグとして検出していました。しかし、構造的な衝突と通常の不一致を区別するラベル体系を用意していなかったため、100%まで展開する間、その信号はダッシュボード上に埋もれたままになっていました。",[12,118,119],{},"私たちはすぐに強制モードのフラグをオフにしました。Bobは、この構造的な問題を一文で言い当てました。",[12,121,122],{},[89,123,124,125,128],{},"「この混乱を片付けたら、",[33,126,127],{},"ApplicationLimiter","を呼び出す際は名前付きの特性だけを使うようにして、配列スコープはもう使わないようにすべきだと思う。」",[12,130,131],{},"その場しのぎの修正は2日後にリリースされました。構造的なクリーンアップは、次のフェーズの対応リストに入っています。",[12,133,134],{},"この件は、仕様書作成、敵対的レビュー、実装、GitLab Duo Code Review、段階的ロールアウトというループのすべてのステップを通過していました。つまり、ループはこの問題を検出していたとも言えるし、検出できていなかったとも言えます。ここから学ぶべきことは「エージェントは危険だ」ということではありません。私たちにはオブザーバビリティがあったものの、重要な障害パターンを見分けられるオブザーバビリティではなかった、ということです。",[12,136,137],{},"5月15日、Maxはmasterに対して監査を実行し、Slackで私に連絡し、コホート6を新たに立ち上げました。",[12,139,140],{},[89,141,142],{},"「移行にコホート6を追加しました。あちこちで見落とされていた細かい項目たちです(Bob、あなたのことじゃないよ)」",[12,144,145],{},"当初の計画では5つのコホートを予定していましたが、実際には6つ必要でした。",[12,147,148,149,152,153,156],{},"数日後、診断結果が判明しました。ClaudeがEE限定のレート制限をいくつか見落としていたのです。",[33,150,151],{},"notification_emails","、いくつかのEEレジストリエントリ、3つのWebhookキー、3つのサブ秒単位の",[33,154,155],{},"partner_*","キー、そして一部の孤立したアダプター行です。121個中17個のキーが、これまでのコホートから漏れていました。それぞれには、どのコホートにもきれいに当てはまらなかった理由がありましたが、見えなくなっていてよい理由はどれもありませんでした。",[12,158,159],{},"私たちは、エージェントにも自分たち自身にも、キーの全リストに対する進捗をカウントし続けるよう求めていませんでした。",[12,161,162,163,166],{},"もう1つの見落としはRedisでした。",[33,164,165],{},"redis-cluster-ratelimiting","サービスは4シャード構成のクラスターとして稼働しています。当初のBobの見立ては正直なものでした。「余裕はあるが、利用率を完全に2倍にできるほどではない」。",[12,168,169],{},"5月初旬、以前遭遇した制約が再び現れました。",[12,171,172],{},[89,173,174],{},"Bob:「以前遭遇したこのボトルネックは、このプロジェクトで新たに発生したものではなく、実際に存在するボトルネックだ。つまり、これを回避するにはインフラの変更が必要になる。」",[12,176,177],{},[89,178,179],{},"Max:「うわ、まずいな。」",[12,181,182,185],{},[33,183,184],{},"maxclients","を段階的に引き上げていきましたが、接続数を増やすとプライマリのCPUが飽和状態に近づくことが明らかになったため、10万ではなく7万5千接続で止めました。各シャードに1台のプライマリ、コマンド実行用のコアも1つだけです。スケールアップで対処できる余地はありませんでした。",[26,187,188],{"id":188},"エージェントが実際に変えたもの",[12,190,191],{},[62,192],{"alt":193,"src":194},"エージェントによってボトルネックが移動したことを示す図","https://res.cloudinary.com/about-gitlab-com/image/upload/v1783518190/bzyemaewofxyq9ikxxcb.png",[12,196,197],{},"エージェントは、ボトルネックの位置を移動させました。エージェントが仕様書を作成し、厳格なループの中で実装を行うことで、コード生成はもはや遅い部分ではなくなりました。代わりに、レビューの処理能力、ロールアウトの判断、そして担当者の注意力が遅い部分になりました。これはずっと望ましい種類の課題ですが、今のところはやはり人間のリソースを消費しています。",[12,199,200],{},"この取り組みは、常に快適だったわけではありません。プロジェクトの中盤、Maxはこう書いています。",[12,202,203],{},[89,204,205],{},"「良い面も悪い面もある。エージェントとやり取りしていて堂々巡りになってしまった。『自分でやった方が早かった』と感じる瞬間があって、正直いらいらした。」",[12,207,208],{},"その数週間前、Maxはこのプロジェクトを「GitLabでの中でも間違いなく学習曲線が急な経験の1つ」と評していました。エージェントと協働するのはスキルであり、そのスキルを身につけるための代償として、一人で作業した方が進んだであろう日々が発生します。",[12,210,211],{},"もう1つの変化は、「完了」の意味について正直になることでした。コホート1の終わりにBobが残したメモ(「レート制限ごとにフィーチャーフラグを用意するのはやり過ぎだ、次回以降の移行ではこのやり方はやめるべきだ」)は、エージェントには任せられない種類の判断の小さな一例です。エージェントは、頼めば95個のフラグ切り替えを喜んで生成します。それをやらないと決めるのは、人間の判断です。",[26,213,214],{"id":214},"現在の状況",[12,216,217,218,221],{},"6月中旬までに、6つのコホートすべてが100%まで展開されました。",[33,219,220],{},"ApplicationRateLimiter","内の121個のキーはすべて新しいフレームワークを経由するようになり、監査によってレガシーパスの利用はほぼゼロまで減ったことが確認されました。また、今後追加されるレート制限が静かにこの仕組みをバイパスできないよう、ガードレールも追加しました。",[12,223,224,225,228],{},"これでアプリケーションレベルの移行は完了です。次は、1日あたり約40億件のリクエストを処理する、より大規模な層である",[33,226,227],{},"RackAttack","です。シャドー&強制モードのミドルウェアは現在開発中で、最初のマージリクエストは承認され、マージ待ちの状態です。",[12,230,231,232,235,236,241,242],{},"同じことを試したい場合は、",[19,233,23],{"href":21,"rel":234},[],"で仕様書の作成を支援し、Duo Developerでイシューの実装を進め、",[19,237,240],{"href":238,"rel":239},"https://docs.gitlab.com/ja-jp/user/gitlab_duo/code_review/",[],"Duo Code Review","でMRのマージを支援してもらうことができます。ですが、それは簡単な部分です。本当に重要なのは、あなたのチームにBobのような人がいるかどうかです。50%展開する前に、あえて1%の段階で新システムを壊そうとする人です。そして、Maxのような人がいるかどうかも重要です。周囲が「移行は完了した」と思っている時に、あえて監査を実行する人です。ワークフローも重要ですが、人はそれ以上に重要です。自分たちのレガシーコードでこれを試してみたい方は、",[19,243,246],{"href":244,"rel":245},"https://about.gitlab.com/ja-jp/free-trial/",[],"今すぐ試してみてください。",[12,248,249],{},"AIエージェントは機能します。そして、エージェントとの協働の仕方を変えることも、同様に機能するのです。",{"title":251,"searchDepth":252,"depth":252,"links":253},"",2,[254,255,256,257,258],{"id":28,"depth":252,"text":28},{"id":71,"depth":252,"text":71},{"id":104,"depth":252,"text":104},{"id":188,"depth":252,"text":188},{"id":214,"depth":252,"text":214},"ai","2026-07-08","GitLabの3人チームが、GitLab Duo Agent PlatformをはじめとするAIツールを活用し、レガシーなレート制限システムを安全性を損なわずに移行した事例を紹介します。うまくいった点や、そこから得た教訓についても詳しく解説します。","md",null,true,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773075582/yiosxfhwk8rfkulrtchv.png",{},"/ja-jp/blog/ai-agents-for-migrating-rate-limiting-system",{"config":269,"title":5,"description":261},{"noIndex":270},false,"ai-agents-for-migrating-rate-limiting-system","ja-jp/blog/ai-agents-for-migrating-rate-limiting-system",[274,275,276],"AI","features","tutorial","BlogPost","2026-07-09","rPEpyrntUaZnH5NRM5xUh1mrrc5crc6aUrGc-HGpZZI",{"logo":281,"freeTrial":286,"sales":291,"login":296,"items":301,"search":629,"minimal":662,"duo":679,"switchNav":688,"pricingDeployment":699},{"config":282},{"href":283,"dataGaName":284,"dataGaLocation":285},"/ja-jp/","gitlab logo","header",{"text":287,"config":288},"無料トライアルを開始",{"href":289,"dataGaName":290,"dataGaLocation":285},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp&glm_content=default-saas-trial/","free trial",{"text":292,"config":293},"デモをリクエスト",{"href":294,"dataGaName":295,"dataGaLocation":285},"/ja-jp/sales/?contact-topic=request-demo","sales",{"text":297,"config":298},"サインイン",{"href":299,"dataGaName":300,"dataGaLocation":285},"https://gitlab.com/users/sign_in/","sign in",[302,330,432,437,551,607],{"text":303,"config":304,"menu":306},"プラットフォーム",{"dataNavLevelOne":305},"platform",{"type":307,"columns":308},"cards",[309,315,322],{"title":303,"description":310,"link":311},"DevSecOpsに特化したインテリジェントオーケストレーションプラットフォーム",{"text":312,"config":313},"プラットフォームの詳細はこちら",{"href":314,"dataGaName":305,"dataGaLocation":285},"/ja-jp/platform/",{"title":23,"description":316,"link":317},"ソフトウェアライフサイクル全体を支えるエージェント型AI",{"text":318,"config":319},"GitLab Duoのご紹介",{"href":320,"dataGaName":321,"dataGaLocation":285},"/ja-jp/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":323,"description":324,"link":325},"GitLabが選ばれる理由","エンタープライズがGitLabを選ぶ主な理由をご覧ください",{"text":326,"config":327},"詳細はこちら",{"href":328,"dataGaName":329,"dataGaLocation":285},"/ja-jp/why-gitlab/","why gitlab",{"text":331,"left":264,"config":332,"menu":334},"製品",{"dataNavLevelOne":333},"solutions",{"type":335,"link":336,"columns":340,"feature":411},"lists",{"text":337,"config":338},"すべてのソリューションを表示",{"href":339,"dataGaName":333,"dataGaLocation":285},"/ja-jp/solutions/",[341,366,389],{"title":342,"description":343,"link":344,"items":349},"自動化","CI/CDと自動化でデプロイを加速",{"config":345},{"icon":346,"href":347,"dataGaName":348,"dataGaLocation":285},"AutomatedCodeAlt","/ja-jp/solutions/delivery-automation/","automated software delivery",[350,354,357,362],{"text":351,"config":352},"CI/CD",{"href":353,"dataGaLocation":285,"dataGaName":351},"/ja-jp/solutions/continuous-integration/",{"text":23,"config":355},{"href":320,"dataGaLocation":285,"dataGaName":356},"gitlab duo agent platform - product menu",{"text":358,"config":359},"ソースコード管理",{"href":360,"dataGaLocation":285,"dataGaName":361},"/ja-jp/solutions/source-code-management/","Source Code Management",{"text":363,"config":364},"自動化されたソフトウェアデリバリー",{"href":347,"dataGaLocation":285,"dataGaName":365},"Automated software delivery",{"title":367,"description":368,"link":369,"items":374},"セキュリティ","セキュリティを犠牲にすることなくコード作成を高速化",{"config":370},{"href":371,"dataGaName":372,"dataGaLocation":285,"icon":373},"/ja-jp/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[375,379,384],{"text":376,"config":377},"アプリケーションセキュリティテスト",{"href":371,"dataGaName":378,"dataGaLocation":285},"Application security testing",{"text":380,"config":381},"ソフトウェアサプライチェーンセキュリティ",{"href":382,"dataGaLocation":285,"dataGaName":383},"/ja-jp/solutions/supply-chain/","Software supply chain security",{"text":385,"config":386},"ソフトウェアコンプライアンス",{"href":387,"dataGaName":388,"dataGaLocation":285},"/ja-jp/solutions/software-compliance/","software compliance",{"title":390,"link":391,"items":396},"測定",{"config":392},{"icon":393,"href":394,"dataGaName":395,"dataGaLocation":285},"DigitalTransformation","/ja-jp/solutions/visibility-measurement/","visibility and measurement",[397,401,406],{"text":398,"config":399},"可視性と測定",{"href":394,"dataGaLocation":285,"dataGaName":400},"Visibility and Measurement",{"text":402,"config":403},"バリューストリーム管理",{"href":404,"dataGaLocation":285,"dataGaName":405},"/ja-jp/solutions/value-stream-management/","Value Stream Management",{"text":407,"config":408},"分析とインサイト",{"href":409,"dataGaLocation":285,"dataGaName":410},"/ja-jp/solutions/analytics-and-insights/","Analytics and insights",{"title":412,"type":335,"items":413},"GitLabが活躍する場所",[414,420,426],{"text":415,"config":416},"大企業",{"icon":417,"href":418,"dataGaLocation":285,"dataGaName":419},"Building","/ja-jp/enterprise/","enterprise",{"text":421,"config":422},"スモールビジネス",{"icon":423,"href":424,"dataGaLocation":285,"dataGaName":425},"Work","/ja-jp/small-business/","small business",{"text":427,"config":428},"公共部門",{"icon":429,"href":430,"dataGaLocation":285,"dataGaName":431},"Organization","/ja-jp/solutions/public-sector/","public sector",{"text":433,"config":434},"価格",{"href":435,"dataGaName":436,"dataGaLocation":285,"dataNavLevelOne":436},"/ja-jp/pricing/","pricing",{"text":438,"config":439,"menu":441},"関連リソース",{"dataNavLevelOne":440},"resources",{"type":335,"link":442,"columns":446,"feature":540},{"text":443,"config":444},"すべてのリソースを表示",{"href":445,"dataGaName":440,"dataGaLocation":285},"/ja-jp/resources/",[447,480,507],{"title":448,"items":449},"はじめに",[450,455,460,465,470,475],{"text":451,"config":452},"インストール",{"href":453,"dataGaName":454,"dataGaLocation":285},"/ja-jp/install/","install",{"text":456,"config":457},"クイックスタートガイド",{"href":458,"dataGaName":459,"dataGaLocation":285},"/ja-jp/get-started/","quick setup checklists",{"text":461,"config":462},"学ぶ",{"href":463,"dataGaLocation":285,"dataGaName":464},"https://university.gitlab.com/","learn",{"text":466,"config":467},"製品ドキュメント",{"href":468,"dataGaName":469,"dataGaLocation":285},"https://docs.gitlab.com/ja-jp/","product documentation",{"text":471,"config":472},"ベストプラクティスビデオ",{"href":473,"dataGaName":474,"dataGaLocation":285},"/ja-jp/getting-started-videos/","best practice videos",{"text":476,"config":477},"インテグレーション",{"href":478,"dataGaName":479,"dataGaLocation":285},"/ja-jp/integrations/","integrations",{"title":481,"items":482},"検索する",[483,488,493,498,502],{"text":484,"config":485},"お客様成功事例",{"href":486,"dataGaName":487,"dataGaLocation":285},"/ja-jp/customers/","customer success stories",{"text":489,"config":490},"ブログ",{"href":491,"dataGaName":492,"dataGaLocation":285},"/ja-jp/blog/","blog",{"text":494,"config":495},"Demo Hub",{"href":496,"dataGaName":497,"dataGaLocation":285},"/ja-jp/demo-hub/","demo hub",{"text":499,"config":500},"The Source",{"href":501,"dataGaName":492,"dataGaLocation":285},"/ja-jp/the-source/",{"text":503,"config":504},"リモート",{"href":505,"dataGaName":506,"dataGaLocation":285},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":508,"items":509},"つなげる",[510,515,520,525,530,535],{"text":511,"config":512},"GitLabサービス",{"href":513,"dataGaName":514,"dataGaLocation":285},"/ja-jp/services/","services",{"text":516,"config":517},"コントリビュート",{"href":518,"dataGaName":519,"dataGaLocation":285},"https://contributors.gitlab.com","contribute",{"text":521,"config":522},"コミュニティ",{"href":523,"dataGaName":524,"dataGaLocation":285},"/community/","community",{"text":526,"config":527},"フォーラム",{"href":528,"dataGaName":529,"dataGaLocation":285},"https://forum.gitlab.com/","forum",{"text":531,"config":532},"イベント",{"href":533,"dataGaName":534,"dataGaLocation":285},"/events/","events",{"text":536,"config":537},"パートナー",{"href":538,"dataGaName":539,"dataGaLocation":285},"/ja-jp/partners/","partners",{"config":541,"title":544,"text":545,"link":546},{"background":542,"textColor":543},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","GitLabの最新情報","最新の機能と改善点に関する情報をお届けします。",{"text":547,"config":548},"最新情報を読む",{"href":549,"dataGaName":550,"dataGaLocation":285},"/ja-jp/whats-new/","whats new",{"text":552,"config":553,"menu":555},"企業情報",{"dataNavLevelOne":554},"company",{"type":335,"columns":556},[557],{"items":558},[559,564,570,572,577,582,587,592,597,602],{"text":560,"config":561},"GitLabについて",{"href":562,"dataGaName":563,"dataGaLocation":285},"/ja-jp/company/","about",{"text":565,"config":566,"footerGa":569},"採用情報",{"href":567,"dataGaName":568,"dataGaLocation":285},"/jobs/","jobs",{"dataGaName":568},{"text":531,"config":571},{"href":533,"dataGaName":534,"dataGaLocation":285},{"text":573,"config":574},"経営陣",{"href":575,"dataGaName":576,"dataGaLocation":285},"/company/team/e-group/","leadership",{"text":578,"config":579},"ハンドブック",{"href":580,"dataGaName":581,"dataGaLocation":285},"https://handbook.gitlab.com/","handbook",{"text":583,"config":584},"投資家向け情報",{"href":585,"dataGaName":586,"dataGaLocation":285},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":588,"config":589},"トラストセンター",{"href":590,"dataGaName":591,"dataGaLocation":285},"/ja-jp/security/","trust center",{"text":593,"config":594},"AI Transparency Center",{"href":595,"dataGaName":596,"dataGaLocation":285},"/ja-jp/ai-transparency-center/","ai transparency center",{"text":598,"config":599},"ニュースレター",{"href":600,"dataGaName":601,"dataGaLocation":285},"/company/contact/#contact-forms","newsletter",{"text":603,"config":604},"プレス",{"href":605,"dataGaName":606,"dataGaLocation":285},"/press/","press",{"text":608,"config":609,"menu":610},"お問い合わせ",{"dataNavLevelOne":554},{"type":335,"columns":611},[612],{"items":613},[614,619,624],{"text":615,"config":616},"お問い合わせはこちら",{"href":617,"dataGaName":618,"dataGaLocation":285},"/ja-jp/sales/","talk to sales",{"text":620,"config":621},"サポートを受ける",{"href":622,"dataGaName":623,"dataGaLocation":285},"https://support.gitlab.com/hc/en-us","support portal",{"text":625,"config":626},"カスタマーポータル",{"href":627,"dataGaName":628,"dataGaLocation":285},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":630,"login":631,"suggestions":638},"閉じる",{"text":632,"link":633},"リポジトリとプロジェクトを検索するには、次にログインします",{"text":634,"config":635},"GitLab.com",{"href":299,"dataGaName":636,"dataGaLocation":637},"search login","search",{"text":639,"default":640},"提案",[641,643,648,650,654,658],{"text":23,"config":642},{"href":320,"dataGaName":23,"dataGaLocation":637},{"text":644,"config":645},"コード提案（AI）",{"href":646,"dataGaName":647,"dataGaLocation":637},"/ja-jp/solutions/code-suggestions/","Code Suggestions (AI)",{"text":351,"config":649},{"href":353,"dataGaName":351,"dataGaLocation":637},{"text":651,"config":652},"GitLab on AWS",{"href":653,"dataGaName":651,"dataGaLocation":637},"/ja-jp/partners/technology-partners/aws/",{"text":655,"config":656},"GitLab on Google Cloud",{"href":657,"dataGaName":655,"dataGaLocation":637},"/ja-jp/partners/technology-partners/google-cloud-platform/",{"text":659,"config":660},"GitLabを選ぶ理由",{"href":328,"dataGaName":661,"dataGaLocation":637},"Why GitLab?",{"freeTrial":663,"mobileIcon":667,"desktopIcon":672,"secondaryButton":675},{"text":287,"config":664},{"href":665,"dataGaName":290,"dataGaLocation":666},"https://gitlab.com/-/trials/new/","nav",{"altText":668,"config":669},"GitLabアイコン",{"src":670,"dataGaName":671,"dataGaLocation":666},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":668,"config":673},{"src":674,"dataGaName":671,"dataGaLocation":666},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":448,"config":676},{"href":677,"dataGaName":678,"dataGaLocation":666},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp/get-started/","get started",{"freeTrial":680,"mobileIcon":684,"desktopIcon":686},{"text":681,"config":682},"GitLab Duoの詳細について",{"href":320,"dataGaName":683,"dataGaLocation":666},"gitlab duo",{"altText":668,"config":685},{"src":670,"dataGaName":671,"dataGaLocation":666},{"altText":668,"config":687},{"src":674,"dataGaName":671,"dataGaLocation":666},{"button":689,"mobileIcon":694,"desktopIcon":696},{"text":690,"config":691},"/switch",{"href":692,"dataGaName":693,"dataGaLocation":666},"#contact","switch",{"altText":668,"config":695},{"src":670,"dataGaName":671,"dataGaLocation":666},{"altText":668,"config":697},{"src":698,"dataGaName":671,"dataGaLocation":666},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":700,"mobileIcon":705,"desktopIcon":707},{"text":701,"config":702},"料金ページに戻る",{"href":435,"dataGaName":703,"dataGaLocation":666,"icon":704},"back to pricing","GoBack",{"altText":668,"config":706},{"src":670,"dataGaName":671,"dataGaLocation":666},{"altText":668,"config":708},{"src":674,"dataGaName":671,"dataGaLocation":666},{"title":710,"button":711,"config":715},"GitLab Orbitが登場: AIエージェントのためのコンテキストレイヤー",{"text":326,"config":712},{"href":713,"dataGaName":714,"dataGaLocation":285},"/ja-jp/gitlab-orbit/","orbit",{"layout":716,"disabled":270},"release",{"data":718},{"text":719,"source":720,"edit":726,"contribute":731,"config":736,"items":741,"minimal":950},"GitはSoftware Freedom Conservancyの商標です。当社は「GitLab」をライセンスに基づいて使用しています",{"text":721,"config":722},"ページのソースを表示",{"href":723,"dataGaName":724,"dataGaLocation":725},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":727,"config":728},"このページを編集",{"href":729,"dataGaName":730,"dataGaLocation":725},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":732,"config":733},"ご協力をお願いします",{"href":734,"dataGaName":735,"dataGaLocation":725},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":737,"facebook":738,"youtube":739,"linkedin":740},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[742,787,840,883,917],{"title":433,"links":743,"subMenu":758},[744,748,753],{"text":745,"config":746},"プランの表示",{"href":435,"dataGaName":747,"dataGaLocation":725},"view plans",{"text":749,"config":750},"Premiumを選ぶ理由",{"href":751,"dataGaName":752,"dataGaLocation":725},"/ja-jp/pricing/premium/","why premium",{"text":754,"config":755},"Ultimateを選ぶ理由",{"href":756,"dataGaName":757,"dataGaLocation":725},"/ja-jp/pricing/ultimate/","why ultimate",[759],{"title":608,"links":760},[761,763,765,767,772,777,782],{"text":608,"config":762},{"href":617,"dataGaName":295,"dataGaLocation":725},{"text":620,"config":764},{"href":622,"dataGaName":623,"dataGaLocation":725},{"text":625,"config":766},{"href":627,"dataGaName":628,"dataGaLocation":725},{"text":768,"config":769},"ステータス",{"href":770,"dataGaName":771,"dataGaLocation":725},"https://status.gitlab.com/","status",{"text":773,"config":774},"利用規約",{"href":775,"dataGaName":776,"dataGaLocation":725},"/terms/","terms of use",{"text":778,"config":779},"プライバシーに関する声明",{"href":780,"dataGaName":781,"dataGaLocation":725},"/ja-jp/privacy/","privacy statement",{"text":783,"config":784},"Cookie 優先設定",{"dataGaName":785,"dataGaLocation":725,"id":786,"isOneTrustButton":264},"cookie preferences","ot-sdk-btn",{"title":331,"links":788,"subMenu":797},[789,793],{"text":790,"config":791},"DevSecOpsプラットフォーム",{"href":314,"dataGaName":792,"dataGaLocation":725},"devsecops platform",{"text":794,"config":795},"AI支援開発",{"href":320,"dataGaName":796,"dataGaLocation":725},"ai-assisted development",[798],{"title":799,"links":800},"トピック",[801,805,810,815,820,825,830,835],{"text":351,"config":802},{"href":803,"dataGaName":804,"dataGaLocation":725},"/ja-jp/topics/ci-cd/","cicd",{"text":806,"config":807},"GitOps",{"href":808,"dataGaName":809,"dataGaLocation":725},"/ja-jp/topics/gitops/","gitops",{"text":811,"config":812},"DevOps",{"href":813,"dataGaName":814,"dataGaLocation":725},"/ja-jp/topics/devops/","devops",{"text":816,"config":817},"バージョン管理",{"href":818,"dataGaName":819,"dataGaLocation":725},"/ja-jp/topics/version-control/","version control",{"text":821,"config":822},"DevSecOps",{"href":823,"dataGaName":824,"dataGaLocation":725},"/ja-jp/topics/devsecops/","devsecops",{"text":826,"config":827},"クラウドネイティブ",{"href":828,"dataGaName":829,"dataGaLocation":725},"/ja-jp/topics/cloud-native/","cloud native",{"text":831,"config":832},"コーディングのためのAI",{"href":833,"dataGaName":834,"dataGaLocation":725},"/ja-jp/topics/devops/ai-for-coding/","ai for coding",{"text":836,"config":837},"エージェント型AI",{"href":838,"dataGaName":839,"dataGaLocation":725},"/ja-jp/topics/agentic-ai/","agentic ai",{"title":841,"links":842},"ソリューション",[843,846,848,853,857,860,863,866,868,870,873,878],{"text":376,"config":844},{"href":371,"dataGaName":845,"dataGaLocation":725},"Application Security Testing",{"text":363,"config":847},{"href":347,"dataGaName":348,"dataGaLocation":725},{"text":849,"config":850},"アジャイル開発",{"href":851,"dataGaName":852,"dataGaLocation":725},"/ja-jp/solutions/agile-delivery/","agile delivery",{"text":854,"config":855},"SCM",{"href":360,"dataGaName":856,"dataGaLocation":725},"source code management",{"text":351,"config":858},{"href":353,"dataGaName":859,"dataGaLocation":725},"continuous integration & delivery",{"text":402,"config":861},{"href":404,"dataGaName":862,"dataGaLocation":725},"value stream management",{"text":806,"config":864},{"href":865,"dataGaName":809,"dataGaLocation":725},"/ja-jp/solutions/gitops/",{"text":415,"config":867},{"href":418,"dataGaName":419,"dataGaLocation":725},{"text":421,"config":869},{"href":424,"dataGaName":425,"dataGaLocation":725},{"text":871,"config":872},"公共機関",{"href":430,"dataGaName":431,"dataGaLocation":725},{"text":874,"config":875},"教育",{"href":876,"dataGaName":877,"dataGaLocation":725},"/ja-jp/solutions/education/","education",{"text":879,"config":880},"金融サービス",{"href":881,"dataGaName":882,"dataGaLocation":725},"/ja-jp/solutions/finance/","financial services",{"title":884,"links":885},"リソース",[886,888,890,892,896,898,901,903,905,907,909,911,913,915],{"text":451,"config":887},{"href":453,"dataGaName":454,"dataGaLocation":725},{"text":456,"config":889},{"href":458,"dataGaName":459,"dataGaLocation":725},{"text":461,"config":891},{"href":463,"dataGaName":464,"dataGaLocation":725},{"text":466,"config":893},{"href":894,"dataGaName":895,"dataGaLocation":725},"https://docs.gitlab.com/ja-jp","docs",{"text":489,"config":897},{"href":491,"dataGaName":492,"dataGaLocation":725},{"text":899,"config":900},"最新リリース",{"href":549,"dataGaName":550,"dataGaLocation":725},{"text":484,"config":902},{"href":486,"dataGaName":487,"dataGaLocation":725},{"text":503,"config":904},{"href":505,"dataGaName":506,"dataGaLocation":725},{"text":511,"config":906},{"href":513,"dataGaName":514,"dataGaLocation":725},{"text":516,"config":908},{"href":518,"dataGaName":519,"dataGaLocation":725},{"text":521,"config":910},{"href":523,"dataGaName":524,"dataGaLocation":725},{"text":526,"config":912},{"href":528,"dataGaName":529,"dataGaLocation":725},{"text":531,"config":914},{"href":533,"dataGaName":534,"dataGaLocation":725},{"text":536,"config":916},{"href":538,"dataGaName":539,"dataGaLocation":725},{"title":918,"links":919},"会社情報",[920,922,924,926,928,930,934,939,941,943,945],{"text":560,"config":921},{"href":562,"dataGaName":554,"dataGaLocation":725},{"text":565,"config":923},{"href":567,"dataGaName":568,"dataGaLocation":725},{"text":573,"config":925},{"href":575,"dataGaName":576,"dataGaLocation":725},{"text":578,"config":927},{"href":580,"dataGaName":581,"dataGaLocation":725},{"text":583,"config":929},{"href":585,"dataGaName":586,"dataGaLocation":725},{"text":931,"config":932},"Sustainability",{"href":933,"dataGaName":931,"dataGaLocation":725},"/sustainability/",{"text":935,"config":936},"ダイバーシティ、インクルージョン、ビロンギング（DIB）",{"href":937,"dataGaName":938,"dataGaLocation":725},"/ja-jp/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":588,"config":940},{"href":590,"dataGaName":591,"dataGaLocation":725},{"text":598,"config":942},{"href":600,"dataGaName":601,"dataGaLocation":725},{"text":603,"config":944},{"href":605,"dataGaName":606,"dataGaLocation":725},{"text":946,"config":947},"現代奴隷制の透明性に関する声明",{"href":948,"dataGaName":949,"dataGaLocation":725},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":951},[952,954,957],{"text":773,"config":953},{"href":775,"dataGaName":776,"dataGaLocation":725},{"text":955,"config":956},"Cookieの設定",{"dataGaName":785,"dataGaLocation":725,"id":786,"isOneTrustButton":264},{"text":778,"config":958},{"href":780,"dataGaName":781,"dataGaLocation":725},[960],{"id":961,"title":7,"body":263,"config":962,"content":964,"description":263,"extension":968,"meta":969,"navigation":264,"path":970,"seo":971,"stem":972,"__hash__":973},"blogAuthors/en-us/blog/authors/sam-wiskow.yml",{"template":963},"BlogAuthor",{"name":7,"config":965},{"headshot":966,"ctfId":967},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659433/Blog/Author%20Headshots/swiskow-headshot.jpg","swiskow","yml",{},"/en-us/blog/authors/sam-wiskow",{},"en-us/blog/authors/sam-wiskow","TR52XmFI8G3xfSF6pTXW6r_bf0Bd5tf82MmM7VjjKfM",[975,983,990],{"title":976,"description":977,"heroImage":978,"category":259,"date":979,"authors":980,"slug":982,"externalUrl":263},"Loop Engineeringの実践方法：GitLab × Claude Codeでの実装例","GitLabとClaude Codeで実践するLoop Engineeringの実装例をご紹介。AIエージェントを自律稼働させるcron起動・Skills活用・ラベルベースのフローと、必須のガードレール設計を解説します。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1785215335/oevhcbrbev1zyfubdfxz.jpg","2026-07-31",[981],"Issei Hamada, Sony Biz Networks Corporation","loop-engineering-gitlab-claude-code",{"title":984,"description":985,"heroImage":986,"category":259,"date":979,"authors":987,"slug":989,"externalUrl":263},"エージェント型AI、MCP、AIコードアシスタントを統制する方法","AIエージェントは、各ステップで人によるレビューを介さずに、コードの記述、プッシュ、デプロイを行うことができます。アクセス、権限、監査証跡を統制する実践的なフレームワークを解説します。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1785337625/ifzlc2hyzaxhzmjgyymh.png",[988],"Julie Griffin","govern-agentic-ai-mcps-code-assistants",{"title":991,"description":992,"heroImage":993,"category":259,"date":994,"authors":995,"slug":997,"externalUrl":263},"Claude Opus 5、GitLabで最難関タスクに挑む","AnthropicのClaude Opus 5がGitLab Duo Agent Platformで利用可能になりました。速度を犠牲にすることなく、より深い推論力を提供します。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099203/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%2820%29_2bJGC5ZP3WheoqzlLT05C5_1750099203484.png","2026-07-27",[996],"Brittany Lutz","claude-opus-5-on-gitlab-duo-agent-platform",{"promotions":999},[1000,1013,1025,1037],{"id":1001,"categories":1002,"header":1003,"text":1004,"button":1005,"image":1010},"ai-modernization",[259],"AIの真価、組織全体で発揮できていますか？","所要時間は5分以内です",{"text":1006,"config":1007},"AI成熟度スコアを確認する",{"href":1008,"dataGaName":1009,"dataGaLocation":492},"/ja-jp/assessments/ai-modernization-assessment/","modernization assessment",{"config":1011},{"src":1012},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1014,"categories":1015,"header":1017,"text":1004,"button":1018,"image":1022},"devops-modernization",[1016,824],"product","単にツールを管理するだけでなく、イノベーションを提供していますか？",{"text":1019,"config":1020},"DevOps成熟度スコアを確認しましょう",{"href":1021,"dataGaName":1009,"dataGaLocation":492},"/ja-jp/assessments/devops-modernization-assessment/",{"config":1023},{"src":1024},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1026,"categories":1027,"header":1029,"text":1004,"button":1030,"image":1034},"security-modernization",[1028],"security","スピードのためにセキュリティを犠牲にしていませんか？",{"text":1031,"config":1032},"セキュリティ成熟度スコアを確認しましょう",{"href":1033,"dataGaName":1009,"dataGaLocation":492},"/ja-jp/assessments/security-modernization-assessment/",{"config":1035},{"src":1036},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1038,"paths":1039,"header":1042,"text":1043,"button":1044,"image":1049},"github-azure-migration",[1040,1041],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","チームはGitHubのAzure移行に対応できていますか？","GitHubはすでにAzureを基盤として再構築を進めています。それがあなたのチームにとって何を意味するのか、ご確認ください。",{"text":1045,"config":1046},"GitLabとGitHubの比較を見る",{"href":1047,"dataGaName":1048,"dataGaLocation":492},"/ja-jp/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1050},{"src":1024},{"header":1052,"blurb":1053,"button":1054,"secondaryButton":1058},"今すぐ開発をスピードアップ","DevSecOpsに特化したインテリジェントオーケストレーションプラットフォームで実現できることをご確認ください。\n",{"text":287,"config":1055},{"href":1056,"dataGaName":290,"dataGaLocation":1057},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/ja-jp/","feature",{"text":608,"config":1059},{"href":617,"dataGaName":295,"dataGaLocation":1057},1786803781934]