CI

Continuous Integration の略で、コードの変更を頻繁に統合し自動テストで品質を保証する手法

DevOps自動化

CI とは

CI (Continuous Integration) は、コードの変更を頻繁にメインブランチに統合し、自動ビルド・自動テストで品質を保証する手法である。Martin Fowler が 2006 年に体系化。詳細は「CI/CD」を参照。

CI の基本フロー

1. 開発者がコードをコミット・プッシュ
2. CI サーバーが変更を検知
3. 自動ビルド
4. 自動テスト (ユニット、リント、型チェック)
5. 結果を通知 (成功 / 失敗)

GitHub Actions での CI

name: CI
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: 22, cache: npm }
      - run: npm ci
      - run: npx tsc --noEmit       # 型チェック
      - run: npx eslint .            # リント
      - run: npm test                # テスト
      - run: cfn-lint template.yaml  # IaC 検証

CI で実行すべきチェック

チェック ツール 目的
型チェック TypeScript 型エラーの検出
リント ESLint コード品質
ユニットテスト Vitest, Jest ロジックの検証
IaC 検証 cfn-lint テンプレートの検証
セキュリティ npm audit 脆弱性の検出

CI のベストプラクティス

CI は 5 分以内に完了させ、遅いとフィードバックが遅延する。ブランチ保護で CI 通過を必須にし、node_modules のキャッシュやテストの並列実行で高速化する。失敗時は Slack やメールで即時通知する。

CI の高速化

# キャッシュで npm ci を高速化
- uses: actions/setup-node@v4
  with:
    node-version: 22
    cache: npm  # node_modules をキャッシュ

# テストの並列実行
- run: npm test -- --shard=1/3
- run: npm test -- --shard=2/3
- run: npm test -- --shard=3/3

CI vs CD

概念 説明
CI コミットごとに自動ビルド・テスト
CD (Delivery) 本番デプロイ可能な状態を維持
CD (Deployment) テスト通過で自動デプロイ

現場での応用を知るには関連書籍も役立つ。

関連用語