対象試験と出題頻度
継続的インテグレーション(CI)は、基本情報技術者・応用情報技術者で出題されるテーマです。
アジャイル開発やDevOpsの文脈で頻出となっており、「CD(継続的デリバリー/デプロイメント)」「リファクタリング」「テスト駆動開発(TDD)」との違いを正確に区別できるかが問われます。
詳細をクリックして確認
基本情報技術者
応用情報技術者
★★★☆☆
ランクB(標準)覚えておくと有利
用語の定義
情報処理試験を勉強していると、「継続的インテグレーションって、結局なにを”継続”してるの?」と混乱しがちです。
継続的インテグレーション(Continuous Integration / CI)とは、一言で言うと
「開発者がコード変更を頻繁に共有リポジトリへ統合し、ビルドとテストを自動実行する開発プラクティス」
のことです。
イメージとしては、「毎日少しずつ片付ける部屋」です。
掃除を半年に一度まとめてやろうとすると、ホコリが積もりすぎて手がつけられません。
一方、毎日5分ずつ片付ければ、汚れは小さなうちに発見でき、対処も簡単です。
CIも同じで、コードの変更を「ためずに」「こまめに」統合してチェックすることで、不具合を早期に発見し、後からまとめて直す苦しみを避ける手法です。
📊 継続的インテグレーション(CI)の基本情報
| 項目 | 内容 |
|---|---|
| 英語名 | Continuous Integration(CI) |
| 提唱者 | Grady Booch(1991年)/Martin Fowler・Kent Beck(XPで普及) |
| 主な利用工程 | 実装・結合テスト |
| 代表的なツール | Jenkins、GitHub Actions、GitLab CI/CD、CircleCI |
| 関連する開発手法 | XP(エクストリームプログラミング)、アジャイル、DevOps |
解説
従来のウォーターフォール開発では、各メンバーが数週間〜数か月かけて自分の担当機能を作り込み、最後に一気に統合していました。
この方式では、統合段階で大量のコンフリクト(競合)やバグが噴出し、修正に膨大な工数を要する「統合地獄(Integration Hell)」が頻発していたのです。
この課題を解決するために、エクストリームプログラミング(XP)の中核的プラクティスとして提唱されたのがCIです。
CIパイプラインの流れ
CIは「コードをコミットしてから自動チェックが完了するまで」を一連のパイプラインとして構成します。
🔄 CIパイプラインの基本フロー
― push をきっかけに ①〜④ が一連の自動処理として連続実行される ―
push
①コミット
変更を共有
②ビルド
自動コンパイル
③自動テスト
単体/結合
④結果通知
成功/失敗
完了
⏱ ①〜④はすべて自動・連続実行(途中で失敗するとパイプラインは停止)
失敗時はチームに即通知され、その場で修正 → 再度パイプラインを実行
設定ファイルのイメージ(GitHub Actions)
実際のCIは、リポジトリに置いた設定ファイルを読み取って自動実行されます。雰囲気をつかむための例を示します。
# .github/workflows/ci.yml
name: CI
on:
push:
branches: [ main ]
pull_request:
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm ci
- run: npm run build # ← ②ビルド
- run: npm test # ← ③自動テスト
「pushされたら、Node環境を用意して、依存をインストールし、ビルドとテストを実行する」という流れが、わずかなYAMLで自動化されているわけです。
CIで得られる4つのメリット
| メリット | 内容 |
|---|---|
| 不具合の早期発見 | 変更直後にテストが走るため、原因の切り分けが容易になる |
| 統合コストの削減 | 小さな単位で統合するため、コンフリクトの規模が小さくて済む |
| 品質の安定化 | 回帰テストが毎回自動で走り、デグレード(劣化)を防げる |
| リリースの高速化 | 常にビルド可能な状態が保たれ、CD(継続的デリバリー)の前提が整う |
CI/CD/継続的デプロイメントの違い
CIと混同されやすいのが「CD」です。両者は一連の自動化パイプラインを構成しますが、対象範囲が異なります。
| 略称 | 正式名称 | 対象範囲 |
|---|---|---|
| CI | Continuous Integration (継続的インテグレーション) |
コード統合〜ビルド〜自動テストまで |
| CD | Continuous Delivery (継続的デリバリー) |
本番環境へ”いつでもリリース可能な状態”を保つ(最終リリースは人手) |
| CD | Continuous Deployment (継続的デプロイメント) |
本番環境への反映まで全自動 |
CIはあくまで「統合とテストの自動化」に焦点を絞った概念であり、その下流にある「リリース工程の自動化」はCDの担当領域です。
では、この用語が試験でどのように出題されるか見ていきましょう。
💡 CIの核心を3行で
・コード変更をこまめに統合し、ビルドとテストを自動実行する開発プラクティス
・XP発祥で、現代ではアジャイル/DevOpsの基礎技術
・CDと組み合わせて「CI/CDパイプライン」として運用される
試験ではこう出る!
CIは、FE・APの午前問題で「アジャイル開発のプラクティス」「DevOps関連用語」のテーマとして繰り返し出題されています。
📊 過去問での出題実績
| 試験回 | 出題内容 | 問われたポイント |
|---|---|---|
| AP R元秋 午前 問49 |
継続的インテグレーションの説明として最も適切なものを選ぶ問題。 | ・「ソースコードの結合とビルドを高頻度で繰り返す」が正解 ・継続的デリバリー、リファクタリング等の説明がひっかけ |
| AP H30秋 午前 問49 |
XPのプラクティスに関する問題。 | ・CIはXP由来であることが背景知識として問われる |
| FE R3 科目A 問46 |
アジャイル開発のプラクティス選択問題。 | ・「頻繁な統合とテスト自動化」がCIのキーワード |
📝 IPA試験での出題パターン
パターン1:「CIの説明を選べ」
4つの選択肢にCI・CD・リファクタリング・TDDの説明が並び、CIに該当するものを選ぶ形式。キーワードは「結合」「ビルド」「高頻度」「自動化」。「本番環境へのリリース自動化」と書かれていたらCD(デプロイメント)なので除外する。
パターン2:「目的を選べ」
CIを行う目的として「統合時の不具合を早期に発見する」「常にリリース可能な品質を維持する」を選ばせるパターン。「設計の改善」(リファクタリング)や「テストを先に書く」(TDD)はCIの目的ではない。
試験ではここまででOKです。Jenkinsの具体的な操作や、特定のCIツールの設定構文までは問われないので、深追いは不要です。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. 継続的インテグレーション(CI)の説明として、最も適切なものはどれでしょうか?
- A. 開発者がコード変更を共有リポジトリへ頻繁にマージし、ビルドと自動テストを継続的に実行することで、不具合を早期に発見する開発プラクティス。
- B. プログラムの外部仕様を変えずに内部構造を整理し、コードの可読性や保守性を高める作業。
- C. テストコードを実装コードよりも先に記述し、そのテストを通すための最小限のコードを書きながら開発を進める手法。
正解と解説を見る
正解:A
解説:
選択肢Aは、コード変更を頻繁に統合し、ビルドとテストを自動実行することで不具合を早期に検出するというCIの本質を正確に表しています。AP R元秋 午前問49で正解として採用された記述に沿った内容です。
選択肢Bはリファクタリングの説明です。リファクタリングは「外部から見た振る舞いを変えずに内部構造を整理する」作業であり、統合・テストの自動化を主目的とするCIとは異なります。選択肢Cはテスト駆動開発(TDD)の説明です。TDDは「テストを先に書く」という開発スタイルそのものを指す概念であり、コードの統合プロセスを自動化するCIとは別物です。両者ともアジャイル系のプラクティスとして並列に語られるため、選択肢上で混同を狙ったひっかけとして頻出します。
よくある質問(FAQ)
Q. CIを導入するには必ず専用ツール(Jenkinsなど)が必要ですか?
必須ではありません。CIは本来「考え方・プラクティス」であり、理屈の上ではメンバー全員が手元で毎回ビルドとテストを回すだけでも成立します。ただし、人手では抜け漏れが起きるため、現実的にはJenkins・GitHub Actions・GitLab CI/CDなどのツールで自動化するのが一般的です。試験では「プラクティス」と「ツール」を切り分けて覚えると、選択肢の判別が早くなります。
Q. 「ビルド」と「インテグレーション」は何が違うのですか?
ビルドはソースコードを実行可能な形式に変換する作業(コンパイル・パッケージング)を指します。インテグレーションは、複数の開発者が書いたコードを一つのコードベースへ”統合”する行為そのものを指します。CIでは「統合」が起点であり、その直後の確認手段としてビルドと自動テストが付随する、という順序関係を押さえてください。
Q. CIでテストが失敗したらどうするのが正解ですか?
XPの原則では「ビルドが壊れたら最優先で直す」とされています。失敗を放置したまま新しいコミットを重ねると、原因の特定が困難になり、CIの最大のメリットである”早期発見”が失われるためです。実務では「mainブランチを常にグリーン(成功状態)に保つ」というルールを設けるチームが多く、AP午前のアジャイル系設問でも「ビルドが壊れた状態を放置しないこと」が望ましい姿勢として示されます。
Q. ウォーターフォール開発でもCIは使えますか?
使えます。CIはアジャイル/XP由来ですが、原理は「こまめに統合してこまめにテストする」だけなので、開発プロセスを問わず適用可能です。実際、ウォーターフォールの実装フェーズや結合テストフェーズでCIを取り入れて品質を底上げする現場も増えています。試験対策としては「アジャイルやDevOpsで使われる典型的プラクティス」と理解しておけば十分です。