この CI/CD ガイドでは、現在非常に注目されている CI/CDについて、その概要、仕組み、必要性や使える CircleCI の CI/CDツールのなどをわかりやすくご紹介していきます。

CI/CD とは?

CI/CD とは、ソフトウェアやアプリ開発には欠かせない 開発手法の一つであり日本語では「継続的インテグレーション&継続的デリバリー」、英語では「Continuous Integration・CI / Continuous Delivery・CD」二つの言葉を一つに略して「CI/CD」と略します。CI/CDを開発プロセスに導入することにより、コードの品質チェックはもちろん、バグの発見、テストの自動化、自動化デリバリー、デプロイメントが実現し、開発者やチーム全体の生産性の向上にも非常に効果があると知られている開発手法です。

CI/CDとは?

CI/CDが必要とされる理由は?

CI/CDが近年注目される理由としては、CI/CDがもたらすメリットが重視されています。現在アジャイル開発が非常に注目されていますが、アジャイル開発は基本的に開発リリースのサイクルを短期間で行うため、コード変更やテストの回数が増加してしまうのが現実です。そこでアジャイル開発に付け加えることにより、短期間でも開発をスムーズに自動化させてくれるのが「CI/CD」です。CI/CDを現在の開発プロセスの一種として導入することによってアプリケーションを本番環境に移行させたり、顧客からのフィードバックを受け付ける素早さも注目される理由として知られています。

また、CI/CDを導入する一番のメリットとしては、サービスやアプリなどの変化に対する対応やインフラ環境の管理、コミットからリリース全ての作業にかかる時間の短縮と、コード変更が発生した場合でも自動でテストが行えるようになるので、開発チーム全体の生産性向上にも効果があります。

CI/CDの仕組み

それでは、CI/CDは実際どのような仕組みなのでしょうか?

CI/CDの実践のために必要なステップを自動化したものを「CI/CD パイプライン」と呼びます。

CI/CDの流れ図

CICD パイプラインのフェーズが、上の図に示されています。開発パイプラインの開始段階で、開発者はコードを作成します。開発されたソースコードが管理ツールにコミットされると、CI(継続的インテグレーション)によって自動的にテストを実行します。

ここで問題やバグが見つかった場合、修正のために開発者に返されます。

すべてのCI テストケースに合格すると、次はCD(継続的デリバリー)によって本番環境へ転送されます。実際にエンドユーザーへデプロイするかどうかは、都度人の手で判断して行います。

ここまでがCI/CD の一連の流れです。

CI/CD の次のステップとして「継続的デプロイ」があり、継続的デプロイは自動テストに合格したすべての変更が自動的に本番環境に配置され、エンドユーザーへのデプロイメントが自動で行われます。

鍵となるのは CI/CD ツール(取り組みへの全体像)

CI/CD は、従来の障害を取り除きながら、ソフトウェアの統合、リリース、デプロイのプロセスを自動化します。これにより、従来は時間のかかっていたプロセスが削減され、ソフトウェア開発においてより迅速で効率的な作業を可能にします。

また、自動化によりリリース サイクルを短縮することで、コストの削減や、開発に関わる様々なリスクも軽減することができます。

CI と CD、 継続的デプロイのそれぞれの違い

CI と CD、 継続的デプロイの違いとは?

「CI/CD の仕組み」でご紹介したように、CI/CDの次のステップとしてCD(継続的デプロイ) が存在ます。 

CI は開発者がコードを作成しているときに実行される一連のプラクティスであり、CD はコードが完成した後に実行される一連のプラクティスと言えるでしょう。

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

継続的インテグレーション(Continuous Integration)では、ビルドとテストを自動化させるのがメインです。新しいコミットがメイン ブランチに統合されるたびに、アプリケーションが壊れていないかどうかをチェックする自動テストに重点が置かれています。

継続的デリバリー

継続的デリバリー(Continuous Delivery)では、コード変更後にステージング環境等にデプロイし、システムテスト等を行います。

自動テストに加えて、自動リリース プロセスがあり、ボタンをクリックするだけでいつでもアプリケーションをデプロイできることを意味します。

継続的デリバリーでは、毎日、毎週、隔週など、ビジネス要件に合ったリリースを設定できます。 ただし、継続的デリバリーのメリットをより活用するためには、問題が発生した場合にトラブルシューティングが簡単な小さなバッチをリリースできるように、できるだけ早く実稼働環境にデプロイすることをお勧めします。

継続的デプロイ (continous deployment)

継続的デプロイ (Continous Deploymnet) では、すべてのプッシュを実稼働環境に自動的にデプロイします。手動で行う作業がないため、承認のためのパイプラインを滞らせることがありません。 継続的デリバリーと継続的デプロイメントの唯一の違いは、ビルドを実稼働環境へプッシュするためのボタンを手動で押すか、自動で行うかと言えるでしょう。

CI/CD の導入メリットとは?

CI/CDを導入することにより、開発テストやリリース等の自動化を実現することができ、多くのメリットを企業にもたらします。以下に代表的なメリットをご紹介していきます。

  • コード品質向上: CI/CDの導入により、手動で行っていたリリース作業が全て自動化され、コストの削減はもちろん、生産性とコード全体の品質が向上されます。また、CircleCI などのCI/CDツールを使用すると、コードエラー等も全てテストのプロセスいないで発見することができ、マニュアル作業の時間を削減することができます。

  • 製品・ソフトウェアリリースの加速: ソフトウェアリリースや製品リリースに費やしてた手作業を CI/CDを活用することによって、開発期間に掛かっていた時間を短縮し、製品リリースの加速を実現させプロジェクトを効率的に進めることが可能です。

  • バグ検出と修正の楽さ: CircleCIなどのCI/CDツールを導入しテストを自動化することによって、バグの検出やテストがより素早く簡単に行えます。

他にも、CI/CD導入メリットには、コストの削減や開発スピードの向上、アジャイル開発にもたらすメリットやインフラストラクチャの効率化、コラボレーションの向上、フォードバックループの向上等が挙げられ、現在デジタル化されている世界で欠かせない開発手方の一種となっています。

CircleCIのCI/CDツール が必要な理由

現在、多くのエンジニアチームがCircleCIを利用しています。より高速で信頼性の高いビルド、テストとデプロイのパイプライン、優秀な設計、高度なセキュリティを誇り、非常に複雑なパイプラインを効率的に実行することを可能にします。

是非こちらのブログ記事もご参照ください。:「ビジネス視点で CircleCI を選ぶ理由

まとめ

本記事ではCI/CDの概要やその仕組みについて紹介してきました。 CI/CDを使うことでビルドやテストなど様々な作業を自動化できるだけではなく、デプロイを自動化することでより効率的にプロダクト開発ができるようになります。


CircleCIでは最新のCI/CDツールを提供しています。 無料枠の内容も充実していますので、選定の候補としてぜひお試しくださいませ。

CI/CDツールを早速使用する


CI/CD関連記事