[{"data":1,"prerenderedAt":815},["ShallowReactive",2],{"/ja-jp/blog/how-indeed-transformed-its-ci-platform-with-gitlab":3,"navigation-ja-jp":44,"banner-ja-jp":454,"footer-ja-jp":464,"blog-post-authors-ja-jp-Carl Myers":699,"blog-related-posts-ja-jp-how-indeed-transformed-its-ci-platform-with-gitlab":714,"blog-promotions-ja-jp":753,"next-steps-ja-jp":806},{"id":4,"title":5,"authorSlugs":6,"authors":8,"body":10,"category":11,"categorySlug":11,"config":12,"content":16,"date":20,"description":17,"extension":27,"externalUrl":28,"featured":14,"heroImage":19,"isFeatured":14,"meta":29,"navigation":14,"path":30,"publishedDate":20,"rawbody":31,"seo":32,"slug":13,"stem":37,"tagSlugs":38,"tags":42,"template":15,"updatedDate":26,"__hash__":43},"blogPosts/ja-jp/blog/how-indeed-transformed-its-ci-platform-with-gitlab.yml","GitLabでCIプラットフォームを変革したIndeed社の戦略",[7],"carl-myers",[9],"Carl Myers","***編集者からのお知らせ：GitLabでは、当社ブログの執筆者として、カスタマーコミュニティのメンバーをお招きすることがあります。今回のブログ記事では、Indeed社のCIプラットフォームマネージャーを務めるCarl Myers氏に、GitLabに関する経験を共有していただきました。*** \n\nIndeedは、「We help people get jobs.（人々の仕事さがしを支援する）」というミッションを掲げています。Indeedは、[月間3億5,000万人以上のユニークビジターを持つ、世界最大の求人サイト](https://jp.indeed.com/about)（外部サイト）です。\n\nIndeedのエンジニアリングプラットフォームチームは「We help people to help people get jobs.（人々の仕事さがしを支援する人を支援する）」というモットーを掲げており、これは会社のミッションとは少し異なるものです。20年近くにわたり、常に求職者を第一に考えるデータドリブンのエンジニアリング文化を醸成してきました。この文化を推進する中で、当社はこのアプローチを実現し、日々エンジニアが求職者によい結果を届けられるようにするためのツールの構築に責任を持って取り組んでいます。\n\nわずか11人から成るIndeedのCIプラットフォームチームは、GitLabの継続的インテグレーション（CI）を導入したことで、社内の数千人のユーザーを効果的にサポートできるようになりました。このほかにも、IndeedはGitLab CIへの移行により次のメリットを得ました。\n- 1日あたりのパイプライン実行数が79%増加\n- CIハードウェアコストを10～20%削減\n- サポート負担の軽減\n\n## CIプラットフォームの進化：Jenkinsから拡張性に優れたソリューションへ\n\n多くの大手テクノロジー企業と同様に、当社は会社の成長に伴い、当時利用可能なオープンソースや業界標準のソリューションを用いてCIプラットフォームを段階的に構築してきました。2007年、Indeedのエンジニアが20人にも満たなかった頃、チームではHudson（Jenkinsの前身）を使用していました。\n\n20年近くにわたる成長を経た現在、Indeedには数千人のエンジニアが在籍しています。新しい技術が登場するたびに、段階的に改善に取り組み、2011年頃にはJenkinsに移行しました。また、[AWS EC2](https://aws.amazon.com/ec2/)を使用して、ほとんどのワークロードを動的なクラウドワーカーノードに移行することにも成功しました。しかし、Kubernetes時代に突入すると、システムのアーキテクチャが限界に達しました。\n\nJenkinsのアーキテクチャは、クラウドを前提に設計されていません。Jenkinsは、パイプラインの重要な部分を実行し、特定のタスクをワーカーノードに割り当てる役割を持つ『コントローラー』ノードを使用して動作します（ワーカーノードはある程度水平にスケーリングが可能）。しかし、コントローラーのスケーリングは手動で調整する必要があります。\n\nジョブが多すぎて1つのコントローラーに収まらない場合、ジョブを複数のコントローラーに手動で分割する必要があります。CloudBees社は、こうしたボトルネックを軽減するための対策として、CloudBees Jenkins Operations Centerをはじめとする、複数のコントローラーを一元管理するソリューションを提案しています。しかし、各コントローラーは依然として脆弱な単一障害点となり、Kubernetes環境での運用には困難があります。ノードのロールアウトやハードウェアの障害などのアクティビティはダウンタイムを引き起こします。\n\nJenkins自体に内在する技術的な制約に加えて、自社のCIプラットフォームにも、社内プロセスが原因で発生した問題がいくつかありました。たとえば、各リポジトリ内のコードからジョブを生成するためにGroovy Jenkins DSLを使用していたため、各プロジェクトがコピー＆ペーストされた独自のジョブパイプラインを持つことになり、その結果、数百ものバージョンが生成され、メンテナンスや更新が困難になりました。Indeedのエンジニアリング文化は柔軟性を重視し、チームが別々のリポジトリで作業することを許容していますが、その柔軟性により、チームは定期的にメンテナンスを行わなければならず、多大な時間を費やさせる負担要因となっていました。\n\nこうした技術的負債を認識した当社は、「[Golden Pathパターン](https://tag-app-delivery.cncf.io/whitepapers/platforms/)（英語）」に目を向けました。このパターンは、柔軟性を保ちながら、アップデートを簡素化し、プロジェクト間で運用の一貫性を促進するための標準的な手順を提供するものです。\n\nIndeedのCIプラットフォームチームは11人ほどのエンジニアで構成されており、決して規模は大きくないものの、サポートリクエストへの対応、アップグレードやメンテナンスの実施、そしてグローバル企業としての常時サポート体制の確保を通じて、数千人のユーザーサポートにあたっています。\n\n当社のチームは、GitLabインスタンスだけでなく、アーティファクトサーバーや共有ビルドコード、さらに複数のカスタムコンポーネントを含むCIプラットフォーム全体をサポートしているため、業務量は非常に多岐にわたります。そのため、既存のリソースを最大限に活用し、課題に対処する計画が必要でした。\n\n## GitLab CIへの移行\n\n主要なステークホルダーとの慎重な設計レビューを経て、当社は全社的にJenkinsからGitLab CIへ移行することを決定しました。GitLab CIを選んだ主な理由は次のとおりです。\n\n- すでにGitLabをソースコード管理に使用していたため。\n- GitLabは、当社がCIに求める機能をすべて備えた包括的なソリューションであるため。\n- GitLab CIの設計は拡張性に優れ、クラウドにも対応しているため。\n- GitLab CIは、テンプレートを拡張して新たなテンプレートを作成できるという点が、当社の「Golden Path」戦略と合致していたため。\n- GitLabがオープンソースソフトウェアであり、さらにGitLabチームが当社の修正提案に常に協力的であったことから、柔軟性と安心感を得られたため。\n\nGitLab CIプラットフォームの一般提供を正式に発表した時点で、すでに全ビルドの23%がGitLab CI上で行われていました。これは、個々のユーザーの自主的な取り組みや早期導入者のおかげです。\n\nしかし、移行の課題は「ロングテール」にありました。Jenkinsには多くのカスタムビルドが存在するため、自動移行ツールはほとんどのチームに適用できませんでした。新しいシステムの利点の多くは、旧システムを完全に停止（0%）にするまで実現しません。そうして初めてハードウェアを停止し、CloudBeesのライセンス費用を削減できるようになるのです。\n\n## 機能の同等性とゼロからの再出発の利点\n\nIndeedでは多様な技術をサポートしていますが、最も一般的な言語はJava、Python、JavaScriptです。これらの言語は、ライブラリの構築、デプロイ可能なサービス（ウェブサービスやアプリケーションなど）、およびcronジョブ（データレイク内のデータセットを構築するような、定期的に実行されるプロセス）を作成するために使用されます。これらの言語は、Javaライブラリ、Pythonのcronジョブ、JavaScriptのウェブアプリケーションといったプロジェクトタイプのマトリックスを形成しており、Jenkinsではそれぞれに対して事前定義されたスケルトンがありました。そのため、これらすべてのプロジェクトタイプに対応する「Golden Path」テンプレートをGitLab CIでも作成する必要がありました。\n\nほとんどのユーザーは推奨されたパスをそのまま使用できましたが、カスタマイズが必要な場合でも「Golden Path」は有用な出発点になりました。必要な部分だけを調整しながら、将来的には一元管理されたテンプレートが更新されるたびに、その利点を享受することができます。\n\n当社はすぐに、カスタマイズが必要なユーザーでさえ「Golden Path」の採用に前向きであり、少なくとも試用を望んでいることがわかりました。もし以前のカスタマイズが必要であれば、後から追加することができたからです。これは驚くべき結果でした。大幅なカスタマイズに投資してきたチームはそれを手放すことに抵抗があるだろうと思っていましたが、大多数のチームはもはやそれを気にしなくなっていたのです。これにより、多くのプロジェクトを非常に迅速に移行することができました。プロジェクトに「Golden Path」（インクルードを含む6行ほどの小さなファイル）を追加するだけで、あとは各チームがそれを活用して進めることができました。\n\n## インナーソースによる救済\n\nCIプラットフォームチームは、「外部からのコントリビュートを優先する」というポリシーを採用し、社員全体の参加を促進しました。このアプローチは「インナーソース」と呼ばれることもあります。私たちは、外部からのコントリビュート（自分たちのチーム以外からのコントリビュート）を促進するために、テストやドキュメントを作成しました。カスタマイズを望むチームは、そのカスタマイズを、Golden Pathに組み込んで、機能フラグを使用して共有できるようになりました。これにより、カスタマイズを行ったチームは自分たちの作業を他のチームと共有できるようになっただけでなく、そのカスタマイズがCIプラットフォームチームのコードベースの一部になったため、将来的にそのカスタマイズが壊されないことを保証できるようになりました。\n\nこの取り組みには、特定のチームが必要な機能を求めて待機することなく、自分たちでその開発に取り組めるようになったという利点もありました。たとえば、「その機能は数週間後に実装する予定ですが、もし早めに必要であれば、ぜひコントリビュートしてください」と伝えることができます。結果的に、同等性に必要な多くのコア機能がこのようなアプローチで開発され、チームのリソースでは実現できないほど迅速かつ質の高い形で提供されました。このモデルがなければ、移行は成功しなかったでしょう。\n\n## 予定より早く、予算内で達成\n\nチームのCloudBeesライセンスは2024年4月1日に期限切れになりました。これに伴い、完全移行を達成するための挑戦的な目標を設定しました。当時、ビルド全体の80%（全プロジェクトの60%）でCIにJenkinsが使用されていたことを考えると、この目標は特に野心的だったと言えます。つまり、2,000以上の[Jenkinsfiles](https://www.jenkins.io/doc/book/pipeline/jenkinsfile/)を新たに書き直すか、Golden Pathのテンプレートに置き換える必要があったのです。\n\nこの目標を達成するために、チームはドキュメントやサンプルコードを提供し、可能な限り機能を実装したほか、ユーザーが機能を追加できるように支援しました。\n\nまた、定期的なオフィスアワーを設け、誰でも質問をしたり、移行の支援を求めたりできるようにしました。さらに、移行に関連するサポートの質問を、一部を除いて他のどの質問よりも優先しました。CIプラットフォームはGitLab CIのエキスパートとなり、その専門知識をチーム内および組織全体で共有しました。\n\n自動移行はほとんどのプロジェクトでは実現できませんでしたが、カスタマイズがまれな比較的小規模なプロジェクトには有効であることがわかりました。チームはSourcegraphの一括変更キャンペーンを作成し、数百のプロジェクトを移行するためにマージリクエストを送信しました。そして、ユーザーにその承認を促しました。\n\nユーザーからの成功事例を広く共有し、ユーザーがGolden Pathに新しい機能を追加するたびに、「GitLab CIに移行するとこれらの機能が無料で利用できる」と宣伝しました。これらの機能には、ビルトインのセキュリティやコンプライアンススキャン、CIビルドのSlack通知、他の内部システムとのインテグレーションなどがあります。\n\nさらに、積極的な「screamテスト」キャンペーンを実施しました。しばらく実行されていない、または成功していないJenkinsジョブを自動的に無効にし、必要であれば再度有効にできるとユーザーに通知しました。これは、手間をかけずに実際に必要なジョブを特定できる効果的なアプローチでした。前回のCI移行（JenkinsからJenkinsへの移行）以降、一度も実行されていない数千のジョブがあり、これらをほぼすべて安全に無視できることがわかりました。\n\n2024年1月には、例外が明示的に要求されない限り、すべてのJenkinsコントローラーが読み取り専用（ビルド不可）になると発表しました。コントローラーに関する所有情報が大幅に改善され、組織の構造に合致していたため、ジョブよりもコントローラーに焦点を当てることが合理的でした。コントローラーのリストはジョブのリストよりもはるかに管理しやすいものでした。\n\n例外を認めるために、ユーザーにはスプレッドシートでコントローラーを見つけ、その横に連絡先情報を入力してもらうよう依頼しました。これにより、フォローアップできる利害関係者の最新リストを確実に取得できるだけでなく、ユーザーからも絶対に必要なジョブを明確に知らせてもらうことができました。ピーク時には約400ものコントローラーがありましたが、1月には220に減少し、そのうち例外を必要とするのは54のコントローラーだけでした（そのうちいくつかはチームで所有し、テストやカナリアのために使用していました）。\n\n![Indeed - Jenkinsコントローラー（個数）の推移グラフ](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099357/Blog/Content%20Images/Blog/Content%20Images/image2_aHR0cHM6_1750099357392.png)\n\n私たちは、約50チームの管理可能なリストをチーム内で分担し、各チームの移行の進捗状況を聞き取りし始めました。1月、2月中に、そして一部のチームは2月28日までに私たちの支援なしで移行を完了させる予定であり、他のチームはその時点までのプロジェクト廃止を計画していることが判明しました。そして、ごく少数のチームが期限内に完了できるか非常に心配していました。\n\n私たちはこの少数のチームと協力し、きめ細やかな個別対応サービスを提供しました。私たちには移行を代行する上での専門知識が不足しているものの、そのチームの特定分野の専門家と協力できることを説明しました。一部のプロジェクトでは、私たちがコードを書き、そのチームがレビューを行い、他のプロジェクトではそのチームがコードを書き、私たちがレビューを行いました。最終的に、すべての努力が実を結び、8か月前に宣言した日に、Jenkinsを無事に廃止することができました。\n\n## 成果：CI効率とユーザー満足度の向上\n\nJenkins CIプラットフォームのピーク時には、1日あたり14,000以上のパイプラインが実行され、数千のプロジェクトをサポートしていました。現在、GitLab CIプラットフォームは、1日あたり40,000以上のパイプラインを処理し、通常は25,000以上のパイプラインが日常的に稼働しています。各パイプラインのジョブごとの増分コストはJenkinsと同程度ですが、コントローラーを実行するためのハードウェアのオーバーヘッドがなくなりました。これらのコントローラーは、単一障害点であり、スケールの制限要因でもあったため、プラットフォームを人工的にセグメント化せざるを得ませんでした。正確な比較は難しいものの、このオーバーヘッドがなくなったことで、CIハードウェアコストは10～20%削減できたと考えています。さらに、GitLab CIはクラウド上で自動的にスケールし、複数の可用性ゾーンで動作する耐障害性を備えているほか、テンプレート言語には優れた公開ドキュメントがあるため、サポートの負担も軽減されています。\n\n特筆すべきもうひとつの利点としては、現在、Golden Pathの採用率が70%を超えていることです。これにより、私たちが改善策をロールアウトすれば、Indeedの5,000以上のプロジェクトは、特別な操作をせずにすぐにそのメリットを享受できるようになることがわかりました。この結果、一部のジョブをよりコスト効率の高いARM64インスタンスに移行したり、ユーザーのビルドイメージをより簡単に更新したりできるようになりました。また、他のコスト削減の機会をより適切に管理することも可能になりました。最も重要なことは、ユーザーが新しいプラットフォームに満足していることです。\n\n__著者について__：\n*Carl Myers氏はカリフォルニア州サクラメント在住で、Indeed社のCIプラットフォームチームのマネージャーを務めています。Carl氏は、約20年にわたるキャリアを通じて、大小さまざまな企業で、エンジニアのニーズを満たし、その能力を引き出すための社内ツールやデベロッパー向けプラットフォームの構築に尽力してきました。*\n\n**謝辞**：\n*この移行プロジェクトは、Tron Nedelea氏、Eddie Huang氏、Vivek Nynaru氏、Carlos Gonzalez氏、Lane Van Elderen氏、そしてCIプラットフォームチームの他のメンバーの尽力なしには実現できませんでした。チームはまた、プロジェクト全体を通じて、合意やリソースの確保、そして社内全体の調整に尽力していただいたDeepak Bitragunta氏とIrina Tyree氏のリーダーシップに、特に感謝しております。最後に、コード、フィードバック、バグレポートに貢献し、プロジェクトの移行を支援してくださったIndeed社の皆様に感謝申し上げます。*\n\n**この記事は、Indeedエンジニアリングブログに掲載された[「How Indeed Replaced Its CI Platform with GitLab CI」](https://engineering.indeedblog.com/blog/2024/08/indeed-gitlab-ci-migration/)の編集版です。**","customer-stories",{"slug":13,"featured":14,"template":15},"how-indeed-transformed-its-ci-platform-with-gitlab",true,"BlogPost",{"title":5,"description":17,"authors":18,"heroImage":19,"date":20,"body":10,"category":11,"tags":21,"updatedDate":26},"世界最大の求人サイトであるIndeed社は、数千のプロジェクトをGitLab CIに移行することで、生産性向上とコスト削減を実現しました。1日あたりのパイプライン実行数が79%増加するなど、得られた主なメリットをご紹介します。",[9],"https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099351/Blog/Hero%20Images/Blog/Hero%20Images/Indeed-blog-cover-image-2_4AgA1DkWLtHwBlFGvMffbC_1750099350771.png","2024-08-27",[22,23,24,25],"customers","CI/CD","user stories","DevSecOps platform","2025-01-10","yml",null,{},"/ja-jp/blog/how-indeed-transformed-its-ci-platform-with-gitlab","seo:\n  title: GitLabでCIプラットフォームを変革したIndeed社の戦略\n  description: >-\n    世界最大の求人サイトであるIndeed社は、数千のプロジェクトをGitLab\n    CIに移行することで、生産性向上とコスト削減を実現しました。1日あたりのパイプライン実行数が79%増加するなど、得られた主なメリットをご紹介します。\n  ogTitle: GitLabでCIプラットフォームを変革したIndeed社の戦略\n  ogDescription: >-\n    世界最大の求人サイトであるIndeed社は、数千のプロジェクトをGitLab\n    CIに移行することで、生産性向上とコスト削減を実現しました。1日あたりのパイプライン実行数が79%増加するなど、得られた主なメリットをご紹介します。\n  noIndex: false\n  ogImage: >-\n    https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099351/Blog/Hero%20Images/Blog/Hero%20Images/Indeed-blog-cover-image-2_4AgA1DkWLtHwBlFGvMffbC_1750099350771.png\n  ogUrl: >-\n    https://about.gitlab.com/blog/how-indeed-transformed-its-ci-platform-with-gitlab\n  ogSiteName: https://about.gitlab.com\n  ogType: article\n  canonicalUrls: >-\n    https://about.gitlab.com/blog/how-indeed-transformed-its-ci-platform-with-gitlab\ncontent:\n  title: GitLabでCIプラットフォームを変革したIndeed社の戦略\n  description: >-\n    世界最大の求人サイトであるIndeed社は、数千のプロジェクトをGitLab\n    CIに移行することで、生産性向上とコスト削減を実現しました。1日あたりのパイプライン実行数が79%増加するなど、得られた主なメリットをご紹介します。\n  authors:\n    - Carl Myers\n  heroImage: >-\n    https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099351/Blog/Hero%20Images/Blog/Hero%20Images/Indeed-blog-cover-image-2_4AgA1DkWLtHwBlFGvMffbC_1750099350771.png\n  date: '2024-08-27'\n  body: >-\n    ***編集者からのお知らせ：GitLabでは、当社ブログの執筆者として、カスタマーコミュニティのメンバーをお招きすることがあります。今回のブログ記事では、Indeed社のCIプラットフォームマネージャーを務めるCarl\n    Myers氏に、GitLabに関する経験を共有していただきました。*** \n\n\n    Indeedは、「We help people get\n    jobs.（人々の仕事さがしを支援する）」というミッションを掲げています。Indeedは、[月間3億5,000万人以上のユニークビジターを持つ、世界最大の求人サイト](https://jp.indeed.com/about)（外部サイト）です。\n\n\n    Indeedのエンジニアリングプラットフォームチームは「We help people to help people get\n    jobs.（人々の仕事さがしを支援する人を支援する）」というモットーを掲げており、これは会社のミッションとは少し異なるものです。20年近くにわたり、常に求職者を第一に考えるデータドリブンのエンジニアリング文化を醸成してきました。この文化を推進する中で、当社はこのアプローチを実現し、日々エンジニアが求職者によい結果を届けられるようにするためのツールの構築に責任を持って取り組んでいます。\n\n\n    わずか11人から成るIndeedのCIプラットフォームチームは、GitLabの継続的インテグレーション（CI）を導入したことで、社内の数千人のユーザーを効果的にサポートできるようになりました。このほかにも、IndeedはGitLab\n    CIへの移行により次のメリットを得ました。\n\n    - 1日あたりのパイプライン実行数が79%増加\n\n    - CIハードウェアコストを10～20%削減\n\n    - サポート負担の軽減\n\n\n    ## CIプラットフォームの進化：Jenkinsから拡張性に優れたソリューションへ\n\n\n    多くの大手テクノロジー企業と同様に、当社は会社の成長に伴い、当時利用可能なオープンソースや業界標準のソリューションを用いてCIプラットフォームを段階的に構築してきました。2007年、Indeedのエンジニアが20人にも満たなかった頃、チームではHudson（Jenkinsの前身）を使用していました。\n\n\n    20年近くにわたる成長を経た現在、Indeedには数千人のエンジニアが在籍しています。新しい技術が登場するたびに、段階的に改善に取り組み、2011年頃にはJenkinsに移行しました。また、[AWS\n    EC2](https://aws.amazon.com/ec2/)を使用して、ほとんどのワークロードを動的なクラウドワーカーノードに移行することにも成功しました。しかし、Kubernetes時代に突入すると、システムのアーキテクチャが限界に達しました。\n\n\n    Jenkinsのアーキテクチャは、クラウドを前提に設計されていません。Jenkinsは、パイプラインの重要な部分を実行し、特定のタスクをワーカーノードに割り当てる役割を持つ『コントローラー』ノードを使用して動作します（ワーカーノードはある程度水平にスケーリングが可能）。しかし、コントローラーのスケーリングは手動で調整する必要があります。\n\n\n    ジョブが多すぎて1つのコントローラーに収まらない場合、ジョブを複数のコントローラーに手動で分割する必要があります。CloudBees社は、こうしたボトルネックを軽減するための対策として、CloudBees\n    Jenkins Operations\n    Centerをはじめとする、複数のコントローラーを一元管理するソリューションを提案しています。しかし、各コントローラーは依然として脆弱な単一障害点となり、Kubernetes環境での運用には困難があります。ノードのロールアウトやハードウェアの障害などのアクティビティはダウンタイムを引き起こします。\n\n\n    Jenkins自体に内在する技術的な制約に加えて、自社のCIプラットフォームにも、社内プロセスが原因で発生した問題がいくつかありました。たとえば、各リポジトリ内のコードからジョブを生成するためにGroovy\n    Jenkins\n    DSLを使用していたため、各プロジェクトがコピー＆ペーストされた独自のジョブパイプラインを持つことになり、その結果、数百ものバージョンが生成され、メンテナンスや更新が困難になりました。Indeedのエンジニアリング文化は柔軟性を重視し、チームが別々のリポジトリで作業することを許容していますが、その柔軟性により、チームは定期的にメンテナンスを行わなければならず、多大な時間を費やさせる負担要因となっていました。\n\n\n    こうした技術的負債を認識した当社は、「[Golden\n    Pathパターン](https://tag-app-delivery.cncf.io/whitepapers/platforms/)（英語）」に目を向けました。このパターンは、柔軟性を保ちながら、アップデートを簡素化し、プロジェクト間で運用の一貫性を促進するための標準的な手順を提供するものです。\n\n\n    IndeedのCIプラットフォームチームは11人ほどのエンジニアで構成されており、決して規模は大きくないものの、サポートリクエストへの対応、アップグレードやメンテナンスの実施、そしてグローバル企業としての常時サポート体制の確保を通じて、数千人のユーザーサポートにあたっています。\n\n\n    当社のチームは、GitLabインスタンスだけでなく、アーティファクトサーバーや共有ビルドコード、さらに複数のカスタムコンポーネントを含むCIプラットフォーム全体をサポートしているため、業務量は非常に多岐にわたります。そのため、既存のリソースを最大限に活用し、課題に対処する計画が必要でした。\n\n\n    ## GitLab CIへの移行\n\n\n    主要なステークホルダーとの慎重な設計レビューを経て、当社は全社的にJenkinsからGitLab CIへ移行することを決定しました。GitLab\n    CIを選んだ主な理由は次のとおりです。\n\n\n    - すでにGitLabをソースコード管理に使用していたため。\n\n    - GitLabは、当社がCIに求める機能をすべて備えた包括的なソリューションであるため。\n\n    - GitLab CIの設計は拡張性に優れ、クラウドにも対応しているため。\n\n    - GitLab CIは、テンプレートを拡張して新たなテンプレートを作成できるという点が、当社の「Golden Path」戦略と合致していたため。\n\n    - GitLabがオープンソースソフトウェアであり、さらにGitLabチームが当社の修正提案に常に協力的であったことから、柔軟性と安心感を得られたため。\n\n\n    GitLab CIプラットフォームの一般提供を正式に発表した時点で、すでに全ビルドの23%がGitLab\n    CI上で行われていました。これは、個々のユーザーの自主的な取り組みや早期導入者のおかげです。\n\n\n    しかし、移行の課題は「ロングテール」にありました。Jenkinsには多くのカスタムビルドが存在するため、自動移行ツールはほとんどのチームに適用できませんでした。新しいシステムの利点の多くは、旧システムを完全に停止（0%）にするまで実現しません。そうして初めてハードウェアを停止し、CloudBeesのライセンス費用を削減できるようになるのです。\n\n\n    ## 機能の同等性とゼロからの再出発の利点\n\n\n    Indeedでは多様な技術をサポートしていますが、最も一般的な言語はJava、Python、JavaScriptです。これらの言語は、ライブラリの構築、デプロイ可能なサービス（ウェブサービスやアプリケーションなど）、およびcronジョブ（データレイク内のデータセットを構築するような、定期的に実行されるプロセス）を作成するために使用されます。これらの言語は、Javaライブラリ、Pythonのcronジョブ、JavaScriptのウェブアプリケーションといったプロジェクトタイプのマトリックスを形成しており、Jenkinsではそれぞれに対して事前定義されたスケルトンがありました。そのため、これらすべてのプロジェクトタイプに対応する「Golden\n    Path」テンプレートをGitLab CIでも作成する必要がありました。\n\n\n    ほとんどのユーザーは推奨されたパスをそのまま使用できましたが、カスタマイズが必要な場合でも「Golden\n    Path」は有用な出発点になりました。必要な部分だけを調整しながら、将来的には一元管理されたテンプレートが更新されるたびに、その利点を享受することができます。\n\n\n    当社はすぐに、カスタマイズが必要なユーザーでさえ「Golden\n    Path」の採用に前向きであり、少なくとも試用を望んでいることがわかりました。もし以前のカスタマイズが必要であれば、後から追加することができたからです。これは驚くべき結果でした。大幅なカスタマイズに投資してきたチームはそれを手放すことに抵抗があるだろうと思っていましたが、大多数のチームはもはやそれを気にしなくなっていたのです。これにより、多くのプロジェクトを非常に迅速に移行することができました。プロジェクトに「Golden\n    Path」（インクルードを含む6行ほどの小さなファイル）を追加するだけで、あとは各チームがそれを活用して進めることができました。\n\n\n    ## インナーソースによる救済\n\n\n    CIプラットフォームチームは、「外部からのコントリビュートを優先する」というポリシーを採用し、社員全体の参加を促進しました。このアプローチは「インナーソース」と呼ばれることもあります。私たちは、外部からのコントリビュート（自分たちのチーム以外からのコントリビュート）を促進するために、テストやドキュメントを作成しました。カスタマイズを望むチームは、そのカスタマイズを、Golden\n    Pathに組み込んで、機能フラグを使用して共有できるようになりました。これにより、カスタマイズを行ったチームは自分たちの作業を他のチームと共有できるようになっただけでなく、そのカスタマイズがCIプラットフォームチームのコードベースの一部になったため、将来的にそのカスタマイズが壊されないことを保証できるようになりました。\n\n\n    この取り組みには、特定のチームが必要な機能を求めて待機することなく、自分たちでその開発に取り組めるようになったという利点もありました。たとえば、「その機能は数週間後に実装する予定ですが、もし早めに必要であれば、ぜひコントリビュートしてください」と伝えることができます。結果的に、同等性に必要な多くのコア機能がこのようなアプローチで開発され、チームのリソースでは実現できないほど迅速かつ質の高い形で提供されました。このモデルがなければ、移行は成功しなかったでしょう。\n\n\n    ## 予定より早く、予算内で達成\n\n\n    チームのCloudBeesライセンスは2024年4月1日に期限切れになりました。これに伴い、完全移行を達成するための挑戦的な目標を設定しました。当時、ビルド全体の80%（全プロジェクトの60%）でCIにJenkinsが使用されていたことを考えると、この目標は特に野心的だったと言えます。つまり、2,000以上の[Jenkinsfiles](https://www.jenkins.io/doc/book/pipeline/jenkinsfile/)を新たに書き直すか、Golden\n    Pathのテンプレートに置き換える必要があったのです。\n\n\n    この目標を達成するために、チームはドキュメントやサンプルコードを提供し、可能な限り機能を実装したほか、ユーザーが機能を追加できるように支援しました。\n\n\n    また、定期的なオフィスアワーを設け、誰でも質問をしたり、移行の支援を求めたりできるようにしました。さらに、移行に関連するサポートの質問を、一部を除いて他のどの質問よりも優先しました。CIプラットフォームはGitLab\n    CIのエキスパートとなり、その専門知識をチーム内および組織全体で共有しました。\n\n\n    自動移行はほとんどのプロジェクトでは実現できませんでしたが、カスタマイズがまれな比較的小規模なプロジェクトには有効であることがわかりました。チームはSourcegraphの一括変更キャンペーンを作成し、数百のプロジェクトを移行するためにマージリクエストを送信しました。そして、ユーザーにその承認を促しました。\n\n\n    ユーザーからの成功事例を広く共有し、ユーザーがGolden Pathに新しい機能を追加するたびに、「GitLab\n    CIに移行するとこれらの機能が無料で利用できる」と宣伝しました。これらの機能には、ビルトインのセキュリティやコンプライアンススキャン、CIビルドのSlack通知、他の内部システムとのインテグレーションなどがあります。\n\n\n    さらに、積極的な「screamテスト」キャンペーンを実施しました。しばらく実行されていない、または成功していないJenkinsジョブを自動的に無効にし、必要であれば再度有効にできるとユーザーに通知しました。これは、手間をかけずに実際に必要なジョブを特定できる効果的なアプローチでした。前回のCI移行（JenkinsからJenkinsへの移行）以降、一度も実行されていない数千のジョブがあり、これらをほぼすべて安全に無視できることがわかりました。\n\n\n    2024年1月には、例外が明示的に要求されない限り、すべてのJenkinsコントローラーが読み取り専用（ビルド不可）になると発表しました。コントローラーに関する所有情報が大幅に改善され、組織の構造に合致していたため、ジョブよりもコントローラーに焦点を当てることが合理的でした。コントローラーのリストはジョブのリストよりもはるかに管理しやすいものでした。\n\n\n    例外を認めるために、ユーザーにはスプレッドシートでコントローラーを見つけ、その横に連絡先情報を入力してもらうよう依頼しました。これにより、フォローアップできる利害関係者の最新リストを確実に取得できるだけでなく、ユーザーからも絶対に必要なジョブを明確に知らせてもらうことができました。ピーク時には約400ものコントローラーがありましたが、1月には220に減少し、そのうち例外を必要とするのは54のコントローラーだけでした（そのうちいくつかはチームで所有し、テストやカナリアのために使用していました）。\n\n\n    ![Indeed -\n    Jenkinsコントローラー（個数）の推移グラフ](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099357/Blog/Content%20Images/Blog/Content%20Images/image2_aHR0cHM6_1750099357392.png)\n\n\n    私たちは、約50チームの管理可能なリストをチーム内で分担し、各チームの移行の進捗状況を聞き取りし始めました。1月、2月中に、そして一部のチームは2月28日までに私たちの支援なしで移行を完了させる予定であり、他のチームはその時点までのプロジェクト廃止を計画していることが判明しました。そして、ごく少数のチームが期限内に完了できるか非常に心配していました。\n\n\n    私たちはこの少数のチームと協力し、きめ細やかな個別対応サービスを提供しました。私たちには移行を代行する上での専門知識が不足しているものの、そのチームの特定分野の専門家と協力できることを説明しました。一部のプロジェクトでは、私たちがコードを書き、そのチームがレビューを行い、他のプロジェクトではそのチームがコードを書き、私たちがレビューを行いました。最終的に、すべての努力が実を結び、8か月前に宣言した日に、Jenkinsを無事に廃止することができました。\n\n\n    ## 成果：CI効率とユーザー満足度の向上\n\n\n    Jenkins\n    CIプラットフォームのピーク時には、1日あたり14,000以上のパイプラインが実行され、数千のプロジェクトをサポートしていました。現在、GitLab\n    CIプラットフォームは、1日あたり40,000以上のパイプラインを処理し、通常は25,000以上のパイプラインが日常的に稼働しています。各パイプラインのジョブごとの増分コストはJenkinsと同程度ですが、コントローラーを実行するためのハードウェアのオーバーヘッドがなくなりました。これらのコントローラーは、単一障害点であり、スケールの制限要因でもあったため、プラットフォームを人工的にセグメント化せざるを得ませんでした。正確な比較は難しいものの、このオーバーヘッドがなくなったことで、CIハードウェアコストは10～20%削減できたと考えています。さらに、GitLab\n    CIはクラウド上で自動的にスケールし、複数の可用性ゾーンで動作する耐障害性を備えているほか、テンプレート言語には優れた公開ドキュメントがあるため、サポートの負担も軽減されています。\n\n\n    特筆すべきもうひとつの利点としては、現在、Golden\n    Pathの採用率が70%を超えていることです。これにより、私たちが改善策をロールアウトすれば、Indeedの5,000以上のプロジェクトは、特別な操作をせずにすぐにそのメリットを享受できるようになることがわかりました。この結果、一部のジョブをよりコスト効率の高いARM64インスタンスに移行したり、ユーザーのビルドイメージをより簡単に更新したりできるようになりました。また、他のコスト削減の機会をより適切に管理することも可能になりました。最も重要なことは、ユーザーが新しいプラットフォームに満足していることです。\n\n\n    __著者について__：\n\n    *Carl\n    Myers氏はカリフォルニア州サクラメント在住で、Indeed社のCIプラットフォームチームのマネージャーを務めています。Carl氏は、約20年にわたるキャリアを通じて、大小さまざまな企業で、エンジニアのニーズを満たし、その能力を引き出すための社内ツールやデベロッパー向けプラットフォームの構築に尽力してきました。*\n\n\n    **謝辞**：\n\n    *この移行プロジェクトは、Tron Nedelea氏、Eddie Huang氏、Vivek Nynaru氏、Carlos Gonzalez氏、Lane\n    Van\n    Elderen氏、そしてCIプラットフォームチームの他のメンバーの尽力なしには実現できませんでした。チームはまた、プロジェクト全体を通じて、合意やリソースの確保、そして社内全体の調整に尽力していただいたDeepak\n    Bitragunta氏とIrina\n    Tyree氏のリーダーシップに、特に感謝しております。最後に、コード、フィードバック、バグレポートに貢献し、プロジェクトの移行を支援してくださったIndeed社の皆様に感謝申し上げます。*\n\n\n    **この記事は、Indeedエンジニアリングブログに掲載された[「How Indeed Replaced Its CI Platform with\n    GitLab\n    CI」](https://engineering.indeedblog.com/blog/2024/08/indeed-gitlab-ci-migration/)の編集版です。**\n  category: customer-stories\n  tags:\n    - customers\n    - CI/CD\n    - user stories\n    - DevSecOps platform\n  updatedDate: '2025-01-10'\nconfig:\n  slug: how-indeed-transformed-its-ci-platform-with-gitlab\n  featured: true\n  template: BlogPost\n",{"title":5,"description":17,"ogTitle":5,"ogDescription":17,"noIndex":33,"ogImage":19,"ogUrl":34,"ogSiteName":35,"ogType":36,"canonicalUrls":34},false,"https://about.gitlab.com/blog/how-indeed-transformed-its-ci-platform-with-gitlab","https://about.gitlab.com","article","ja-jp/blog/how-indeed-transformed-its-ci-platform-with-gitlab",[22,39,40,41],"cicd","user-stories","devsecops-platform",[22,23,24,25],"ihZvvBydoAZ1fR9YXrg2sog5r95Xc8XhAPH1HFcVn7E",{"data":45},{"logo":46,"freeTrial":51,"sales":56,"login":61,"items":66,"search":374,"minimal":407,"duo":424,"switchNav":433,"pricingDeployment":444},{"config":47},{"href":48,"dataGaName":49,"dataGaLocation":50},"/ja-jp/","gitlab logo","header",{"text":52,"config":53},"無料トライアルを開始",{"href":54,"dataGaName":55,"dataGaLocation":50},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp&glm_content=default-saas-trial/","free trial",{"text":57,"config":58},"お問い合わせ",{"href":59,"dataGaName":60,"dataGaLocation":50},"/ja-jp/sales/","sales",{"text":62,"config":63},"サインイン",{"href":64,"dataGaName":65,"dataGaLocation":50},"https://gitlab.com/users/sign_in/","sign in",[67,94,190,195,296,356],{"text":68,"config":69,"cards":71},"プラットフォーム",{"dataNavLevelOne":70},"platform",[72,78,86],{"title":68,"description":73,"link":74},"DevSecOpsに特化したインテリジェントオーケストレーションプラットフォーム",{"text":75,"config":76},"プラットフォームを探索",{"href":77,"dataGaName":70,"dataGaLocation":50},"/ja-jp/platform/",{"title":79,"description":80,"link":81},"GitLab Duo Agent Platform","ソフトウェアライフサイクル全体を支えるエージェント型AI",{"text":82,"config":83},"GitLab Duoのご紹介",{"href":84,"dataGaName":85,"dataGaLocation":50},"/ja-jp/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":87,"description":88,"link":89},"GitLabが選ばれる理由","エンタープライズがGitLabを選ぶ主な理由をご覧ください",{"text":90,"config":91},"詳細はこちら",{"href":92,"dataGaName":93,"dataGaLocation":50},"/ja-jp/why-gitlab/","why gitlab",{"text":95,"left":14,"config":96,"link":98,"lists":102,"footer":172},"製品",{"dataNavLevelOne":97},"solutions",{"text":99,"config":100},"すべてのソリューションを表示",{"href":101,"dataGaName":97,"dataGaLocation":50},"/ja-jp/solutions/",[103,127,150],{"title":104,"description":105,"link":106,"items":111},"自動化","CI/CDと自動化でデプロイを加速",{"config":107},{"icon":108,"href":109,"dataGaName":110,"dataGaLocation":50},"AutomatedCodeAlt","/ja-jp/solutions/delivery-automation/","automated software delivery",[112,115,118,123],{"text":23,"config":113},{"href":114,"dataGaLocation":50,"dataGaName":23},"/ja-jp/solutions/continuous-integration/",{"text":79,"config":116},{"href":84,"dataGaLocation":50,"dataGaName":117},"gitlab duo agent platform - product menu",{"text":119,"config":120},"ソースコード管理",{"href":121,"dataGaLocation":50,"dataGaName":122},"/ja-jp/solutions/source-code-management/","Source Code Management",{"text":124,"config":125},"自動化されたソフトウェアデリバリー",{"href":109,"dataGaLocation":50,"dataGaName":126},"Automated software delivery",{"title":128,"description":129,"link":130,"items":135},"セキュリティ","セキュリティを犠牲にすることなくコード作成を高速化",{"config":131},{"href":132,"dataGaName":133,"dataGaLocation":50,"icon":134},"/ja-jp/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[136,140,145],{"text":137,"config":138},"アプリケーションセキュリティテスト",{"href":132,"dataGaName":139,"dataGaLocation":50},"Application security testing",{"text":141,"config":142},"ソフトウェアサプライチェーンの安全性",{"href":143,"dataGaLocation":50,"dataGaName":144},"/ja-jp/solutions/supply-chain/","Software supply chain security",{"text":146,"config":147},"ソフトウェアコンプライアンス",{"href":148,"dataGaName":149,"dataGaLocation":50},"/ja-jp/solutions/software-compliance/","software compliance",{"title":151,"link":152,"items":157},"測定",{"config":153},{"icon":154,"href":155,"dataGaName":156,"dataGaLocation":50},"DigitalTransformation","/ja-jp/solutions/visibility-measurement/","visibility and measurement",[158,162,167],{"text":159,"config":160},"可視性と測定",{"href":155,"dataGaLocation":50,"dataGaName":161},"Visibility and Measurement",{"text":163,"config":164},"バリューストリーム管理",{"href":165,"dataGaLocation":50,"dataGaName":166},"/ja-jp/solutions/value-stream-management/","Value Stream Management",{"text":168,"config":169},"分析とインサイト",{"href":170,"dataGaLocation":50,"dataGaName":171},"/ja-jp/solutions/analytics-and-insights/","Analytics and insights",{"title":173,"items":174},"GitLabが活躍する場所",[175,180,185],{"text":176,"config":177},"大企業",{"href":178,"dataGaLocation":50,"dataGaName":179},"/ja-jp/enterprise/","enterprise",{"text":181,"config":182},"スモールビジネス",{"href":183,"dataGaLocation":50,"dataGaName":184},"/ja-jp/small-business/","small business",{"text":186,"config":187},"公共部門",{"href":188,"dataGaLocation":50,"dataGaName":189},"/ja-jp/solutions/public-sector/","public sector",{"text":191,"config":192},"価格",{"href":193,"dataGaName":194,"dataGaLocation":50,"dataNavLevelOne":194},"/ja-jp/pricing/","pricing",{"text":196,"config":197,"link":199,"lists":203,"feature":283},"リソース",{"dataNavLevelOne":198},"resources",{"text":200,"config":201},"すべてのリソースを表示",{"href":202,"dataGaName":198,"dataGaLocation":50},"/ja-jp/resources/",[204,237,255],{"title":205,"items":206},"はじめに",[207,212,217,222,227,232],{"text":208,"config":209},"インストール",{"href":210,"dataGaName":211,"dataGaLocation":50},"/ja-jp/install/","install",{"text":213,"config":214},"クイックスタートガイド",{"href":215,"dataGaName":216,"dataGaLocation":50},"/ja-jp/get-started/","quick setup checklists",{"text":218,"config":219},"学ぶ",{"href":220,"dataGaLocation":50,"dataGaName":221},"https://university.gitlab.com/","learn",{"text":223,"config":224},"製品ドキュメント",{"href":225,"dataGaName":226,"dataGaLocation":50},"https://docs.gitlab.com/ja-jp/","product documentation",{"text":228,"config":229},"ベストプラクティスビデオ",{"href":230,"dataGaName":231,"dataGaLocation":50},"/ja-jp/getting-started-videos/","best practice videos",{"text":233,"config":234},"インテグレーション",{"href":235,"dataGaName":236,"dataGaLocation":50},"/ja-jp/integrations/","integrations",{"title":238,"items":239},"検索する",[240,245,250],{"text":241,"config":242},"お客様成功事例",{"href":243,"dataGaName":244,"dataGaLocation":50},"/ja-jp/customers/","customer success stories",{"text":246,"config":247},"ブログ",{"href":248,"dataGaName":249,"dataGaLocation":50},"/ja-jp/blog/","blog",{"text":251,"config":252},"リモート",{"href":253,"dataGaName":254,"dataGaLocation":50},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":256,"items":257},"つなげる",[258,263,268,273,278],{"text":259,"config":260},"GitLabサービス",{"href":261,"dataGaName":262,"dataGaLocation":50},"/ja-jp/services/","services",{"text":264,"config":265},"コミュニティ",{"href":266,"dataGaName":267,"dataGaLocation":50},"/community/","community",{"text":269,"config":270},"フォーラム",{"href":271,"dataGaName":272,"dataGaLocation":50},"https://forum.gitlab.com/","forum",{"text":274,"config":275},"イベント",{"href":276,"dataGaName":277,"dataGaLocation":50},"/events/","events",{"text":279,"config":280},"パートナー",{"href":281,"dataGaName":282,"dataGaLocation":50},"/ja-jp/partners/","partners",{"background":284,"textColor":285,"text":286,"image":287,"link":291},"#2f2a6b","#fff","ソフトウェア開発の未来への洞察",{"altText":288,"config":289},"ソースプロモカード",{"src":290},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":292,"config":293},"最新情報を読む",{"href":294,"dataGaName":295,"dataGaLocation":50},"/ja-jp/the-source/","the source",{"text":297,"config":298,"lists":300},"会社情報",{"dataNavLevelOne":299},"company",[301],{"items":302},[303,308,314,316,321,326,331,336,341,346,351],{"text":304,"config":305},"GitLabについて",{"href":306,"dataGaName":307,"dataGaLocation":50},"/ja-jp/company/","about",{"text":309,"config":310,"footerGa":313},"採用情報",{"href":311,"dataGaName":312,"dataGaLocation":50},"/jobs/","jobs",{"dataGaName":312},{"text":274,"config":315},{"href":276,"dataGaName":277,"dataGaLocation":50},{"text":317,"config":318},"経営陣",{"href":319,"dataGaName":320,"dataGaLocation":50},"/company/team/e-group/","leadership",{"text":322,"config":323},"チーム",{"href":324,"dataGaName":325,"dataGaLocation":50},"/company/team/","team",{"text":327,"config":328},"ハンドブック",{"href":329,"dataGaName":330,"dataGaLocation":50},"https://handbook.gitlab.com/","handbook",{"text":332,"config":333},"投資家向け情報",{"href":334,"dataGaName":335,"dataGaLocation":50},"https://ir.gitlab.com/","investor relations",{"text":337,"config":338},"トラストセンター",{"href":339,"dataGaName":340,"dataGaLocation":50},"/ja-jp/security/","trust center",{"text":342,"config":343},"AI Transparency Center",{"href":344,"dataGaName":345,"dataGaLocation":50},"/ja-jp/ai-transparency-center/","ai transparency center",{"text":347,"config":348},"ニュースレター",{"href":349,"dataGaName":350,"dataGaLocation":50},"/company/contact/#contact-forms","newsletter",{"text":352,"config":353},"プレス",{"href":354,"dataGaName":355,"dataGaLocation":50},"/press/","press",{"text":57,"config":357,"lists":358},{"dataNavLevelOne":299},[359],{"items":360},[361,364,369],{"text":57,"config":362},{"href":59,"dataGaName":363,"dataGaLocation":50},"talk to sales",{"text":365,"config":366},"サポートを受ける",{"href":367,"dataGaName":368,"dataGaLocation":50},"https://support.gitlab.com","support portal",{"text":370,"config":371},"カスタマーポータル",{"href":372,"dataGaName":373,"dataGaLocation":50},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":375,"login":376,"suggestions":383},"閉じる",{"text":377,"link":378},"リポジトリとプロジェクトを検索するには、次にログインします",{"text":379,"config":380},"GitLab.com",{"href":64,"dataGaName":381,"dataGaLocation":382},"search login","search",{"text":384,"default":385},"提案",[386,388,393,395,399,403],{"text":79,"config":387},{"href":84,"dataGaName":79,"dataGaLocation":382},{"text":389,"config":390},"コード提案（AI）",{"href":391,"dataGaName":392,"dataGaLocation":382},"/ja-jp/solutions/code-suggestions/","Code Suggestions (AI)",{"text":23,"config":394},{"href":114,"dataGaName":23,"dataGaLocation":382},{"text":396,"config":397},"GitLab on AWS",{"href":398,"dataGaName":396,"dataGaLocation":382},"/ja-jp/partners/technology-partners/aws/",{"text":400,"config":401},"GitLab on Google Cloud",{"href":402,"dataGaName":400,"dataGaLocation":382},"/ja-jp/partners/technology-partners/google-cloud-platform/",{"text":404,"config":405},"GitLabを選ぶ理由",{"href":92,"dataGaName":406,"dataGaLocation":382},"Why GitLab?",{"freeTrial":408,"mobileIcon":412,"desktopIcon":417,"secondaryButton":420},{"text":52,"config":409},{"href":410,"dataGaName":55,"dataGaLocation":411},"https://gitlab.com/-/trials/new/","nav",{"altText":413,"config":414},"GitLabアイコン",{"src":415,"dataGaName":416,"dataGaLocation":411},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":413,"config":418},{"src":419,"dataGaName":416,"dataGaLocation":411},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":205,"config":421},{"href":422,"dataGaName":423,"dataGaLocation":411},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp/get-started/","get started",{"freeTrial":425,"mobileIcon":429,"desktopIcon":431},{"text":426,"config":427},"GitLab Duoの詳細について",{"href":84,"dataGaName":428,"dataGaLocation":411},"gitlab duo",{"altText":413,"config":430},{"src":415,"dataGaName":416,"dataGaLocation":411},{"altText":413,"config":432},{"src":419,"dataGaName":416,"dataGaLocation":411},{"button":434,"mobileIcon":439,"desktopIcon":441},{"text":435,"config":436},"/switch",{"href":437,"dataGaName":438,"dataGaLocation":411},"#contact","switch",{"altText":413,"config":440},{"src":415,"dataGaName":416,"dataGaLocation":411},{"altText":413,"config":442},{"src":443,"dataGaName":416,"dataGaLocation":411},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":445,"mobileIcon":450,"desktopIcon":452},{"text":446,"config":447},"料金ページに戻る",{"href":193,"dataGaName":448,"dataGaLocation":411,"icon":449},"back to pricing","GoBack",{"altText":413,"config":451},{"src":415,"dataGaName":416,"dataGaLocation":411},{"altText":413,"config":453},{"src":419,"dataGaName":416,"dataGaLocation":411},{"title":455,"button":456,"config":461},"エージェント型AIがソフトウェア配信をどのように変革するかをご覧ください",{"text":457,"config":458},"GitLab Transcendを今すぐ視聴",{"href":459,"dataGaName":460,"dataGaLocation":50},"/ja-jp/events/transcend/virtual/","transcend event",{"layout":462,"icon":463,"disabled":14},"release","AiStar",{"data":465},{"text":466,"source":467,"edit":473,"contribute":478,"config":483,"items":488,"minimal":690},"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,534,586,629,656],{"title":191,"links":490,"subMenu":505},[491,495,500],{"text":492,"config":493},"プランの表示",{"href":193,"dataGaName":494,"dataGaLocation":472},"view plans",{"text":496,"config":497},"Premiumを選ぶ理由",{"href":498,"dataGaName":499,"dataGaLocation":472},"/ja-jp/pricing/premium/","why premium",{"text":501,"config":502},"Ultimateを選ぶ理由",{"href":503,"dataGaName":504,"dataGaLocation":472},"/ja-jp/pricing/ultimate/","why ultimate",[506],{"title":57,"links":507},[508,510,512,514,519,524,529],{"text":57,"config":509},{"href":59,"dataGaName":60,"dataGaLocation":472},{"text":365,"config":511},{"href":367,"dataGaName":368,"dataGaLocation":472},{"text":370,"config":513},{"href":372,"dataGaName":373,"dataGaLocation":472},{"text":515,"config":516},"ステータス",{"href":517,"dataGaName":518,"dataGaLocation":472},"https://status.gitlab.com/","status",{"text":520,"config":521},"利用規約",{"href":522,"dataGaName":523,"dataGaLocation":472},"/terms/","terms of use",{"text":525,"config":526},"プライバシーに関する声明",{"href":527,"dataGaName":528,"dataGaLocation":472},"/ja-jp/privacy/","privacy statement",{"text":530,"config":531},"Cookie 優先設定",{"dataGaName":532,"dataGaLocation":472,"id":533,"isOneTrustButton":14},"cookie preferences","ot-sdk-btn",{"title":95,"links":535,"subMenu":544},[536,540],{"text":537,"config":538},"DevSecOpsプラットフォーム",{"href":77,"dataGaName":539,"dataGaLocation":472},"devsecops platform",{"text":541,"config":542},"AI支援開発",{"href":84,"dataGaName":543,"dataGaLocation":472},"ai-assisted development",[545],{"title":546,"links":547},"トピック",[548,551,556,561,566,571,576,581],{"text":23,"config":549},{"href":550,"dataGaName":39,"dataGaLocation":472},"/ja-jp/topics/ci-cd/",{"text":552,"config":553},"GitOps",{"href":554,"dataGaName":555,"dataGaLocation":472},"/ja-jp/topics/gitops/","gitops",{"text":557,"config":558},"DevOps",{"href":559,"dataGaName":560,"dataGaLocation":472},"/ja-jp/topics/devops/","devops",{"text":562,"config":563},"バージョン管理",{"href":564,"dataGaName":565,"dataGaLocation":472},"/ja-jp/topics/version-control/","version control",{"text":567,"config":568},"DevSecOps",{"href":569,"dataGaName":570,"dataGaLocation":472},"/ja-jp/topics/devsecops/","devsecops",{"text":572,"config":573},"クラウドネイティブ",{"href":574,"dataGaName":575,"dataGaLocation":472},"/ja-jp/topics/cloud-native/","cloud native",{"text":577,"config":578},"コーディングのためのAI",{"href":579,"dataGaName":580,"dataGaLocation":472},"/ja-jp/topics/devops/ai-for-coding/","ai for coding",{"text":582,"config":583},"エージェント型AI",{"href":584,"dataGaName":585,"dataGaLocation":472},"/ja-jp/topics/agentic-ai/","agentic ai",{"title":587,"links":588},"ソリューション",[589,592,594,599,603,606,609,612,614,616,619,624],{"text":137,"config":590},{"href":132,"dataGaName":591,"dataGaLocation":472},"Application Security Testing",{"text":124,"config":593},{"href":109,"dataGaName":110,"dataGaLocation":472},{"text":595,"config":596},"アジャイル開発",{"href":597,"dataGaName":598,"dataGaLocation":472},"/ja-jp/solutions/agile-delivery/","agile delivery",{"text":600,"config":601},"SCM",{"href":121,"dataGaName":602,"dataGaLocation":472},"source code management",{"text":23,"config":604},{"href":114,"dataGaName":605,"dataGaLocation":472},"continuous integration & delivery",{"text":163,"config":607},{"href":165,"dataGaName":608,"dataGaLocation":472},"value stream management",{"text":552,"config":610},{"href":611,"dataGaName":555,"dataGaLocation":472},"/ja-jp/solutions/gitops/",{"text":176,"config":613},{"href":178,"dataGaName":179,"dataGaLocation":472},{"text":181,"config":615},{"href":183,"dataGaName":184,"dataGaLocation":472},{"text":617,"config":618},"公共機関",{"href":188,"dataGaName":189,"dataGaLocation":472},{"text":620,"config":621},"教育",{"href":622,"dataGaName":623,"dataGaLocation":472},"/ja-jp/solutions/education/","education",{"text":625,"config":626},"金融サービス",{"href":627,"dataGaName":628,"dataGaLocation":472},"/ja-jp/solutions/finance/","financial services",{"title":196,"links":630},[631,633,635,637,640,642,644,646,648,650,652,654],{"text":208,"config":632},{"href":210,"dataGaName":211,"dataGaLocation":472},{"text":213,"config":634},{"href":215,"dataGaName":216,"dataGaLocation":472},{"text":218,"config":636},{"href":220,"dataGaName":221,"dataGaLocation":472},{"text":223,"config":638},{"href":225,"dataGaName":639,"dataGaLocation":472},"docs",{"text":246,"config":641},{"href":248,"dataGaName":249,"dataGaLocation":472},{"text":241,"config":643},{"href":243,"dataGaName":244,"dataGaLocation":472},{"text":251,"config":645},{"href":253,"dataGaName":254,"dataGaLocation":472},{"text":259,"config":647},{"href":261,"dataGaName":262,"dataGaLocation":472},{"text":264,"config":649},{"href":266,"dataGaName":267,"dataGaLocation":472},{"text":269,"config":651},{"href":271,"dataGaName":272,"dataGaLocation":472},{"text":274,"config":653},{"href":276,"dataGaName":277,"dataGaLocation":472},{"text":279,"config":655},{"href":281,"dataGaName":282,"dataGaLocation":472},{"title":297,"links":657},[658,660,662,664,666,668,670,674,679,681,683,685],{"text":304,"config":659},{"href":306,"dataGaName":299,"dataGaLocation":472},{"text":309,"config":661},{"href":311,"dataGaName":312,"dataGaLocation":472},{"text":317,"config":663},{"href":319,"dataGaName":320,"dataGaLocation":472},{"text":322,"config":665},{"href":324,"dataGaName":325,"dataGaLocation":472},{"text":327,"config":667},{"href":329,"dataGaName":330,"dataGaLocation":472},{"text":332,"config":669},{"href":334,"dataGaName":335,"dataGaLocation":472},{"text":671,"config":672},"Sustainability",{"href":673,"dataGaName":671,"dataGaLocation":472},"/sustainability/",{"text":675,"config":676},"ダイバーシティ、インクルージョン、ビロンギング（DIB）",{"href":677,"dataGaName":678,"dataGaLocation":472},"/ja-jp/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":337,"config":680},{"href":339,"dataGaName":340,"dataGaLocation":472},{"text":347,"config":682},{"href":349,"dataGaName":350,"dataGaLocation":472},{"text":352,"config":684},{"href":354,"dataGaName":355,"dataGaLocation":472},{"text":686,"config":687},"現代奴隷制の透明性に関する声明",{"href":688,"dataGaName":689,"dataGaLocation":472},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":691},[692,694,697],{"text":520,"config":693},{"href":522,"dataGaName":523,"dataGaLocation":472},{"text":695,"config":696},"Cookieの設定",{"dataGaName":532,"dataGaLocation":472,"id":533,"isOneTrustButton":14},{"text":525,"config":698},{"href":527,"dataGaName":528,"dataGaLocation":472},[700],{"id":701,"title":9,"body":28,"config":702,"content":704,"description":28,"extension":27,"meta":709,"navigation":14,"path":710,"seo":711,"stem":712,"__hash__":713},"blogAuthors/en-us/blog/authors/carl-myers.yml",{"template":703},"BlogAuthor",{"role":705,"name":9,"config":706},"Manager, CI Platform team, Indeed",{"headshot":707,"ctfId":708},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749665044/Blog/Author%20Headshots/image1.jpg","7KelbQ0LsGSGf4TpT0qAlp",{},"/en-us/blog/authors/carl-myers",{},"en-us/blog/authors/carl-myers","KR8A3urTNz09sPXWov7bPjlHz2XZs1obH5SszV-gzGE",[715,729,741],{"content":716,"config":727},{"category":11,"date":717,"authors":718,"title":720,"body":721,"tags":722,"description":725,"heroImage":726},"2026-04-17",[719],"GitLab Japan Team","お客様事例：日立プラントサービス","## 株式会社日立プラントサービスについて\n\n株式会社日立プラントサービスでは、産業プラントや水インフラ、ライフサイエンス分野において、お客さまのデータから価値を創出し、デジタルイノベーションを加速するための、日立の先進的なデジタル技術を活用したソリューション・サービス・テクノロジーである「Lumada」を推進しています。\n\n## 株式会社日立プラントサービスの挑戦\n\n同社では、開発現場において、「人財強化」、「品質向上・維持」、「国内での情報管理」、「開発プロセス標準化」という4つの課題に直面していました。プロジェクトごとに異なるツールが乱立することで教育コストが増大し、セキュリティチェックの属人化による品質のバラつきも懸念されていました。また、生産性向上のカギを握る生成AI活用では、医療データや重要インフラ情報などの機微情報を扱う事業特性上、データを社外や海外へ送信することに強い懸念があり、導入の大きな足かせとなっていました。\n\n## GitLabの活用方法\n\n同社は、これらの課題解決に取り組むため、開発基盤にGitLabを選定。開発の最適化とAI活用、情報管理の徹底という3つのポイントを重視し、担当者個人の生産性向上に加えてプロセス全体を最適化し、さらに機微情報の海外流出を確実に防げる仕組みであることを評価しました。パートナーに選定したグループのITサービス企業である株式会社日立システムズは、統合運用サービスで培ったノウハウをGitLabへと展開し、次世代型の開発基盤を構築。開発現場で利用されていた複数のツールをGitLabへと一本化しました。こうして開発プロセスの標準化を図るとともに、教育コストを低減し、組織全体でスムーズにノウハウを共有できるようになりました。\n\n中でも、高度なセキュリティ／コンプライアンスを備えながら、先進的なAIを活用できるようにしたアーキテクチャはグループ内外で高く評価されました。新たな開発基盤は、国内リージョンのAWS環境でSelf-Managed版のGitLabを稼働させ、生成AIのClaudeと連携しています。これにより、パブリッククラウドを使ってもデータを国内にとどめ、セキュアな状態で活用できるローカルLLM環境を実現しました。さらに、GitLabのAI機能であるGitLab Duoを採用し、高い機密性のもとでコードレビューの自動化やコード提案、チャット機能による開発支援が可能になりました。CI/CDパイプラインには自動セキュリティスキャンを実装。AIとDevSecOps環境を最大限に活用することで、開発スピードを高めながら脆弱性を早期発見できるようになったのです。\n\n今後は、AIコーディングを開発ライフサイクル全体へと本格導入し、開発者の負担軽減と組織全体の生産性を大幅に向上させる計画です。大切なのは、単なるツールの導入で終わらせないこと。現場の要望に合わせて環境設計を行い、定着化に向けた勉強会や問い合わせ対応などの運用支援を含め、組織に新しい文化を浸透させながら、開発現場のモダナイズを進めていきたい考えです。\n\n両社は、この新たな開発基盤の成功をグループ全体へと横展開し、高品質なデジタルサービスを通じて、お客さまとの価値協創をさらに加速させる方針です。\n\n\\*本内容は2025年11月当時の情報をもとに制作しております\n\n\n\n## ▶️事例PDFを[無料でダウンロードする](\u003Chttps://res.cloudinary.com/about-gitlab-com/image/upload/v1776046067/lnw1a4zv8yl8kyjrqh42.pdf>)\n",[723,23,22,567,282,724,24],"AI/ML","security","DevSecOpsプラットフォームとローカルLLMで、セキュアなAI活用を実現した事例をご紹介","https://res.cloudinary.com/about-gitlab-com/image/upload/v1776046018/kwwrygr2bdhjcfheugfq.jpg",{"featured":14,"template":15,"slug":728},"epic-tokyo-2025-hitachi-hps",{"content":730,"config":739},{"title":731,"description":732,"authors":733,"heroImage":734,"date":735,"body":736,"category":11,"tags":737},"お客様事例：ピクシブ","生産性のオーバーヘッドを極小化する開発支援ツール戦略を加速する事例をご紹介。",[719],"https://res.cloudinary.com/about-gitlab-com/image/upload/v1770267303/xwn82trbh5iaf44e1gp3.jpg","2026-02-17","## ピクシブについて\n\nピクシブ株式会社は、「創作活動を、もっと楽しくする。」というミッションを掲げる企業です。2007年にリリースされたイラスト、マンガ、小説作品の投稿プラットフォーム「pixiv」を中核に、創作ドメインに特化した事業を多角的に展開。登録ユーザー数は1億を超え、海外ユーザー比率も高いグローバルなプラットフォームへと成長しました。\n\n## ピクシブの挑戦\n\n創業以来、内製による開発を継続する同社に数年前、開発サイクルにおける手戻りや待ち時間などのオーバーヘッドを可視化する機会が訪れました。社内で2番目に大きなプロジェクトのバリューストリームを分析したところ、開発時間全体の約19%がオーバーヘッドに占められていることが判明したのです。\n\n## GitLabの活用方法\n\n### ソリューション：GitLab Ultimate、GitLab Duo Enterprise\n\n面白いのは、この数字を単なる損失やネガティブな問題とは捉えず、「改善すれば成果が約束されている」、「19%の伸びしろがある」とポジティブに解釈したこと。オーバーヘッドを抑制しながら、組織規模の拡大に伴う開発効率の鈍化や、高まるセキュリティ脅威、ナレッジの散逸といった課題に対し、「デリバリー能力そのものの向上」を目指す取り組みが始まりました。ソースコード管理だけでなく、設計情報やセキュリティ機能も一元化できる「GitLab Ultimate」を核とした、シフトレフトへの移行です。\n\n開発ライフサイクル全体の基盤整備に向け、「3本の柱」が掲げられました。まずは、「健康診断のお医者さん」になること。チームの健康状態＝バリューストリームを定期的に診断し、改善への処方箋を出す役割です。次に、「ガードレール整備の職人」であること。セキュリティスキャンやインスペクション設定を最適化し、安全な開発環境を整える役割を担います。最後に、「コンテキストを集める推進リーダー」の務めを果たすこと。最新の支援ツールが正しく機能するよう、情報を整備します。\n導入戦略では「点・線・面」のアプローチを採用しました。まずは特定のプロジェクト＝点で成功事例を作り、それを複数の事例＝線へと展開し、最終的に全社的な標準＝面とする段階的な展開です。\n\nこれまでの大きな成果のひとつは、「部分最適の罠」を理解できたことです。検証の過程で、「特定工程の速度を2倍にしても、次の工程の負荷が倍増してボトルネックが発生し、全体のスループットは上がらない」という事実が浮き彫りになりました。これにより、単なるツールの導入ではなく、バリューストリーム全体を俯瞰した最適化が不可欠であるという認識が広がりました。\n\n開発支援機能を最適に使用するための基盤作りも進んでいます。従来、社内のWikiツールでやり取りしていた情報を、GitLab上のイシューやプロジェクト管理に集約。開発の背景やコンテキストを含めて一元的に把握できるようにすることで、支援ツールによる補助の精度や信頼性が向上しました。\n\n今後は、現在「線」になりつつある取り組みを、具体的なカバレッジ目標を持った「面」へと展開します。19%というオーバーヘッドをわずかでも削減することが狙いです。中でも、支援ツール活用のための環境整備に注力します。今後の開発に高度な自動化支援は不可欠で、「渋滞を起こさないようなバリューストリーム」の構築を実現したい考えです。\n\n![](https://res.cloudinary.com/about-gitlab-com/image/upload/v1770948394/hivoz9yjenzsi9os5ofr.pdf)\n\n## ▶️事例PDFを[無料でダウンロードする](https://res.cloudinary.com/about-gitlab-com/image/upload/v1770948394/hivoz9yjenzsi9os5ofr.pdf)\n\n\u003Cobject class=\"slp-my-32\" data=\"https://res.cloudinary.com/about-gitlab-com/image/upload/v1770948394/hivoz9yjenzsi9os5ofr.pdf\" type=\"application/pdf\" width=\"100%\" height=\"800\">\n\u003C/object>",[723,23,22,567,738,724,24],"performance",{"featured":14,"template":15,"slug":740},"epic-tokyo-2025-pixiv",{"content":742,"config":751},{"heroImage":743,"body":744,"authors":745,"updatedDate":746,"date":747,"title":748,"tags":749,"description":750,"category":11},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1770172921/sprvmx9sgnxrx5m3ptxy.jpg","## 東レについて\n\n東レ株式会社は、繊維や機能化成品、炭素繊維などを提供する素材メーカー。2026年に創業100周年を迎え、売上高2兆5000億円、グローバルの従業員数約5万人を誇ります。UNIQLOの「ヒートテック」やボーイング「787」の機体材料など、私たちの身近な製品にも、その素材が利用されています。\n\n## 東レの挑戦\n\n同社は、情報システムに課題を抱えていました。50年前から稼働するホストコンピュータや、導入から20年以上経過したERP、そしてJavaをベースとした自社製の独自フレームワークで構築された200を超える業務システムが複雑に入り組んでいたのです。この状況ではDXの推進が困難で、運用保守に忙殺される技術者のモチベーション低下も大きな問題でした。そこで同社は競争優位性の源泉となる領域において、アプリケーションのモダナイズを決断しました。\n\n## GitLabの活用方法\n\n### ソリューション：GitLab Ultimate、GitLab Duo Enterprise\n\n基幹刷新プロジェクトと共に始動したアプリケーションモダナイズの取り組みでは、「セキュリティの向上」、「自動化（CI/CD）」、「モノリスからの脱却」、「常に新しい技術の採用」という4つの柱を掲げました。開発サイクルの高速化とセキュリティ確保を両立するDevSecOpsを実現するために、開発の初期段階からセキュリティチェックを組み込むシフトレフトのアプローチは不可欠。それを実現するためにGitLabを開発プラットフォームとし、セキュリティチェックとCI/CDサイクルを確立することで、開発スピード、品質、セキュリティのすべてを強化する体制を整えました。\n\nGitLabと生成AIエディタ「Cursor」を組み合わせたAI駆動開発にも挑戦しました。開発者はMarkdown形式のAPI仕様書を作成し、Cursorに入力することでソースコードやテストコードを自動生成します。導入当初は生成されるコードの品質にばらつきがありましたが、プロンプトの内容やアーキテクチャのルールを整備し、実装後にチェックするプロセスを導入することで、開発者間で均質なコードが生成されるよう改善しました。\n\n生成されたコードのレビューにはGitLab Duoを活用しています。AIをレビュアーとして指定することで、冗長なコードの指摘やエラーハンドリングの不足などを自動で検出し、属人化の解消とレビュー工数の削減を実現しています。\n\nこれらの取り組みにより、かつては手動で行っていた単体テストやデプロイ作業が自動化され、セキュリティテストもパイプラインの中で頻繁かつ定期的に実施できるようになりました。旧システムのクラウドリフトは約1年半で完了し、2025年からは本格的なモダナイズフェーズへと移行しています。わずか3か月で試行的なモダンアプリ開発を成功させるなど、着実に内製化への知見を蓄積しています。開発環境においても、VDIやNexusサーバを導入してセキュアな構成を保ちつつ、開発者が最新技術に触れられる「ワクワクする」環境づくりが進められています。\n\n今後は、人材採用活動をさらに積極化するとともに、生成AIとGitLab Duoによる開発・運用工数の削減を目指します。すでに脆弱性対応を自動化する仕組みの構築に着手。脆弱性診断結果を分析し、GitLab Duoを中心として修正コードの提案からマージリクエストの作成までを自動化する構想です。レビュアーはAIが提案した変更内容を確認して承認するだけというフローを確立し、人間がより創造的な業務に集中できる環境を目指します。\n\n\n## ▶️事例PDFを[無料でダウンロードする](https://res.cloudinary.com/about-gitlab-com/image/upload/v1770170747/diywgk9vavrv3jtxyo1l.pdf)\n\n\u003Cobject class=\"slp-my-32\" data=\"https://res.cloudinary.com/about-gitlab-com/image/upload/v1770170747/diywgk9vavrv3jtxyo1l.pdf\" type=\"application/pdf\" width=\"100%\" height=\"800\">\n\u003C/object>",[719],"","2026-02-05","お客様事例：東レ",[723,23,22,567,724,24],"システムをGitLabとAI活用でモダナイズされた東レ様の事例。DevSecOps実現と開発効率化の取り組みを紹介します。",{"featured":14,"template":15,"slug":752},"epic-tokyo-2025-toray",{"promotions":754},[755,769,781,792],{"id":756,"categories":757,"header":759,"text":760,"button":761,"image":766},"ai-modernization",[758],"ai-ml","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":762,"config":763},"Get your AI maturity score",{"href":764,"dataGaName":765,"dataGaLocation":249},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":767},{"src":768},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":770,"categories":771,"header":773,"text":760,"button":774,"image":778},"devops-modernization",[772,570],"product","Are you just managing tools or shipping innovation?",{"text":775,"config":776},"Get your DevOps maturity score",{"href":777,"dataGaName":765,"dataGaLocation":249},"/assessments/devops-modernization-assessment/",{"config":779},{"src":780},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":782,"categories":783,"header":784,"text":760,"button":785,"image":789},"security-modernization",[724],"Are you trading speed for security?",{"text":786,"config":787},"Get your security maturity score",{"href":788,"dataGaName":765,"dataGaLocation":249},"/assessments/security-modernization-assessment/",{"config":790},{"src":791},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":793,"paths":794,"header":797,"text":798,"button":799,"image":804},"github-azure-migration",[795,796],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","Is your team ready for GitHub's Azure move?","GitHub is already rebuilding around Azure. Find out what it means for you.",{"text":800,"config":801},"See how GitLab compares to GitHub",{"href":802,"dataGaName":803,"dataGaLocation":249},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":805},{"src":780},{"header":807,"blurb":808,"button":809,"secondaryButton":813},"今すぐ開発をスピードアップ","DevSecOpsに特化したインテリジェントオーケストレーションプラットフォームで実現できることをご確認ください。\n",{"text":52,"config":810},{"href":811,"dataGaName":55,"dataGaLocation":812},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/ja-jp/","feature",{"text":57,"config":814},{"href":59,"dataGaName":60,"dataGaLocation":812},1777493633613]