CI/CD

作成: 2026.03.24更新: 2026.03.24

CI/CD とは

CI/CD は、ソフトウェア開発における CI(Continuous Integration: 継続的インテグレーション)CD(Continuous Delivery / Deployment: 継続的デリバリー / デプロイ) を組み合わせた概念である。コードの変更を頻繁に統合し、ビルド・テスト・デプロイを自動化することで、品質を維持しながら開発スピードを向上させることを目的としている。

手作業でのビルドやテストは時間がかかり、ヒューマンエラーも発生しやすい。CI/CD はこれらの作業を自動化し、開発者がコーディングに集中できる環境を実現する。

なぜ SIer で重要か

SIer のプロジェクトでは、複数の開発者が同時にコードを変更するため、統合時に問題が発生しやすい。CI を導入することで「コードをマージしたらビルドが通らなくなった」「テストが失敗するコードが混入した」といった問題を早期に発見できる。

また、SIer の品質管理では静的解析ツール(FindBugs、SonarQube 等)によるコード品質チェックやカバレッジ計測が求められることが多い。これらを CI パイプラインに組み込むことで、毎回のコミットで自動的に品質チェックが実行され、品質レポートが蓄積される。

基本概念

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

CI は、開発者がコードを変更するたびに、自動でビルドとテストを実行する仕組みである。

CI で自動化される処理:

処理説明
コンパイルソースコードを実行可能な形式に変換する
ユニットテスト個々のクラスやメソッドが正しく動作するか検証する
静的解析コードのバグやセキュリティリスクを検出する(SonarQube、FindBugs 等)
カバレッジ計測テストがコード全体のどの程度を網羅しているかを測定する

CI の流れ:

開発者がコードをコミット → バージョン管理システムが変更を検知
    → ビルドサーバーが自動でビルドを実行
        → ユニットテストを実行
            → 静的解析を実行
                → 結果を通知(成功 / 失敗)

CI の最大の目的は 早期にバグを発見すること である。問題が小さいうちに検出・修正することで、後工程での手戻りコストを大幅に削減できる。

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

CD には、継続的デリバリー継続的デプロイ の 2 つの意味がある。

概念説明
継続的デリバリー(Continuous Delivery)テスト済みのコードをいつでもデプロイ可能な状態に保つ。本番環境へのデプロイは 手動承認 を経て実行する
継続的デプロイ(Continuous Deployment)テスト済みのコードを 自動的に 本番環境まで反映する。人手による承認プロセスがない

SIer の現場では、セキュリティ・コンプライアンス要件から 継続的デリバリー(手動承認あり)が採用されることが多い。

CI/CD パイプライン

CI と CD を組み合わせた一連の自動化フローを「パイプライン」と呼ぶ。

┌──────┐   ┌──────────┐   ┌──────────┐   ┌──────────┐   ┌──────────┐   ┌──────┐
│ コミット │→│  ビルド    │→│ ユニットテスト │→│  静的解析  │→│ デプロイ   │→│ 承認  │
│       │  │          │  │          │  │          │  │ (開発環境) │  │(本番) │
└──────┘  └──────────┘  └──────────┘  └──────────┘  └──────────┘  └──────┘
            ← ─────────── CI ───────────→             ← ──── CD ────→

パイプラインのいずれかのステップで失敗すると、後続のステップは実行されず、開発者に通知が送られる。

SIer での使われ方

Jenkins

Jenkins は、SIer の現場で最も広く使われている CI/CD ツールである。2004 年に「Hudson」として開発が始まり、2011 年に Jenkins として独立した。

Jenkins が SIer で好まれる理由:

  • 無料(OSS) --- Java 製のオープンソースソフトウェアであり、ライセンス費用がかからない
  • 豊富なプラグイン --- 1,800 以上のプラグインが存在し、Maven / Gradle / Git / SonarQube 等あらゆるツールと連携できる
  • オンプレミス環境で動作 --- クラウドに接続できないセキュリティ要件の厳しい環境でも、社内サーバーに Jenkins をインストールして運用できる
  • 長い実績 --- 20 年近い実績があり、トラブル対応のノウハウが社内に蓄積されている

Jenkinsfile(Pipeline as Code):

近年の Jenkins では、CI/CD パイプラインの定義を Jenkinsfile というファイルにコードとして記述し、バージョン管理する方式が推奨されている。

// Jenkinsfile の例
pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                sh 'mvn compile'
            }
        }
        stage('Test') {
            steps {
                sh 'mvn test'
            }
        }
        stage('Static Analysis') {
            steps {
                sh 'mvn sonar:sonar'
            }
        }
    }
}

その他の CI/CD ツール

Jenkins 以外にも、以下の CI/CD ツールが SIer の現場で使われるケースがある。

ツール特徴
GitLab CI/CDGitLab と統合された CI/CD。.gitlab-ci.yml で定義する
GitHub ActionsGitHub と統合された CI/CD。クラウド環境で手軽に利用可能
Azure DevOpsMicrosoft のDevOps プラットフォーム。Azure 環境との親和性が高い

SIer における CI/CD の実態

Web 系企業と比較すると、SIer の CI/CD 導入には以下のような特徴がある。

  • CI の主な活用はビルド + 静的解析の自動化 --- ウォーターフォール開発では、テスト工程が独立しているため、CI で実行されるのはコンパイルとユニットテスト、静的解析が中心となる
  • 本番デプロイは手動承認 + 手順書ベースが一般的 --- 金融系・官公庁系の案件では、セキュリティ審査やコンプライアンス要件があり、自動デプロイが許可されないことが多い。リリース手順書に基づいて承認者の確認を経てデプロイする
  • 導入が遅れている現場も多い --- 特にレガシーシステムの保守案件では、CI/CD が未導入のまま手動ビルド・手動デプロイで運用されている現場も存在する

しかし、DevOps の考え方の浸透やクラウド移行の進展により、SIer でも CI/CD の導入が加速している傾向にある。

まとめ

  • CI は、コード変更のたびに自動でビルド・テスト・静的解析を実行し、早期にバグを発見する仕組みである
  • CD は、テスト済みコードをデプロイ可能な状態に保つ(デリバリー)または自動デプロイ(デプロイ)する仕組みである
  • Jenkins は SIer で最も広く使われている CI/CD ツールで、無料・オンプレ対応・豊富なプラグインが強みである
  • SIer の現場では、ビルド + 静的解析の自動化が CI の主な活用方法であり、本番デプロイは手動承認が一般的である
  • CI/CD の導入は開発効率と品質の向上に直結するため、今後ますます重要性が高まる