こんにちは、SAKURUGのTakumiです。
今回はCI/CDの基礎知識的な部分やどのような活用方法があるのかについて説明できたらなと思います。
正直、長い文章を読むのも大変だと思うので簡潔にまとめてみました。
少しでもお役に立てたらと思います。
CI/CDとは「Continuous Integration(継続的インテグレーション)/Continuous Delivery(継続的デリバリー)」の略称です。
CI/CDは製品に加えた変更を自動でテストし、リリースできる状態まで自動化する開発手法です。
CIとはソフトウェア開発におけるビルド、テスト、デプロイなどのプロセスを自動化し、開発効率と品質を向上させる手法です。
通常、開発者は自分のローカル環境で新しい機能や修正を行いますが、そのコードをメインのリポジトリに統合するタイミングで問題が発生することがあります。例えば、他の開発者が書いたコードとコンフリクトしたり、動作が不安定になったりすることがあります。CIはこれを防ぐため、コードを小さな単位で頻繁に統合し、すぐにビルドとテストを自動実行します。
CIで検証済みのコードを、テスト環境や本番環境に自動的にデプロイするプロセスです。
継続的デリバリーはデプロイ可能な状態までを指し、継続的デプロイメントは実際に本番環境にデプロイするまでを指します。
・自動テストによって、コードが統合されるたびに不具合を早期に発見し、修正することができる。
・コードを統合する際に必ずテストが行われるので、品質が担保され、コードの整合性が保たれる。
・開発者は「後でまとめて統合して問題が出る」ことを避け、頻繁に小さな単位でコードを統合するため、エラーや競合を最小限に抑えられる。
・常に最新のコードを本番環境にデプロイし、ユーザーに早くフィードバックを得ることができる。
・変更頻度を高めることで、機能追加やバグ修正が早く反映することができる。
効果 | 説明 |
---|---|
開発スピード向上 | コード変更→テスト→リリースのサイクルが早くなる |
品質向上 | 自動テストでバグの混入を防止できる |
作業の属人化防止 | 手順がCI/CDに記述されていれば、誰でも実行可能になる |
チームの連携強化 | プルリク単位でコードレビューや動作確認が可能になる |
ー活用内容ー
コードの変更をGitで管理し、プッシュやマージのタイミングでCI/CDを自動実行。
ー使用例ー
・Gitにプッシュ → GitHub Actionsで自動ビルド・テスト
・プルリクエスト作成時にCIで自動チェック
ー活用内容ー
コードを変更したら、すぐに自動でビルド・テストを実行。
ー使用例ー
・Node.jsのアプリを「npm run build」 → 「npm test」で自動実行
・Javaの場合MavenやGradleでビルド → JUnitでテスト
ー活用内容ー
コードスタイルや構文ミスを自動チェック。
ー使用例ー
・ESLint, Prettier, Flake8, RuboCopなどをCIに組み込む
・「コードレビュー前にチェック」→レビュー効率UP
ー活用内容ー
テストに通過したコードを自動でステージング(テスト用)環境にデプロイ。
ー使用例ー
・Pull Requestがマージされたらステージングへ自動デプロイ
・QAチームやPMがすぐに動作確認できる
ー活用内容ー
ステージング環境で確認済みのコードを自動又は手動トリガーで本番に反映。
ー使用例ー
・「main」ブランチへのマージで本番環境へ自動デプロイ(継続的デプロイ)
・マニュアル承認後に本番へ(継続的デリバリー)
ー活用内容ー
本番環境で問題があれば、過去バージョンに即時戻せるようにする。
ー使用例ー
・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 |
カジュアル面談では、会社の雰囲気や仕事内容についてざっくばらんにお話ししています。
履歴書は不要、服装自由、原則オンラインです。興味を持っていただけた方は、
ぜひ以下からお申し込みください。
皆さんにお会いできることをサクラグメンバー一同、心より楽しみにしております!
カジュアル面談応募フォーム