【けいぞくてきいんてぐれーしょん】

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

💡 「こまめに統合、自動でテスト」
📌 このページのポイント
継続的インテグレーション(CI)の流れ 開発者たち 開発者A: push 開発者B: push 開発者C: push Git リポジトリ コード統合 トリガー CIサーバー 1. ビルド 2. 自動テスト 3. コード解析 成功 OK! 失敗 通知! CIのメリット バグの早期発見 品質の一定化 統合の衝突を防ぐ コードをpushするたびに自動でビルド・テストが走る仕組み
継続的インテグレーション(CI)のイメージ
ひよこ ひよこ

なぜ「こまめに」統合するの?

ペンギン先生 ペンギン先生

1週間分のコードをまとめてマージすると、大量のコンフリクトと統合バグが発生する。「ビッグバン統合」と呼ばれる地獄だね。毎日、できれば1日に数回マージすれば、問題が小さいうちに発見できる。バグの修正コストは発見までの時間に比例するから、CIで早期発見するのが合理的だよ

ひよこ ひよこ

CIパイプラインには何を入れる?

ペンギン先生 ペンギン先生

①コードのビルド(コンパイルエラーの検出)、②単体テスト実行、③リンター/フォーマッターのチェック、④静的解析SonarQube等)、⑤セキュリティスキャン。重要なのは「速くフィードバックを返す」こと。CIが30分かかるとPRレビューのサイクルが遅くなる。10分以内を目標にしようね

ひよこ ひよこ

CIが失敗したらどうする?

ペンギン先生 ペンギン先生

CIの失敗はチームの最優先事項として修正する。「壊れたまま放置」は絶対NG。CIが赤い(失敗中の)ブランチに新しいPRをマージすると、どの変更が原因か分からなくなる。「メインブランチは常にグリーン(CIパス)」を維持するルールが大事。CIの失敗を無視する文化ができたらCIの意味がないよ

ひよこ ひよこ

CI/CD/CDの3つの違いは?

ペンギン先生 ペンギン先生

CI(Continuous Integration):コードの統合とテストを自動化。CD(Continuous Delivery):リリース可能な状態を常に維持。人間が承認ボタンを押してリリース。CD(Continuous Deployment):テストを通過したら自動で本番デプロイ。CI→Delivery→Deploymentの順でレベルが上がるよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「CI」って出てきたら「コードを頻繁に統合してビルド・テストを自動化するプラクティス」と思えればだいたいOK!
📖 おまけ:英語の意味
「Continuous Integration」 = 継続的統合
💬 Continuous(継続的な)Integration(統合)。Martin Fowlerが2006年に体系化したよ
← 用語集にもどる