SAKURUG TECHBLOG

CI/CDとは?活用方法は?

timestampauthor-name
Takumi

はじめに

こんにちは、SAKURUGのTakumiです。

今回はCI/CDの基礎知識的な部分やどのような活用方法があるのかについて説明できたらなと思います。

正直、長い文章を読むのも大変だと思うので簡潔にまとめてみました。

少しでもお役に立てたらと思います。

そもそも、CI/CDとは何か?

CI/CDとは「Continuous Integration(継続的インテグレーション)/Continuous Delivery(継続的デリバリー)」の略称です。

CI/CDは製品に加えた変更を自動でテストし、リリースできる状態まで自動化する開発手法です。

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

CIとはソフトウェア開発におけるビルド、テスト、デプロイなどのプロセスを自動化し、開発効率と品質を向上させる手法です。

通常、開発者は自分のローカル環境で新しい機能や修正を行いますが、そのコードをメインのリポジトリに統合するタイミングで問題が発生することがあります。例えば、他の開発者が書いたコードとコンフリクトしたり、動作が不安定になったりすることがあります。CIはこれを防ぐため、コードを小さな単位で頻繁に統合し、すぐにビルドとテストを自動実行します。

CD(継続的デリバリー/継続的デプロイメント)

CIで検証済みのコードを、テスト環境や本番環境に自動的にデプロイするプロセスです。

継続的デリバリーはデプロイ可能な状態までを指し、継続的デプロイメントは実際に本番環境にデプロイするまでを指します。

使用目的

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

 ・自動テストによって、コードが統合されるたびに不具合を早期に発見し、修正することができる。

 ・コードを統合する際に必ずテストが行われるので、品質が担保され、コードの整合性が保たれる。

 ・開発者は「後でまとめて統合して問題が出る」ことを避け、頻繁に小さな単位でコードを統合するため、エラーや競合を最小限に抑えられる。

CD(継続的デリバリー/継続的デプロイメント)

 ・常に最新のコードを本番環境にデプロイし、ユーザーに早くフィードバックを得ることができる。

 ・変更頻度を高めることで、機能追加やバグ修正が早く反映することができる。

CI/CDの活用で得られるもの

効果

説明

開発スピード向上

コード変更→テスト→リリースのサイクルが早くなる

品質向上

自動テストでバグの混入を防止できる

作業の属人化防止

手順がCI/CDに記述されていれば、誰でも実行可能になる

チームの連携強化

プルリク単位でコードレビューや動作確認が可能になる

活用方法

①Gitなどのバージョン管理と連携する

ー活用内容ー

 コードの変更をGitで管理し、プッシュやマージのタイミングでCI/CDを自動実行。

ー使用例ー

 ・Gitにプッシュ → GitHub Actionsで自動ビルド・テスト

 ・プルリクエスト作成時にCIで自動チェック

②自動ビルド・自動テスト(CI)

ー活用内容ー

 コードを変更したら、すぐに自動でビルド・テストを実行。

ー使用例ー

 ・Node.jsのアプリを「npm run build」 → 「npm test」で自動実行

 ・Javaの場合MavenやGradleでビルド → JUnitでテスト

③静的解析やLintの自動化

ー活用内容ー

 コードスタイルや構文ミスを自動チェック。

ー使用例ー

 ・ESLint, Prettier, Flake8, RuboCopなどをCIに組み込む

 ・「コードレビュー前にチェック」→レビュー効率UP

④ステージング環境への自動デプロイ(CD)

ー活用内容ー

 テストに通過したコードを自動でステージング(テスト用)環境にデプロイ。

ー使用例ー

 ・Pull Requestがマージされたらステージングへ自動デプロイ

 ・QAチームやPMがすぐに動作確認できる

⑤本番環境へのデプロイ(CD)

ー活用内容ー

 ステージング環境で確認済みのコードを自動又は手動トリガーで本番に反映。

ー使用例ー

 ・「main」ブランチへのマージで本番環境へ自動デプロイ(継続的デプロイ)

 ・マニュアル承認後に本番へ(継続的デリバリー)

⑥ロールバックやバージョン管理もCI/CDに組み込み

ー活用内容ー

 本番環境で問題があれば、過去バージョンに即時戻せるようにする。

ー使用例ー

 ・DockerやKubernetesと連携してデプロイ管理

 ・Gitタグをトリガーに特定バージョンをデプロイ

使用する代表的なツール

用途

ツール例

CI/CDパイプライン

GitHub Actions, GitLab CI, CircleCI, Jenkins

ビルド管理

Maven, Gradle, npm, Webpack

テスト

JUnit, Jest, PyTest, RSpec

デプロイ

AWS CodeDeploy, Docker, Kubernetes, Vercel, Netlify

▼高校生向けインターン実施中!

弊社では高校生向けにインターンを行っております!
現役エンジニア指導の下、一緒に働いてみませんか?

高校生インターン応募フォーム

▼カジュアル面談実施中!

カジュアル面談では、会社の雰囲気や仕事内容についてざっくばらんにお話ししています。
履歴書は不要、服装自由、原則オンラインです。興味を持っていただけた方は、
ぜひ以下からお申し込みください。

皆さんにお会いできることをサクラグメンバー一同、心より楽しみにしております!

カジュアル面談応募フォーム

記事をシェアする

ABOUT ME

author-image
Takumi
2024年入社。Javaを主としたweb系システムの開発を行っています。