本文へ移動

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

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

CI = Continuous Integration

継続的インテグレーション(CI)は、ソフトウェア開発においてコードの変更を頻繁にリポジトリへ統合し、ビルドやテストを自動化する手法です。

詳しい説明

1. 定義

継続的インテグレーション(CI)とは、ソフトウェア開発において、ソースコードの変更を頻繁にリポジトリへ統合し、その都度ビルドやテストを自動的に実行する開発手法です。これにより、コードの不具合を早期に発見し、開発の効率を向上させます。

開発者が自分のコードをチームのメインブランチにマージするたびに、CIツールが自動的にビルドとテストを動かします。もしテストが失敗すればすぐに通知が届くため、バグを放置することなく、修正のコストを抑えながら品質を維持することが可能になります。

2. 仕組みと種類

CIの仕組みは、バージョン管理システム、CIサーバー、テストツールを連携させて構成されます。開発者がコードをコミットすると、CIサーバーがそれを検知して自動的に環境を構築し、ユニットテストや静的解析を実行します。これらが自動化されていることで、人間が手作業で行う確認作業を最小限に抑えられます。

CIの種類としては、特定のツールを用いた実装形態があります。GitHub ActionsやGitLab CI、Jenkinsといったツールが主流です。また、プロジェクトの規模や要件に応じて、実行するテストの範囲(単体テストのみか、結合テストまで含めるか)や、ビルドの頻度を柔軟に調整することが可能です。

3. 試験ごとの視点

ITパスポート試験では、アジャイル開発やDevOpsの文脈で登場します。開発スピードを上げつつ品質を確保する手法として、自動化の重要性が問われます。頻繁な統合が、開発の「手戻り」を防ぐために有効であるという基本的な考え方が大切です。

基本情報技術者試験では、ソフトウェア開発手法の具体的なプロセスとして深掘りされます。CIを行うことでバグの混入を早期に発見できるメリットや、CD(継続的デリバリー)との違い、自動化パイプラインの構築における課題などが問われることがあります。アジャイル開発との相性の良さも理解しておくべき点です。

4. 紛らわしい語との違い

CD(継続的デリバリー/継続的デプロイメント)は、CIの次のステップです。CIはコードの統合とテストを自動化するのに対し、CDはテストが終わったコードをステージング環境や本番環境へ自動的に反映・配布することまでを自動化します。CIが品質保証を担い、CDが配布を担うという関係です。

DevOpsは、開発(Development)と運用(Operations)を組み合わせて連携させる文化や手法の総称です。CIやCDは、DevOpsを実現するための強力な技術プラクティスです。DevOpsという大きな概念の中に、CI/CDというツールを活用した手法が含まれているという整理になります。

5. 身近な例

Webサービスの開発現場では、毎日何十回もコードの更新がリポジトリに送られます。CIが導入されていれば、そのたびに自動テストが回り、「ログイン機能が壊れました」「パスワードの暗号化が不十分です」といった警告が即座に開発者にメールやチャットで届きます。

もしCIがなければ、週末にまとめてテストを行い、バグを見つけて修正するのに膨大な時間がかかるかもしれません。CIによって、いつでもリリース可能な状態を保つことができ、新機能を素早くユーザーに届けられるようになります。

試験で問われること

ITパスポート試験

  • 頻繁なコード統合によるバグの早期発見。
  • ビルドとテストの自動化。
  • アジャイル開発やDevOpsにおける役割。

基本情報技術者試験

  • CIとCD(デリバリー)の役割の違い。
  • 自動化パイプラインにおけるテスト実行のタイミング。
  • 手動による確認作業を削減するメリット。