San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
閉じる
プライバシー設定
ウェブサイト運営に必要なCookieや類似技術を使用しています。追加のCookieは貴社の同意がある場合のみ利用されます。同意は「Agree」をクリックすることでいただけます。どのデータが収集され、どのようにパートナーと共有されているかの詳細は、Cookieポリシープライバシーポリシーをご確認ください。
Cookieは、貴社デバイスの特性や、IPアドレス、閲覧履歴、位置情報、固有識別子などの特定の個人情報を取得、解析、保存するために使用されます。これらのデータは様々な目的で利用されます。分析Cookieによりパフォーマンスを評価し、オンライン体験やキャンペーンの効果向上に役立てます。パーソナライズCookieは、利用状況に応じた情報やサポートを通じ、貴社専用の体験を提供します。広告Cookieは、第三者が貴社のデータをもとにオーディエンスリストを作成し、ソーシャルメディアやネット上でのターゲット広告に使用します。貴社は各ページ下部のリンクから、いつでも同意の許可、拒否、または撤回が可能です。
ご送信ありがとうございます。内容を受け付けました。
申し訳ありません。フォーム送信時にエラーが発生しました。
/
/
DevSecOps

CI/CDパイプライン 🔧

CI/CDとは?

CI/CDの概念は、DevOpsチームがコードに頻繁かつ確実な変更を加えるための主要な手法となっています。

継続的インテグレーション (CI) と 継続的デリバリー (CD) は、コード変更をスムーズに行い、ソフトウェアの堅牢性を高めるためのプロセス、ツール群、そして実践の一式を指します。この開発プロセスは、CI/CDパイプラインと呼ばれます。

CI/CDパイプライン 🔧

CI/CDは、DevOpsチームがソフトウェア開発中に採用する注目すべき手法です。この考え方は、DevOpsチームが開発の各側面に専念できるようにする、優れたプロセスのベストプラクティスです。結果として、チームは指定された要求を達成し、コード品質やセキュリティを守りながら、自動化された開発プロセスを活用できます。

CI/CDの概念

継続的インテグレーション - CI

継続的インテグレーション(CI)とは、コードに小さな改善や変更を頻繁に加える開発手法で、DevOpsチームが採用する考え方や一連のプラクティスです。多くの先進的なソフトウェアは、さまざまな環境やツールと互換性のあるコードを求めるため、コードベースの変更を調整・管理する仕組みが必要とされます。

CIは、予測可能な自動化テスト、ビルド、パッケージングの基盤を整えることを目的としています。しっかりとした管理体制があれば、チームは日常的にコード変更を加え、協調作業やアプリの品質向上が期待でき、システム全体への大きな障害も防げます。

Continuous Integration - CI

継続的デリバリー – CD

継続的デリバリー(CD)とは、CIの延長線上にある考え方で、自動化された仕組みによりアプリを特定の環境や条件に提供することを保証します。多くのチームは、開発だけでなくテストなどさまざまな環境で作業しており、CDはコード変更を自動で反映させる体制の構築を目指します。

CI/CDの概念は、ソフトウェア提供時に考慮すべきすべての運用や主要な要件を網羅します。CI/CDの自動化は、API呼び出しからウェブワーカー、データベースなど、アプリ起動時に必要な重要サービスを処理します。

継続的インテグレーションと継続的デリバリーは、ユーザーに質の高いアプリとコードを届けるため、一定のテストが欠かせません。こうした継続的テストは、自動化されたテスト、実行、ロールバックとしてCI/CDパイプラインの一部を成し、全工程が想定通りに動作し、アプリが期待通りの結果を示すことを保証します。

十分に整備されたDevOpsプロセスでは、CI/CDパイプラインを通じてアプリに変更が反映され、デプロイが直接生産環境へ進む継続的デリバリーが適用されます。DevOpsチームの中には、生産環境への展開を日次や時次で行うところもあります。ただし、継続的デリバリーが常に企業向けアプリに最適とは限らず、チームは各制約を考慮して最も適した方法を選ぶ必要があります.

継続的インテグレーションがチーム協力とアプリ品質向上に与える利点・重要性

継続的インテグレーションは、自動化テストやビルドツールといった確立された手法によって支えられる開発戦略です。CIを採用するDevOpsチームでは、開発者が定期的にコード変更をバージョン管理リポジトリへコミットし、ほとんどのチームが少なくとも1回のコミットを行います。この手法の狙いは、短期間に大きな変更を加えるより、長期にわたる小さな変更の方が、問題箇所の特定やコード修正が容易になるという点です。

CIを採用するチームは、機能フラグやバージョン管理の仕組みから統合プロセスを開始します。コードは頻繁にコミットされても、機能や変更は短期あるいは長期にわたって展開できます。DevOpsチームは、最終的に構築する機能やコードを選定するため、さまざまな手法を取り入れています。

一部のチームは、アプリ展開前に機能やコードのオン・オフを切り替える仕組みとして機能フラグを利用します。まだ完成していない機能には、コードベースにフラグを付け、開発中は非公開として保持し、完成後にリリース可能とします。最近の調査では、機能フラグを採用するDevOpsチームの63%が、テスト結果やソフトウェア品質の向上を実現したと報告しています。最適な結果を得るため、CI/CDツールと連携した機能フラグ管理や、その他のコンポーネント単位の仕組みの導入が推奨されます。

開発プロセスで機能を管理するもう一つの方法として、ブランチ管理戦略があります。これは、新しいコードや変更を開発、テスト、生産環境用のメインブランチに統合するためのルールを定める仕組みです。開発に時間のかかる機能には専用のフィーチャーブランチが作成され、システムへの負荷を軽減します。機能が完成すると、エンジニアはフィーチャーブランチで行った変更をメイン開発ブランチに統合できます。この方法は責任管理に有効ですが、複数の機能が同時進行する場合は難易度が上がる可能性があります。

ソフトウェア開発プロセスは、アプリ、データセット、その他の要素をひとまとめにして自動化されます。たとえば、Javaアプリの場合、CIはJavaアプリや重要なデータベース内容を除外せず、CSS、HTML、JavaScriptなどの静的ファイルも含めてパッケージ化します。

CIは、ソフトウェアやデータベースのパッケージ化だけでなく、全システムの自動化によりユニットテストなど様々なテストを実施します。これにより、エンジニアは自分たちのコード変更がすべてのユニットテストに合格しているかどうかを確認できます。

ほとんどのCI/CDツールは、バージョン管理リポジトリへのコミットや指定されたスケジュールに基づいてシステムを構築できる仕組みを提供します。DevOpsチームは、チームの規模、日々のコミット数、その他のアプリ要件に応じ、最も適したスケジュールを選ぶべきです。変更とビルドが迅速に管理されることは、頻繁にコーディングを行うチームの生産性向上につながります。

CI/CDの違いとは

CI/CDの略称は記事冒頭で定義されましたが、他にもいくつかの意味があります。CIは常に継続的インテグレーションを指し、基本的には開発者が取り入れる自動化プロセスです。効果的なCIとは、アプリへのコード変更が頻繁にビルド、テストされ、共通リポジトリに統合される状況を意味します。この自動化仕組みにより、互いに干渉することなくアプリの各部分が同時に開発されます。

CI/CDのCDは、継続的デリバリー、すなわち安定したデプロイメントを意味します。両者は関連する概念であり、使用ケースに応じて使い分けられることもあります。いずれも、開発パイプラインの次の段階の自動化に焦点を当てていますが、パイプライン完了後の自動化レベルを示すため、個別に用いられる場合もあります。

継続的デリバリーは、開発者がアプリに加えた変更が、リポジトリにコミットされると自動的に不具合やエラー、欠陥のチェックが行われ、DevOpsチームによって生産環境へ展開される状態を示します。この考え方は、DevOpsと業務部門間の柔軟性不足や連携の弱さという問題に対応するものです。つまり、CDの目的は、ビルド後に次のコードを展開する労力を最小限に抑えることにあります。

CDの別の意味として、継続的な構成(Continuous Configuration)があります。これは、開発者の変更をリポジトリから生産環境へ自動的に反映し、即時にユーザーへ提供するプロセスを指します。手動のプロセスが開発チームの負担となる問題に対処し、CI/CDパイプラインの次段階を自動化することで、継続的デリバリーの利点をさらに高めます。

CI/CDパイプラインでよく使われるツール

CI/CDツールは、DevOpsチームが実施するビルド、開発、テストの自動化を目的としています。統合に特化したツール、開発・デリバリー向けツール、継続的テストに注力したツールなど、それぞれの用途に合わせた選択が可能です。特に優れ、広く利用されているツールとして自動化サーバーであるJenkinsが挙げられます。Jenkinsは、開発者が統合および開発を管理できる機能を備えており、またTekton Pipelinesは、堅牢なコンテナレジストリやクラウド管理サービスを活用した標準的なCI/CD機能を提供するフレームワークです。

JenkinsやTekton Pipelinesに加え、以下のオープンソースツールも試す価値があります:

  • Spinnakerは、マルチクラウド環境向けに設計されたCDプラットフォームです。
  • GoCDは、アプリのデプロイと可視化に重点を置いたCI/CDサーバです。
  • Concourseは、いくつかの用途に適したCI/CDフレームワークです。
  • Screwdriverは、継続的デリバリー向けのビルドプラットフォームです。

DevOpsチームは、各ベンダーが提供する管理型CI/CDツールの利用も検討できます。主要なクラウドサービスプロバイダーは、GitLab、Atlassian Bamboo、Travis CI、Circle CIなど、CI/CDパイプラインを支援するツールを提供しています。

Tools In CI/CD Pipelines

さらに、DevOpsに用いられる他のツールもCI/CDパイプラインの重要な構成要素です。Chef、Puppet、Ansibleなどの構成自動化ツール、rkt、cri-o、Dockerのようなコンテナランタイム、Kubernetesのようなコンテナオーケストレーションツールは、CI/CDツールとしてだけでなく、初期状態で導入されていることが多いです.

CI/CDはDevOpsおよびDevSecOpsとどう関係するか

DevOpsとは、手法、ツール、実践を組み合わせ、組織が迅速にサポートやアプリを提供できるようにする考え方です。DevOpsは、手動および自動プロセスの短所を解消し、全体の開発および展開サイクルを近代化・高速化します。DevSecOpsは、開発者が開発工程の各段階でテストを実施することを求める概念で、この手法により製品のセキュリティが向上します。DevSecOpsを取り入れることで、潜在的な脆弱性を迅速に発見し、最終製品の安全性が高められます。

intersection of CI / CD and Devops

CI/CD、DevOps、DevSecOpsは、いずれも開発に関わる重要な要素です。開発チームは、実用性からCIでプロセスを開始することが一般的です。DevOps体制では、組織が全体のフローを円滑に管理し、各段階でソフトウェアを効率的に構築できます。一方、DevSecOps体制では、セキュリティを最優先に、問題を迅速に特定・解決することが可能です。どの手法を採用するかは、チームの特性や要求、プロジェクトの規模に依存します。

FAQ

Open
CI/CDでよく利用されるツールは何ですか?
Open
ソフトウェア開発における継続的インテグレーション (CI) とは?
Open
継続的デリバリーとは?
Open
CI/CDのメリットは?
Open
ソフトウェア開発におけるCI/CD導入の良い実践例は何か?

参考資料

CI/CD on Google Cloud - Google Documents

GitLab CI/CD - GitLab

最新情報を購読

更新日:
February 25, 2025
学習目標
最新情報を購読
購読
関連トピック