[{"data":1,"prerenderedAt":792},["ShallowReactive",2],{"/ja-jp/blog/five-fast-facts-about-docs-as-code-at-gitlab":3,"navigation-ja-jp":42,"banner-ja-jp":441,"footer-ja-jp":451,"blog-post-authors-ja-jp-Suzanne Selhorn|Susan Tacker|Diana Logan":657,"blog-related-posts-ja-jp-five-fast-facts-about-docs-as-code-at-gitlab":695,"blog-promotions-ja-jp":729,"next-steps-ja-jp":783},{"id":4,"title":5,"authorSlugs":6,"body":10,"categorySlug":11,"config":12,"content":16,"description":10,"extension":30,"isFeatured":14,"meta":31,"navigation":32,"path":33,"publishedDate":24,"seo":34,"stem":38,"tagSlugs":39,"__hash__":41},"blogPosts/ja-jp/blog/five-fast-facts-about-docs-as-code-at-gitlab.yml","Five Fast Facts About Docs As Code At Gitlab",[7,8,9],"suzanne-selhorn","susan-tacker","diana-logan",null,"insights",{"slug":13,"featured":14,"template":15},"five-fast-facts-about-docs-as-code-at-gitlab",false,"BlogPost",{"title":17,"description":18,"authors":19,"heroImage":23,"date":24,"body":25,"category":11,"tags":26},"GitLabにおける「Docs as Code」の5つのポイント","この記事では、GitLabのテクニカルライターがDocs-as-Codeワークフローを用いてGitLabをどのように利用しているのかを、5つのポイントに分けてご紹介します。",[20,21,22],"Suzanne Selhorn","Susan Tacker","Diana Logan","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749660257/Blog/Hero%20Images/pen.jpg","2022-10-12","\n\nGitLabでは、「Docs-as-Code」ワークフローを使うことで、単一のプラットフォームとしてGitLabを使ってGitLabのドキュメントを作成・管理しています。少しわかりづらいでしょうか？\n\nGitLabのテクニカルライティングチームは、GitLabを使って[GitLabドキュメント](https://docs.gitlab.com/)の計画、作成、レビュー、編集、公開までを一貫して行っています。Docs-as-Codeワークフローを導入することで、熱意ある少人数の効率的な備えたチームで膨大な量のコンテンツを生み出すことが可能になっています。\n\nDocs-as-Codeに馴染みがない方のために、簡単にご説明します。\n\n[Docs-as-Code](https://idratherbewriting.com/trends/trends-to-follow-or-forget-docs-as-code.html#what-is-docs-as-code)とは、製品ドキュメントの開発や公開を、ソフトウェアコードの開発と同じツールやプロセスを用いて行う手法です。ドキュメントファイルはコードファイルと同じリポジトリで管理され、バージョン管理も可能です。\n\nご自身が所属する組織でGitLabにDocs-as-Codeワークフローを採用できるか気になっている場合は、ぜひこの記事を読み進めてください。GitLabチームが実践している5つの方法をまとめてご紹介します。\n\n## GitLabを使ってGitLabの機能とドキュメントの更新を計画\n\nプロダクトマネージャー、UXデザイナー、エンジニア、品質管理チームは連携して機能の開発計画を立てます。リリースを計画する際に、Kanbanボードを使ったり、サードパーティのツールでイシューを作成したりするチームも多いかと思います。\n\nGitLabでは、エピックとイシュー[イシュー](https://gitlab.com/gitlab-org/technical-writing/-/issues/680)を使って作業計画を立て、[イシューボード](https://gitlab.com/groups/gitlab-org/-/boards/4340643?label_name%5B%5D=Category%3ADocs%20Site)を用いて進捗を管理します。GitLabでは透明性を重視しているため、計画に関するディスカッションも含め、こうした情報には誰もがアクセスできるようになっています。そのため、テクニカルライティングチームは開発の進行状況をいつでも把握できる環境にあります。\n\n![イシューの計画](https://about.gitlab.com/images/blogimages/planning_issue.png)\n\n大規模なドキュメント作業を行う場合、その進捗をGitLabで管理し、変更はGitLabを使用して行い、イシューが完了したらGitLabで完了マークを付けます。1年後に変更の理由を振り返りたい場合、GitLabで検索すれば、誰がどのような理由で変更を加えたのかを確認できます。現在、複数のツールを使って作業している方は、一度にすべてを一元的に管理できる環境を想像してみてください。より迅速かつ効率的に作業を進められると思いませんか？通常ならメールやウェブサイト、Slackを見て回って見失ったディスカッションを探すのに時間を費やしていたかもしれませんが、それがすべてGitLabに集約されているため、無駄な時間を省けます。\n\nもしWikiを愛用していて、不可欠だという場合でもご安心ください。GitLabにはWiki機能も備わっています。\n\n## GitLabを使ってドキュメントのフィードバックをやりとり\n\nライターとして一定の経験がある方なら、コンテンツのレビューを依頼する際の手間をよくご存じでしょう。\n\nGitLabでは、デベロッパーがすべての新機能に関するコンテンツの初稿を作成します。そして、そのコンテンツはコードと同じリポジトリに保存されます。機能に関するドキュメントは、GitLabの開発プロセスにおける「完了の定義（DoD）」の一部です。デベロッパーはその初稿をライターに割り当て、ライターはそれをレビューし、提案を加え、アイデアや必要な編集内容を作成者であるライターに返します。\n\nライター自身もコンテンツの変更を行う場合は、マージリクエスト（MR）を作成します。MRを作成するのがライターであれ、デベロッパーであれ、サポートエンジニアであれ、コミュニティのコントリビューターであれ、誰でもお互いの作業に簡単にコメントできる仕組みになっています。\n\nマージリクエストでは、「提案」ボタンを選択するだけで簡単にコメントできます。1行、または複数行単位でコメントを付けることができ、変更や編集を提案できます。MRを作成した本人は、その変更を簡単に適用したり、別の提案を作成し議論したりできます。他のユーザーを会話に招待するには、コメントにユーザー名を入力します。すると、相手にコメントがGitLabのTo Doアイテムとして表示されます。このようにして、あらゆる変更について議論でき、透明性があり、誰もが参加できる環境が整っています。\n\n![提案](https://about.gitlab.com/images/blogimages/suggestion.png)\n\nドキュメントの内容はMarkdown形式で記述されており、プレーンテキストに似ているため、ファイルのバージョン間の違いを簡単に確認でき、誰がどの変更をコミットしたのかも把握できます。\n\nPDFやWordドキュメント、Googleドキュメントでコメント機能を使ってレビューを行った経験がある方も多いでしょう。このワークフローを試すと、どれだけ効率的に作業が進むかを実感できるはずです。古いバージョンのドキュメントが使われることもなく、誰かのコメントを意図せず削除してしまうようなこともありません。\n\nまた、変更の理由を知りたい場合も、ページの履歴を簡単に確認でき、特定の行について誰が「担当者」であるかもすぐに確認できます。\n\n![担当者の表示](https://about.gitlab.com/images/blogimages/blame.png)\n\n複数のバージョンのPDFドキュメントを管理したり、誰がどの変更を提案したのかを探したりする必要はもうありません。すべての管理がGitLab内で完結するため、手間が省けます。\n\n## GitLabを使ってドキュメントの内容をプレビュー\n\nGitLabでは、ドキュメントサイトのコンテンツをローカルで生成するツールを提供していますが、マージリクエストから直接ドキュメントサイトを簡単に共有することもできます。新しいアイデアを試していて、それを誰かに見せたい場合は、マージリクエストを開き、「アプリレビュー」を生成すると、変更されたドキュメントサイトを公開URLで確認できるようになります。\n\n![アプリレビュー](https://about.gitlab.com/images/blogimages/view_app.png)\n\n変更内容を確認でき、イテレーションを行うことも、そのままコミットすることも可能です。次にこれに関連する、GitLabの便利な機能をもうひとつご紹介します。\n\n## GitLabを使ってすべてのコンテンツの変更をテスト\n\nドキュメント内のリンクをテストしたり、スペルや文法のルールを確認したりするために、サードパーティーのツールが使っている方も多いかと思います。\n\nGitLabでは、Nanoc（リンクのテスト用）やVale（スペル・文法の確認用）などのサードパーティツールを使用していますが、これらのツールもGitLabに統合でき、ライターのワークフローにも組み込むことができます。\n\n各ライターは、自身のローカル環境でこれらのツールを使用し、ドキュメントの読解レベルや文法修正などをすべて確認できます。これらのツールを持っていないコントリビューターには、パイプラインで自動的にテストを実行し、すべてのコミットに対して結果を表示する仕組みを導入しています。\n\n![Lintエラー](https://about.gitlab.com/images/blogimages/lint_error_2.png)\n\nデベロッパーとして、文章の専門知識に自信がない場合、マージリクエストのパイプラインで重要な文法やブランディングルールに従っていないために処理が進まないことがあります。GitLabでは、さまざまなルールを定め、それぞれに優先順位を付けています。そのため、[スタイルガイド](https://docs.gitlab.com/ee/development/documentation/styleguide/)や[単語リスト](https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html)を用意しているだけでなく、テストを実行してコンテンツがそうしたルールに沿ったものになっているかを確認しています。\n\n## GitLabを使ってHTML出力を生成し、その出力をGitLab Pagesでホスト\n\nGitLabのCI/CDパイプラインは、Markdown形式のコンテンツをHTMLに変換してコンパイルします。その後、出力内容をGitLab Pagesを介して、[docs.gitlab.com](http://docs.gitlab.com)にホストします。\n\n![パイプライン](https://about.gitlab.com/images/blogimages/pipeline2.png)\n\nパイプラインによって出力を生成することで、必要なときにいつでもドキュメントサイトを更新できます。製品は月に一度リリースされますが、ドキュメントサイトは1時間ごとに更新されます。そのため、docs.gitlab.comでは常に最新の情報が提供されており、時にはリリース前の情報も公開されます。開発計画や実装に関するイシューはGitLabの透明性の方針に基づき公開されているため、機能の事前発表を行うことに問題はありません。\n\nこのように、GitLabが「Docs-as-Code」ワークフローを重視する理由は数多くあります。最初はドキュメント作成を1つのツールで完結させることに慣れずに戸惑うかもしれませんが、GitLabはライター全員のワークフローを最初から最後までサポートしており、長年の実績がその効果を証明しています。\n\nGitLabでのテクニカルライティングにおける「Docs-as-Code」ワークフローについて詳しくは、次の動画をご視聴ください。\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/ZlabtdA-gZE\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\nオープンソースドキュメントへのコントリビュート方法は、「[ドキュメントの更新方法](https://docs.gitlab.com/ee/development/documentation/workflow.html#how-to-update-the-docs)」でご確認いただけます。ぜひご参加ください。\n",[27,28,29],"careers","contributors","inside GitLab","yml",{},true,"/ja-jp/blog/five-fast-facts-about-docs-as-code-at-gitlab",{"title":17,"description":18,"ogTitle":17,"ogDescription":18,"noIndex":14,"ogImage":23,"ogUrl":35,"ogSiteName":36,"ogType":37,"canonicalUrls":35},"https://about.gitlab.com/blog/five-fast-facts-about-docs-as-code-at-gitlab","https://about.gitlab.com","article","ja-jp/blog/five-fast-facts-about-docs-as-code-at-gitlab",[27,28,40],"inside-gitlab","VhGpNa9_ZUR1-IkqD1Wp3lkkmgo3kKgdALvGTR6NYn8",{"data":43},{"logo":44,"freeTrial":49,"sales":54,"login":59,"items":64,"search":372,"minimal":405,"duo":422,"pricingDeployment":431},{"config":45},{"href":46,"dataGaName":47,"dataGaLocation":48},"/ja-jp/","gitlab logo","header",{"text":50,"config":51},"無料トライアルを開始",{"href":52,"dataGaName":53,"dataGaLocation":48},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp&glm_content=default-saas-trial/","free trial",{"text":55,"config":56},"お問い合わせ",{"href":57,"dataGaName":58,"dataGaLocation":48},"/ja-jp/sales/","sales",{"text":60,"config":61},"サインイン",{"href":62,"dataGaName":63,"dataGaLocation":48},"https://gitlab.com/users/sign_in/","sign in",[65,92,188,193,294,354],{"text":66,"config":67,"cards":69},"プラットフォーム",{"dataNavLevelOne":68},"platform",[70,76,84],{"title":66,"description":71,"link":72},"DevSecOpsに特化したインテリジェントオーケストレーションプラットフォーム",{"text":73,"config":74},"プラットフォームを詳しく見る",{"href":75,"dataGaName":68,"dataGaLocation":48},"/ja-jp/platform/",{"title":77,"description":78,"link":79},"GitLab Duo Agent Platform","ソフトウェアライフサイクル全体を支えるエージェント型AI",{"text":80,"config":81},"GitLab Duoのご紹介",{"href":82,"dataGaName":83,"dataGaLocation":48},"/ja-jp/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":85,"description":86,"link":87},"GitLabが選ばれる理由","エンタープライズがGitLabを選ぶ主な理由をご覧ください",{"text":88,"config":89},"詳細はこちら",{"href":90,"dataGaName":91,"dataGaLocation":48},"/ja-jp/why-gitlab/","why gitlab",{"text":93,"left":32,"config":94,"link":96,"lists":100,"footer":170},"製品",{"dataNavLevelOne":95},"solutions",{"text":97,"config":98},"すべてのソリューションを表示",{"href":99,"dataGaName":95,"dataGaLocation":48},"/ja-jp/solutions/",[101,126,148],{"title":102,"description":103,"link":104,"items":109},"自動化","CI/CDと自動化でデプロイを加速",{"config":105},{"icon":106,"href":107,"dataGaName":108,"dataGaLocation":48},"AutomatedCodeAlt","/ja-jp/solutions/delivery-automation/","automated software delivery",[110,114,117,122],{"text":111,"config":112},"CI/CD",{"href":113,"dataGaLocation":48,"dataGaName":111},"/ja-jp/solutions/continuous-integration/",{"text":77,"config":115},{"href":82,"dataGaLocation":48,"dataGaName":116},"gitlab duo agent platform - product menu",{"text":118,"config":119},"ソースコード管理",{"href":120,"dataGaLocation":48,"dataGaName":121},"/ja-jp/solutions/source-code-management/","Source Code Management",{"text":123,"config":124},"自動化されたソフトウェアデリバリー",{"href":107,"dataGaLocation":48,"dataGaName":125},"Automated software delivery",{"title":127,"description":128,"link":129,"items":134},"セキュリティ","セキュリティを犠牲にすることなくコード作成を高速化",{"config":130},{"href":131,"dataGaName":132,"dataGaLocation":48,"icon":133},"/ja-jp/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[135,139,144],{"text":136,"config":137},"Application Security Testing",{"href":131,"dataGaName":138,"dataGaLocation":48},"Application security testing",{"text":140,"config":141},"ソフトウェアサプライチェーンの安全性",{"href":142,"dataGaLocation":48,"dataGaName":143},"/ja-jp/solutions/supply-chain/","Software supply chain security",{"text":145,"config":146},"Software Compliance",{"href":147,"dataGaName":145,"dataGaLocation":48},"/ja-jp/solutions/software-compliance/",{"title":149,"link":150,"items":155},"測定",{"config":151},{"icon":152,"href":153,"dataGaName":154,"dataGaLocation":48},"DigitalTransformation","/ja-jp/solutions/visibility-measurement/","visibility and measurement",[156,160,165],{"text":157,"config":158},"可視性と測定",{"href":153,"dataGaLocation":48,"dataGaName":159},"Visibility and Measurement",{"text":161,"config":162},"バリューストリーム管理",{"href":163,"dataGaLocation":48,"dataGaName":164},"/ja-jp/solutions/value-stream-management/","Value Stream Management",{"text":166,"config":167},"分析とインサイト",{"href":168,"dataGaLocation":48,"dataGaName":169},"/ja-jp/solutions/analytics-and-insights/","Analytics and insights",{"title":171,"items":172},"GitLabが活躍する場所",[173,178,183],{"text":174,"config":175},"Enterprise",{"href":176,"dataGaLocation":48,"dataGaName":177},"/ja-jp/enterprise/","enterprise",{"text":179,"config":180},"スモールビジネス",{"href":181,"dataGaLocation":48,"dataGaName":182},"/ja-jp/small-business/","small business",{"text":184,"config":185},"公共機関",{"href":186,"dataGaLocation":48,"dataGaName":187},"/ja-jp/solutions/public-sector/","public sector",{"text":189,"config":190},"価格",{"href":191,"dataGaName":192,"dataGaLocation":48,"dataNavLevelOne":192},"/ja-jp/pricing/","pricing",{"text":194,"config":195,"link":197,"lists":201,"feature":281},"関連リソース",{"dataNavLevelOne":196},"resources",{"text":198,"config":199},"すべてのリソースを表示",{"href":200,"dataGaName":196,"dataGaLocation":48},"/ja-jp/resources/",[202,235,253],{"title":203,"items":204},"はじめに",[205,210,215,220,225,230],{"text":206,"config":207},"インストール",{"href":208,"dataGaName":209,"dataGaLocation":48},"/ja-jp/install/","install",{"text":211,"config":212},"クイックスタートガイド",{"href":213,"dataGaName":214,"dataGaLocation":48},"/ja-jp/get-started/","quick setup checklists",{"text":216,"config":217},"学ぶ",{"href":218,"dataGaLocation":48,"dataGaName":219},"https://university.gitlab.com/","learn",{"text":221,"config":222},"製品ドキュメント",{"href":223,"dataGaName":224,"dataGaLocation":48},"https://docs.gitlab.com/","product documentation",{"text":226,"config":227},"ベストプラクティスビデオ",{"href":228,"dataGaName":229,"dataGaLocation":48},"/ja-jp/getting-started-videos/","best practice videos",{"text":231,"config":232},"インテグレーション",{"href":233,"dataGaName":234,"dataGaLocation":48},"/ja-jp/integrations/","integrations",{"title":236,"items":237},"検索する",[238,243,248],{"text":239,"config":240},"お客様成功事例",{"href":241,"dataGaName":242,"dataGaLocation":48},"/ja-jp/customers/","customer success stories",{"text":244,"config":245},"ブログ",{"href":246,"dataGaName":247,"dataGaLocation":48},"/ja-jp/blog/","blog",{"text":249,"config":250},"リモート",{"href":251,"dataGaName":252,"dataGaLocation":48},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":254,"items":255},"つなげる",[256,261,266,271,276],{"text":257,"config":258},"GitLabサービス",{"href":259,"dataGaName":260,"dataGaLocation":48},"/ja-jp/services/","services",{"text":262,"config":263},"コミュニティ",{"href":264,"dataGaName":265,"dataGaLocation":48},"/community/","community",{"text":267,"config":268},"フォーラム",{"href":269,"dataGaName":270,"dataGaLocation":48},"https://forum.gitlab.com/","forum",{"text":272,"config":273},"イベント",{"href":274,"dataGaName":275,"dataGaLocation":48},"/events/","events",{"text":277,"config":278},"パートナー",{"href":279,"dataGaName":280,"dataGaLocation":48},"/ja-jp/partners/","partners",{"backgroundColor":282,"textColor":283,"text":284,"image":285,"link":289},"#2f2a6b","#fff","ソフトウェア開発の未来への洞察",{"altText":286,"config":287},"ソースプロモカード",{"src":288},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":290,"config":291},"最新情報を読む",{"href":292,"dataGaName":293,"dataGaLocation":48},"/ja-jp/the-source/","the source",{"text":295,"config":296,"lists":298},"会社情報",{"dataNavLevelOne":297},"company",[299],{"items":300},[301,306,312,314,319,324,329,334,339,344,349],{"text":302,"config":303},"GitLabについて",{"href":304,"dataGaName":305,"dataGaLocation":48},"/ja-jp/company/","about",{"text":307,"config":308,"footerGa":311},"採用情報",{"href":309,"dataGaName":310,"dataGaLocation":48},"/jobs/","jobs",{"dataGaName":310},{"text":272,"config":313},{"href":274,"dataGaName":275,"dataGaLocation":48},{"text":315,"config":316},"経営陣",{"href":317,"dataGaName":318,"dataGaLocation":48},"/company/team/e-group/","leadership",{"text":320,"config":321},"チーム",{"href":322,"dataGaName":323,"dataGaLocation":48},"/company/team/","team",{"text":325,"config":326},"ハンドブック",{"href":327,"dataGaName":328,"dataGaLocation":48},"https://handbook.gitlab.com/","handbook",{"text":330,"config":331},"投資家向け情報",{"href":332,"dataGaName":333,"dataGaLocation":48},"https://ir.gitlab.com/","investor relations",{"text":335,"config":336},"トラストセンター",{"href":337,"dataGaName":338,"dataGaLocation":48},"/ja-jp/security/","trust center",{"text":340,"config":341},"AI Transparency Center",{"href":342,"dataGaName":343,"dataGaLocation":48},"/ja-jp/ai-transparency-center/","ai transparency center",{"text":345,"config":346},"ニュースレター",{"href":347,"dataGaName":348,"dataGaLocation":48},"/company/contact/#contact-forms","newsletter",{"text":350,"config":351},"プレス",{"href":352,"dataGaName":353,"dataGaLocation":48},"/press/","press",{"text":55,"config":355,"lists":356},{"dataNavLevelOne":297},[357],{"items":358},[359,362,367],{"text":55,"config":360},{"href":57,"dataGaName":361,"dataGaLocation":48},"talk to sales",{"text":363,"config":364},"サポートポータル",{"href":365,"dataGaName":366,"dataGaLocation":48},"https://support.gitlab.com","support portal",{"text":368,"config":369},"カスタマーポータル",{"href":370,"dataGaName":371,"dataGaLocation":48},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":373,"login":374,"suggestions":381},"閉じる",{"text":375,"link":376},"リポジトリとプロジェクトを検索するには、次にログインします",{"text":377,"config":378},"GitLab.com",{"href":62,"dataGaName":379,"dataGaLocation":380},"search login","search",{"text":382,"default":383},"提案",[384,386,391,393,397,401],{"text":77,"config":385},{"href":82,"dataGaName":77,"dataGaLocation":380},{"text":387,"config":388},"コード提案（AI）",{"href":389,"dataGaName":390,"dataGaLocation":380},"/ja-jp/solutions/code-suggestions/","Code Suggestions (AI)",{"text":111,"config":392},{"href":113,"dataGaName":111,"dataGaLocation":380},{"text":394,"config":395},"GitLab on AWS",{"href":396,"dataGaName":394,"dataGaLocation":380},"/ja-jp/partners/technology-partners/aws/",{"text":398,"config":399},"GitLab on Google Cloud",{"href":400,"dataGaName":398,"dataGaLocation":380},"/ja-jp/partners/technology-partners/google-cloud-platform/",{"text":402,"config":403},"GitLabを選ぶ理由",{"href":90,"dataGaName":404,"dataGaLocation":380},"Why GitLab?",{"freeTrial":406,"mobileIcon":410,"desktopIcon":415,"secondaryButton":418},{"text":50,"config":407},{"href":408,"dataGaName":53,"dataGaLocation":409},"https://gitlab.com/-/trials/new/","nav",{"altText":411,"config":412},"GitLabアイコン",{"src":413,"dataGaName":414,"dataGaLocation":409},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":411,"config":416},{"src":417,"dataGaName":414,"dataGaLocation":409},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":203,"config":419},{"href":420,"dataGaName":421,"dataGaLocation":409},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp/get-started/","get started",{"freeTrial":423,"mobileIcon":427,"desktopIcon":429},{"text":424,"config":425},"GitLab Duoの詳細について",{"href":82,"dataGaName":426,"dataGaLocation":409},"gitlab duo",{"altText":411,"config":428},{"src":413,"dataGaName":414,"dataGaLocation":409},{"altText":411,"config":430},{"src":417,"dataGaName":414,"dataGaLocation":409},{"freeTrial":432,"mobileIcon":437,"desktopIcon":439},{"text":433,"config":434},"料金ページに戻る",{"href":191,"dataGaName":435,"dataGaLocation":409,"icon":436},"back to pricing","GoBack",{"altText":411,"config":438},{"src":413,"dataGaName":414,"dataGaLocation":409},{"altText":411,"config":440},{"src":417,"dataGaName":414,"dataGaLocation":409},{"title":442,"button":443,"config":448},"エージェント型AIがソフトウェア配信をどのように変革するかをご覧ください",{"text":444,"config":445},"GitLab Transcendを今すぐ視聴",{"href":446,"dataGaName":447,"dataGaLocation":48},"/ja-jp/events/transcend/virtual/","transcend event",{"layout":449,"icon":450,"disabled":32},"release","AiStar",{"data":452},{"text":453,"source":454,"edit":460,"contribute":465,"config":470,"items":475,"minimal":649},"GitはSoftware Freedom Conservancyの商標です。当社は「GitLab」をライセンスに基づいて使用しています",{"text":455,"config":456},"ページのソースを表示",{"href":457,"dataGaName":458,"dataGaLocation":459},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":461,"config":462},"このページを編集",{"href":463,"dataGaName":464,"dataGaLocation":459},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":466,"config":467},"ご協力をお願いします",{"href":468,"dataGaName":469,"dataGaLocation":459},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":471,"facebook":472,"youtube":473,"linkedin":474},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[476,499,553,583,618],{"title":66,"links":477,"subMenu":482},[478],{"text":479,"config":480},"DevSecOpsプラットフォーム",{"href":75,"dataGaName":481,"dataGaLocation":459},"devsecops platform",[483],{"title":189,"links":484},[485,489,494],{"text":486,"config":487},"プランの表示",{"href":191,"dataGaName":488,"dataGaLocation":459},"view plans",{"text":490,"config":491},"Premiumを選ぶ理由",{"href":492,"dataGaName":493,"dataGaLocation":459},"/ja-jp/pricing/premium/","why premium",{"text":495,"config":496},"Ultimateを選ぶ理由",{"href":497,"dataGaName":498,"dataGaLocation":459},"/ja-jp/pricing/ultimate/","why ultimate",{"title":500,"links":501},"ソリューション",[502,507,510,512,517,522,526,529,532,537,539,541,543,548],{"text":503,"config":504},"デジタルトランスフォーメーション",{"href":505,"dataGaName":506,"dataGaLocation":459},"/ja-jp/topics/digital-transformation/","digital transformation",{"text":508,"config":509},"セキュリティとコンプライアンス",{"href":131,"dataGaName":138,"dataGaLocation":459},{"text":123,"config":511},{"href":107,"dataGaName":108,"dataGaLocation":459},{"text":513,"config":514},"アジャイル開発",{"href":515,"dataGaName":516,"dataGaLocation":459},"/ja-jp/solutions/agile-delivery/","agile delivery",{"text":518,"config":519},"クラウドトランスフォーメーション",{"href":520,"dataGaName":521,"dataGaLocation":459},"/ja-jp/topics/cloud-native/","cloud transformation",{"text":523,"config":524},"SCM",{"href":120,"dataGaName":525,"dataGaLocation":459},"source code management",{"text":111,"config":527},{"href":113,"dataGaName":528,"dataGaLocation":459},"continuous integration & delivery",{"text":161,"config":530},{"href":163,"dataGaName":531,"dataGaLocation":459},"value stream management",{"text":533,"config":534},"GitOps",{"href":535,"dataGaName":536,"dataGaLocation":459},"/ja-jp/solutions/gitops/","gitops",{"text":174,"config":538},{"href":176,"dataGaName":177,"dataGaLocation":459},{"text":179,"config":540},{"href":181,"dataGaName":182,"dataGaLocation":459},{"text":184,"config":542},{"href":186,"dataGaName":187,"dataGaLocation":459},{"text":544,"config":545},"教育",{"href":546,"dataGaName":547,"dataGaLocation":459},"/ja-jp/solutions/education/","education",{"text":549,"config":550},"金融サービス",{"href":551,"dataGaName":552,"dataGaLocation":459},"/ja-jp/solutions/finance/","financial services",{"title":194,"links":554},[555,557,559,561,564,566,569,571,573,575,577,579,581],{"text":206,"config":556},{"href":208,"dataGaName":209,"dataGaLocation":459},{"text":211,"config":558},{"href":213,"dataGaName":214,"dataGaLocation":459},{"text":216,"config":560},{"href":218,"dataGaName":219,"dataGaLocation":459},{"text":221,"config":562},{"href":223,"dataGaName":563,"dataGaLocation":459},"docs",{"text":244,"config":565},{"href":246,"dataGaName":247},{"text":567,"config":568},"お客様の成功事例",{"href":241,"dataGaLocation":459},{"text":239,"config":570},{"href":241,"dataGaName":242,"dataGaLocation":459},{"text":249,"config":572},{"href":251,"dataGaName":252,"dataGaLocation":459},{"text":257,"config":574},{"href":259,"dataGaName":260,"dataGaLocation":459},{"text":262,"config":576},{"href":264,"dataGaName":265,"dataGaLocation":459},{"text":267,"config":578},{"href":269,"dataGaName":270,"dataGaLocation":459},{"text":272,"config":580},{"href":274,"dataGaName":275,"dataGaLocation":459},{"text":277,"config":582},{"href":279,"dataGaName":280,"dataGaLocation":459},{"title":584,"links":585},"Company",[586,588,590,592,594,596,598,602,607,609,611,613],{"text":302,"config":587},{"href":304,"dataGaName":297,"dataGaLocation":459},{"text":307,"config":589},{"href":309,"dataGaName":310,"dataGaLocation":459},{"text":315,"config":591},{"href":317,"dataGaName":318,"dataGaLocation":459},{"text":320,"config":593},{"href":322,"dataGaName":323,"dataGaLocation":459},{"text":325,"config":595},{"href":327,"dataGaName":328,"dataGaLocation":459},{"text":330,"config":597},{"href":332,"dataGaName":333,"dataGaLocation":459},{"text":599,"config":600},"Sustainability",{"href":601,"dataGaName":599,"dataGaLocation":459},"/sustainability/",{"text":603,"config":604},"ダイバーシティ、インクルージョン、ビロンギング（DIB）",{"href":605,"dataGaName":606,"dataGaLocation":459},"/ja-jp/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":335,"config":608},{"href":337,"dataGaName":338,"dataGaLocation":459},{"text":345,"config":610},{"href":347,"dataGaName":348,"dataGaLocation":459},{"text":350,"config":612},{"href":352,"dataGaName":353,"dataGaLocation":459},{"text":614,"config":615},"現代奴隷制の透明性に関する声明",{"href":616,"dataGaName":617,"dataGaLocation":459},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":55,"links":619},[620,622,627,629,634,639,644],{"text":55,"config":621},{"href":57,"dataGaName":58,"dataGaLocation":459},{"text":623,"config":624},"サポートを受ける",{"href":625,"dataGaName":626,"dataGaLocation":459},"https://support.gitlab.com/hc/en-us/articles/11626483177756-GitLab-Support","get help",{"text":368,"config":628},{"href":370,"dataGaName":371,"dataGaLocation":459},{"text":630,"config":631},"ステータス",{"href":632,"dataGaName":633,"dataGaLocation":459},"https://status.gitlab.com/","status",{"text":635,"config":636},"利用規約",{"href":637,"dataGaName":638,"dataGaLocation":459},"/terms/","terms of use",{"text":640,"config":641},"プライバシーに関する声明",{"href":642,"dataGaName":643,"dataGaLocation":459},"/ja-jp/privacy/","privacy statement",{"text":645,"config":646},"Cookieの設定",{"dataGaName":647,"dataGaLocation":459,"id":648,"isOneTrustButton":32},"cookie preferences","ot-sdk-btn",{"items":650},[651,653,655],{"text":635,"config":652},{"href":637,"dataGaName":638,"dataGaLocation":459},{"text":640,"config":654},{"href":642,"dataGaName":643,"dataGaLocation":459},{"text":645,"config":656},{"dataGaName":647,"dataGaLocation":459,"id":648,"isOneTrustButton":32},[658,671,683],{"id":659,"title":20,"body":10,"config":660,"content":662,"description":10,"extension":30,"meta":666,"navigation":32,"path":667,"seo":668,"stem":669,"__hash__":670},"blogAuthors/en-us/blog/authors/suzanne-selhorn.yml",{"template":661},"BlogAuthor",{"name":20,"config":663},{"headshot":664,"ctfId":665},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1755616156/vboecuoyo8tjfdis7c5a.jpg","6SK0DpWNK5NmfLyn2vWMPI",{},"/en-us/blog/authors/suzanne-selhorn",{},"en-us/blog/authors/suzanne-selhorn","CiU5TOoNLo7BlyHAPSbAR41rLuSx950NfJfaPG1rjZI",{"id":672,"title":21,"body":10,"config":673,"content":674,"description":10,"extension":30,"meta":678,"navigation":32,"path":679,"seo":680,"stem":681,"__hash__":682},"blogAuthors/en-us/blog/authors/susan-tacker.yml",{"template":661},{"name":21,"config":675},{"headshot":676,"ctfId":677},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749660253/Blog/Author%20Headshots/susantacker-headshot.jpg","6uxN75wAjT3afaKtVlr9GM",{},"/en-us/blog/authors/susan-tacker",{},"en-us/blog/authors/susan-tacker","h7vgK-KMZACM5px7XT9CQ_bYRNV9VtohEWM2y-5eA7o",{"id":684,"title":22,"body":10,"config":685,"content":686,"description":10,"extension":30,"meta":690,"navigation":32,"path":691,"seo":692,"stem":693,"__hash__":694},"blogAuthors/en-us/blog/authors/diana-logan.yml",{"template":661},{"name":22,"config":687},{"headshot":688,"ctfId":689},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659488/Blog/Author%20Headshots/gitlab-logo-extra-whitespace.png","6poIwhQe6W9ysm5rBuSPXX",{},"/en-us/blog/authors/diana-logan",{},"en-us/blog/authors/diana-logan","abhZHI7covkEFaBG5GwqnR-muafYHLwlFfFWAEoEzqA",[696,713],{"content":697,"config":711},{"title":698,"description":699,"authors":700,"heroImage":702,"date":703,"body":704,"category":11,"tags":705},"2024年グローバルDevSecOps調査で明らかになった、3つの注目すべき結果","今年の調査では、AIが台頭する中、組織における投資の優先分野が変化し、AIによりチームの働き方にどのような影響が生じているかが明らかになりました。",[701],"Dave Steer","https://res.cloudinary.com/about-gitlab-com/image/upload/v1751993603/Blog/Hero%20Images/fy25-global-devsecops-report-blog-image.png","2024-06-25","[世界各地のDevSecOpsの専門家5,000名を対象に行われた今年の調査](https://about.gitlab.com/resources/developer-survey/)は、組織がAIなどの新しい技術を導入する中、投資の優先分野を見直していること、またデベロッパーエクスペリエンスを向上させる方法をより入念に検討していることが示唆される結果となりました。この記事では、今年の調査で明らかになったさらに驚くべき3つの結果を紹介し、それらが2024年以降、ソフトウェアの開発、オペレーション、セキュリティを担当するチームにとって何を意味するのかを見ていきます。\n\n## 1. AIにより煩雑なツールチェーンの欠点が浮き彫りに\n\n今年の調査では、AIが既存のツールチェーンに対するDevSecOpsチームの意識にどのような影響を与える可能性があるかについて、特に注目しました。その結果、やや意外な事実が判明しました。AIによりソフトウェア開発を簡素化できることはご存知のとおりですが、調査の結果、現在AIを使用している回答者は、AIを使用していない回答者よりもツールチェーンに不満を感じている可能性があることが判明しました。\n\n現在AIをソフトウェア開発に使用している組織の回答者の4分の3近く（74%）が、またAIを使用していない組織の回答者の57%がツールチェーンを統合したいと回答しています。ただし、2つのグループ間で回答者が使用していると報告したツールの数に大きな差はありませんでした。つまり、現在AIを使用している回答者は、より多くのツールを使用しているわけではないものの、ツールチェーンを統合する必要性を強く感じていました。\n\nAIの使用が統合への欲求を加速させるのは一体なぜでしょうか？1つ考えられる理由として、さまざまなポイントソリューションで異なるAIモデルが実行されたために、ソフトウェア開発ライフサイクルにおいて手に負えない（かつ測定不能な）無秩序の状態が生じ、組織の煩雑で非生産的な既存のツールチェーンの欠点が浮き彫りになったことが挙げられます。組織がAIへの投資を増やすにつれ、乱立するツールチェーンの統合・簡素化することで効率性を向上させる必要性が高まります。ツールチェーンの規模が小さいほどチームがAIから得られる価値は大きくなり、ソフトウェア開発ライフサイクル全体でAIの統合が容易になります。\n\n今年のソフトウェア開発における最大の課題は、「（AIツールを含む）ツールの数とコンテキストスイッチ（頭の切り替え）が多すぎる」ことだと答えた回答者がいる一方、別の回答者は「全社的にさまざまなツールが断片化されていて複雑な状況」 であることだと述べています。\n\nさらに、別の回答者は次のように述べ、AIによってツールチェーンの課題を解決できる可能性を強調しました。「AIは急成長しており、AIを統合することによって既存のツールチェーンは大幅に改善できます。チームメンバーをさらにトレーニングし、日々の業務で効果的にAIを活用する方法を学んでもらう必要があります」\n\n## 2. AIによりデベロッパーのオンボーディング時間は短縮されるものの、依然として懸念を抱く組織\n\n今年の調査では、チームで使用されるツール数の増加に伴い、デベロッパーのオンボーディング（新しく組織やチームに加入したメンバーが活躍できるように体制を整えること）にかかる時間も大幅に増加していることがわかりました。今年は70%の回答者が自社のデベロッパーのオンボーディングと生産性向上には1か月以上かかると述べており、2023年の66%から増加しました。\n\nAIを活用した[チャットアシスタント](https://about.gitlab.com/blog/gitlab-duo-chat-now-generally-available/)や[コード提案](https://about.gitlab.com/blog/top-tips-for-efficient-ai-powered-code-suggestions-with-gitlab-duo/)を使用すれば、デベロッパーのオンボーディング時間を短縮できることは当然ですが、今回の調査では驚くべき効果が明らかになりました。ソフトウェア開発にAIを使用していると答えた回答者は、デベロッパーのオンボーディングには通常1か月未満しかかからないと答える傾向がより強く見られました。\n\nAIがデベロッパーエクスペリエンスにもたらすメリットは明白であるものの、回答者はAIの急速な採用に関して、いくつか懸念を表明しました。回答者の半数以上（55%）が、ソフトウェア開発ライフサイクルへのAIの導入にはリスクが伴うと述べており、49%は今後5年以内に現在の職務をAIに取られることを危惧していると答えています。\n\n業界リサーチ会社であるRedMonk社のシニアアナリスト、Rachel Stephens氏は、これらの調査結果について次のような見解を述べています。「AIをどのように感じるかには、心理的安全性とチームの文化といった要素が影響を及ぼします。人々はセキュリティやAIによるプライバシーへの影響を心配している可能性がある一方、準備できていないという意識は、AIにより自分の生業に個人的なリスクが生じるという考えが根底にあるのかもしれません」\n\nGitLabでは、AIの価値は、繰り返しの作業を自動化し、外からは見えない部分を最適化することで、チームメンバーが高度な問題解決、イノベーション、価値創造に集中できるようになることだと考えています。AIは、ソフトウェア開発における人的要素を置き換えるわけでなく、補完するものです。ある回答者は、このことを次のように簡潔に言い表しました。「私たちは、AIに頼りながら創造力を育み維持していくという課題に直面しています。あくまでAIは、クリエイティブな人たちが生産性の妨げとなる不要なものを排除するために使用するツールの1つであることを忘れてはなりません。人間の創造力に取って代わるものではないのです」\n\n## 3. クラウドはあって当たり前の存在に\n\nGitLabが実施した調査では、クラウドコンピューティングは過去数年間一貫してIT投資分野の上位にランクインしています。2022年には、クラウドコンピューティングはセキュリティに次いで2位にランクインし、2023年は1位という結果になりました。これは、組織に対する[デジタルトランスフォーメーション](https://about.gitlab.com/blog/lockheed-martin-aws-gitlab/)へのプレッシャーが高まっている現状を考えると、当然のことです。\n\nしかしながら、2024年にはクラウドコンピューティングは大幅に順位を落とし、IT投資分野で5位という結果となりました。その一方で、クラウドが引き続き重要な要素であることは明らかです。実際に、アプリケーションの50%以上をクラウドで実行していると答えた回答者数は大幅に増加しました。これは、クラウドが多くの企業にとって依然として業務や使命の達成において不可欠である一方、その存在は「あって当たり前」のものとして、技術チームとITリーダーの優先事項にその他の新しい要素が追加され続けていることを示唆しています。\n\nRedMonk社のStephens氏は、次のように述べています。「通常、資金面で制約のある財務環境にあることから、テクノロジーに投資する際には優先順位を決める必要があります。そのため、組織はデジタルトランスフォーメーションに関する予算の一部をAIなどのテクノロジーに再配分することがあっても、そのすべてが使われるわけではないのです。」\n\n## 今年のレポートを確認しよう\n\nAIやセキュリティ、デベロッパーエクスペリエンスなど、さまざまなインサイトを得られる[2024年グローバルDevSecOps調査](https://about.gitlab.com/resources/developer-survey/)の全文をぜひご覧ください。",[706,707,708,709,710],"developer survey","DevSecOps","AI/ML","security","news",{"slug":712,"featured":14,"template":15},"3-surprising-findings-from-our-2024-global-devsecops-survey",{"content":714,"config":727},{"title":715,"description":716,"authors":717,"heroImage":719,"date":720,"body":721,"category":11,"tags":722,"updatedDate":726}," CI/CDとは？ベストプラクティスやメリットも解説","CI/CDは高品質のアプリをスピーディに開発するのに最適です。注目度が高まるCI/CDとは何か、メリットやベストプラクティスについても説明します。",[718],"Valerie Silverthorne","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749661856/Blog/Hero%20Images/ci-cd-demo.jpg","2022-02-03","## 目次\n* CI/CDとは\n* CI/CDのメリット\n* CI/CDのベストプラクティス\n* CI/CDの成果を検討する方法\n* CI/CDパイプラインとは？\n* CI/CDツールの選び方\n* 多くの企業がGitLabのCI/CDを選ぶ理由とは？\n* 結論\n\n[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)は、高品質のアプリケーション・システム開発をよりスピーディに行うだけでなく、エラー削減やコストカットにも効果的です。しかしながら日本ではまだまだ知名度が低く、利用している企業は一握りというのが現状です。\n\n本記事では、[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)とは何かについてわかりやすく解説するとともに、[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)のメリットやベストプラクティスについて紹介します。\n\n## CI/CDとは\n\n[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)は、[継続的インテグレーション（Continuous Integration）](https://about.gitlab.com/ja-jp/solutions/continuous-integration/)と継続的デリバリー（Continuous Delivery）の略称です。それぞれについて詳しく説明します。\n\n### CI（継続的インテグレーション）\n\n[CI](https://about.gitlab.com/ja-jp/solutions/continuous-integration/)とは、開発者がコードを修正しそれをリポジトリにプッシュした際に、自動的にビルドやテストを実行するプロセスや仕組みのことです。[CI](https://about.gitlab.com/ja-jp/solutions/continuous-integration/)によって継続的にテストを行うことで、コードの品質を高く保つことができます。\n\n### CD（継続的デリバリー）\n\nCDは、[CI](https://about.gitlab.com/ja-jp/solutions/continuous-integration/)による統合や一体化をさらに拡張したもので、より高度にかつ自動的にシステムに変更が反映されるように設計された環境や概念を指します。\n\n### CI/CDの考え方\n\n[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)は、分割されているツールやプラットフォームを統合し、1つの変更が自動的に他ツールに反映されるように環境を組むことであり、アプリケーション開発の効率化を図ることです。ツールやプラットフォームを指すこともあれば、手法や概念として用いられることもあります。\n\n近年は著しい変化を伴う環境の中での開発が求められており、開発中に急に変更が生じることも多々あります。従来のウォーターフォール型の開発手法では急な変化に対応できず、常に変更とテストを繰り返しながら開発を進めていく[アジャイル開発](https://about.gitlab.com/ja-jp/solutions/agile-delivery/)が主流となっています。\n\n[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)は、ビルド、テスト、デプロイ、インフラストラクチャのプロビジョニングなどを一体化し、これまで手動で実施していた介入のほとんどを自動化します。アジャイル開発や近年注目が集まる[DevOps](https://about.gitlab.com/ja-jp/platform/)とマッチしており、開発環境の改善を図りたい企業に積極的に採用されています。\n\n今後、よりスピーディで高品質の開発を進めていきたいのであれば、[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)環境や考え方を積極的に取り入れていく必要があるでしょう。\n\n## CI/CDのメリット\n\n[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)のメリットは以下の通りです。\n\n* 制作物の品質が高まる\n* 開発スピードが向上する\n* ツール間のズレを予防できる\n* デベロッパーが開発に集中できる\n\n### 制作物の品質が高まる\n\n[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)を利用することで、ソフトウェアやアプリなどの品質が高まります。\n\n従来であれば、最新のバージョンを適用するのに数時間もしくは数日かかるため、アップデートやツール追加などが容易に行えない状況がありました。\n\n一方[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)では、最新のコードやテクノロジー適用が容易です。開発環境を常に最新に保つことができるため、最先端・高品質の制作物が期待できます。\n\n### 開発スピードが向上する\n\n[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)はツール間で連携されており、入力情報が他ツールに自動的に適用されるため、作業量が必然的に少なくなります。これにより、開発スピードが格段に高まるとともに、急な変化にも対応しやすくなります。\n\n### 環境の差異による問題を予防できる\n\n複数の開発環境を利用する場合、環境ごとの仕様が原因でエラーが生じたり、セキュリティに問題が発生したりすることがありました。[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)では、各ツールが自動的に連携されているため、環境の際による問題が予防でき、それによるエラーやセキュリティ問題が減少します。エラーが少なくなれば人的コストを大幅にカットできるため、予算削減にもつながります。\n\n### デベロッパーが開発に集中できる\n\nデベロッパーの仕事は「開発」です。しかしながら、実際にはエラーやバグの修正に追われ、開発に専念しづらい状況が発生しています。\n\n[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)ではエラーが発生しにくいため、これまでエラー対応にあてていた時間を開発に注げるようになります。デベロッパーのエンゲージメントが向上し、長期にわたって貢献してくれる土台が作られます。\n\n## CI/CDのベストプラクティス\n\n新しく[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)を導入する場合には、これから紹介するベストプラクティスを実施することで、効果をより高められます。\n\n### コードの品質を管理する\n\n[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)は、ビルド、テスト、デプロイまで、同じコードを用いて開発を進めていきます。そのため、初期でコードの間違いがあった場合には、それが後半まで影響を与えます。[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)では、通常の開発以上に、コードの適切な利用が重要です。\n\nデベロッパー間で認識の違いが生じないように、コートレポジトリを適切に作成・管理してください。また、定期的にコードレビューを行うとともに、コードの変更を行う際にはレポジトリの書き換えも必ず行うようにしてください。\n\n### 初期は微調整を頻繁に行う\n\n[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)は、一度組織にフィットすると、開発スピード向上やエラー削減に大きく貢献します。しかしながら、新規に導入した[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)をいきなり組織にフィットさせることは稀です。多くの企業が、実践とフィードバックを繰り返しながら、自社に最適化させていくプロセスを経験しています。\n\nそのため、[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)を取り入れる際には、デベロッパーからの声を丁寧に拾い上げる仕組みを作り上げることが重要です。何に困っているのか、どの部分がうまく機能していないのかを確認しながら、必要に応じて[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)を微調整していくことで、自社に真にマッチしたCI/CDへと改良されていきます。\n\n### 適切なセキュリティ対策を行う\n\n[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)は、ビルド、テスト、デプロイが1つの環境で行える一方で、情報が外部に漏れた場合には、制作物すべてに影響を及ぼす可能性があります。そのため、セキュリティ対策はより強固に行う必要があります。\n\nログイン情報を不特定多数に共有しないようにするとともに、ログイン時の認証を強化する、ツールは最小限に抑える、問題発生時のリスクマネジメントを決めておくなど、セキュリティ対策には力を入れるようにしてください。\n\n### 設定ファイルを再利用する\n\n[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)では、設定ファイルに記述されたコードを繰り返し利用することで、開発時間の短縮とエラーやバグの削減を可能にしています。しかしながら、デベロッパーの人数が増えると情報共有が上手くいかず、設定ファイルの情報を用いずに開発を進めてしまう場合があるようです。これでは、[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)のメリットを最大限に活かせません。\n\n組織として、設定ファイルをどのように活用すべきかを明確化するとともに、見やすい場所に設置しておく、定期的に情報共有するなど、対策を図るようにしてください。\n\n### 気づいたエラーを放置しない\n\n[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)は、コードを複数箇所に自動的に反映させることで、高速化とエラー減を実現しています。しかしながら、もし初期に利用したコードにエラーがあった場合、それがその他の箇所にも影響を及ぼします。エラーに気づいたら、すぐに修正を図るようにしてください。\n\n### デプロイごとに本番前環境をクリーンアップする\n\n環境の実行期間が長くなるほど、適用されたすべての構成変更と更新を追跡することが難しくなります。[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)では、デプロイごとに本番前環境をクリーンアップすることで、以前のデータが悪さするのを防げます。不要なファイルやデータ、一時ファイル、ログなどを毎回削除するようにしてください。\n\n## CI/CDの成果を検討する方法\n\n[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)を導入した場合には、以下の項目を用いて、成果を適切に検討するようにしてください。\n\n### サイクルタイム\n\nサイクルタイムは、1つの作業の工程開始から完了までにかかる時間です。コードの書き始めからアプリ完成までの時間を計測し、[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)導入の前後で比較します。ただし、[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)に変更して初回のアプリ開発は当然時間がかかるため、ある程度慣れてきたころのサイクルタイムを用いて比較するようにしてください。\n\n### 作業時間\n\nデベロッパーが何にどのぐらいの時間を費やしているのかを記録、分析します。[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)がうまく機能し始めると、問題の処理やツール間の調整にかかる時間が減り、メインとなる開発にかけられる時間が増えます。もしその傾向があるのならば、[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)のメリットをうまく享受できていると考えてよいでしょう。\n\n### エラー率\n\nアプリケーション開発においてエラー発生は避けられません。しかしながら、[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)導入前後でエラー率がどの程度変わったのかを追跡することには大きな意味があります。もし[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)導入後にもエラーが大量に発生している、もしくはエラー修正にかかる作業時間が削減されていない場合、[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)がうまく機能していない可能性があるため、見直しが必要です。\n\n### インフラコスト\n\n[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)導入にかかる費用を適切に把握するとともに、パフォーマンスとコストを見比べ、導入が適切であったかどうかを検討します。[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)は様々なメリットがある反面、当然のことながらインフラストラクチャ構築費用がかかります。開発スピードやエラー率、人件費などを見比べながら、[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)導入がコスト面からみて妥当かどうかを検討してください。\n\n### チームの声\n\n実際に作業を行うデベロッパーの声も大切な評価基準です。ツールが使いやすいか、実際にエラーが少なくなったと感じるか、デベロッパー同士の連携に問題ないかなどを質問することで、[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)が開発者目線から見てどうかを把握できます。\n\n## CI/CDパイプラインとは？\n\nパイプラインは特定のものをつなぐパイプです。例えば、AとBという別のものがある場合、パイプラインがない場合にはそれぞれが独立して機能します。一方、AとBがパイプで結ばれている場合、AとBがそれぞれ干渉しあい、影響し合うことで様々なメリット・デメリットを生み出します。\n\n[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)では、様々なステージや環境、ツールなどをパイプラインで結ぶことで自動化を図り、作業の効率化やエラーの削減、アップデートの容易化などを図ります。例えば、通常であればそれぞれ独立している「ビルド」「テスト」「デプロイ」の各ステージをパイプラインで結び付けることで、特定の変更が他のステージにおいても自動的に反映されます。[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)パイプラインは、CI/CDが効果を発揮する上での核となる考え方や構造です。\n\nこのパイプラインが正しく機能しているプラットフォームやツールを利用することで、[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)のメリットを最大限に享受できます。\n\n一方で、[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)パイプラインがうまく機能しない場合、[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)の恩恵を受けられないばかりか、エラーが増えたり、余計に時間がかかったりする場合があります。そのため、[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)ツールの選定は慎重に行う必要があります。\n\n## CI/CDツールの選び方\n\n[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)を導入する目的は、開発サイクル全体にわたって包括的なフィードバックを提供しながら、正確で信頼性の高い製品を迅速に生成することです。そのため、正確性、信頼性、速度の面で優れた[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)ツールを探す必要があります。\n\nまた、[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)ツールの導入は、デベロッパーにとって大きな変化になるのに加え、インフラコストも発生します。そのため、環境をいきなり変えてしまうのではなく、まずは無料トライアルがある[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)ツールを利用し、使用感を確認するようにしてください。\n\nGitLabでは、優れた性能の[CI/CDパイプライン](https://about.gitlab.com/ja-jp/solutions/continuous-integration/)を提供しています。[無料トライアル](https://about.gitlab.com/free-trial/)も受け付けているため、お気軽にお問い合わせください。\n\n## 多くの企業がGitLabのCI/CDを選ぶ理由とは？\n\n多くの[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)ツールは、CIとCDを別々のツールで管理し、それを結びつけることでCI/CDを実現しています。一方、GitLabは長年の[DevOpsプラットフォーム](https://about.gitlab.com/ja-jp/platform/)の提供経験をもとに、ビルドーテストーデプロイが一体となった[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)ツールの提供を行っています。\n\nGitLabツールであれば、他社のツールとの結合を一切考慮することなく、すべて[1つのツール内で完結](https://about.gitlab.com/ja-jp/devsecops/)できます。\n\n## 結論\n\n[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)は、近年重要性が高まっているアプリケーション開発のスピーディ化を実現するために非常に重要です。日本ではまだまだ導入企業が少ないものの、世界ではスタンダードになりつつあります。もし世界水準での開発環境を整えたければ、[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)ツールの導入を少しでも早く検討するとよいでしょう。\n\n*監修：大井 雄介 [@yoi_gl](https://gitlab.com/yoi_gl)\n（GitLab合同会社 ソリューションアーキテクト本部 本部長）*",[723,724,725],"CI","CD","DevOps","2024-11-06",{"slug":728,"featured":14,"template":15},"how-to-keep-up-with-ci-cd-best-practices",{"promotions":730},[731,745,758,769],{"id":732,"categories":733,"header":735,"text":736,"button":737,"image":742},"ai-modernization",[734],"ai-ml","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":738,"config":739},"Get your AI maturity score",{"href":740,"dataGaName":741,"dataGaLocation":247},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":743},{"src":744},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":746,"categories":747,"header":750,"text":736,"button":751,"image":755},"devops-modernization",[748,749],"product","devsecops","Are you just managing tools or shipping innovation?",{"text":752,"config":753},"Get your DevOps maturity score",{"href":754,"dataGaName":741,"dataGaLocation":247},"/assessments/devops-modernization-assessment/",{"config":756},{"src":757},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":759,"categories":760,"header":761,"text":736,"button":762,"image":766},"security-modernization",[709],"Are you trading speed for security?",{"text":763,"config":764},"Get your security maturity score",{"href":765,"dataGaName":741,"dataGaLocation":247},"/assessments/security-modernization-assessment/",{"config":767},{"src":768},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":770,"paths":771,"header":774,"text":775,"button":776,"image":781},"github-azure-migration",[772,773],"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":777,"config":778},"See how GitLab compares to GitHub",{"href":779,"dataGaName":780,"dataGaLocation":247},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":782},{"src":757},{"header":784,"blurb":785,"button":786,"secondaryButton":790},"今すぐ開発をスピードアップ","DevSecOpsに特化したインテリジェントオーケストレーションプラットフォームで実現できることをご確認ください。\n",{"text":50,"config":787},{"href":788,"dataGaName":53,"dataGaLocation":789},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/ja-jp/","feature",{"text":55,"config":791},{"href":57,"dataGaName":58,"dataGaLocation":789},1776446154950]