FE EXAM

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

変更を頻繁に統合し自動でビルド・テストを行う開発手法。

INTERACTIVE VISUALIZATION
ビルド
テスト
結果
フェーズ
idle
パイプライン
統合の頻度
1日に何度も
シナリオ
ステップ1 / 7
STEP 1/7CIパイプラインを始める前CI(継続的インテグレーション)では、開発者が書いたコードを「ためこまず、こまめに全体へ合流(統合)させる」ことを大切にします。横軸はパイプラインの流れで、コミットからビルド・テスト・通知まで自動で進みます。まずは開発者が手元で機能を作り終えた状態です。
CIパイプライン(自動)コミット待機変更検知待機ビルド待機テスト待機結果通知待機↑ コミットが起点
CODE VIEW — 手元で機能を完成させた
// ログイン機能を追加した
// これから共有リポジトリへ送る
解説

📌
CIとは

コミットビルドテストすべて自動

CI(継続的インテグレーション)とは、開発者の変更を頻繁に統合し、そのたびに自動でビルド・テストを行う開発手法です。インテグレーション=統合、つまり「みんなのコードを1つに合流させること」を指します。

身近な例で考えると、共同制作の文集を毎日少しずつ合本するようなものです。原稿を全員で締切間際にまとめて持ち寄ると、字数オーバーや内容のかぶりが大量に見つかって大混乱します。毎日少しずつ合本して校正すれば、問題は小さいうちに片づきます。

上のツールで▶ボタンを押すと、コードのコミットをきっかけに、ビルド・テストが自動で実行され結果が通知されるまでの流れを確認できます。

🔧
パイプラインの構成

CIは「パイプライン」と呼ぶ自動の流れ作業で動きます。パイプライン=決まった順番で処理をつないだ自動の組み立てラインのことです。1つの段階が終わると、次の段階へ自動で受け渡されます。

よくあるパイプラインの段階は次のとおりです。
コミット/プッシュ:開発者が変更を共有リポジトリへ送る(パイプラインの起点)
変更検知(トリガー):CIサーバが新しい変更を検知し、自動で起動する
ビルド:ソースコードを実際に動く形に組み立てる
自動テスト:用意したテストを全部実行し、壊れていないか確認する
結果通知:成功/失敗を開発者へ自動で知らせる

工場のベルトコンベアにたとえると分かりやすいです。部品(コード)を載せると、組み立て(ビルド)→検査(テスト)→合否表示(通知)が自動で流れていくイメージです。途中で不合格になれば、その段階でラインが止まり、原因をすぐ調べられます。上のツールで各段階が左から順に点灯する様子を確認しましょう。

利点

まとめて統合→ 大量のバグ頻繁に統合→ 小さなバグ早く気づくほど直しやすい

CIには、開発を安定させるいくつかの利点があります。共通するのは「問題を小さいうちに見つける」という考え方です。


バグの早期発見:変更のたびに自動テストするので、不具合が小さいうちに見つかる
原因の特定が簡単:直前の小さな変更が疑わしいので、どこが悪いか分かりやすい
統合の衝突を減らせる:頻繁に合流するので、コードのぶつかり合い(コンフリクト)が小さくて済む
手間の削減:ビルドやテストを人が手で行わずにすみ、ミスも減る

逆に統合を後回しにすると、最後にすべてのバグが一気に噴き出して大変なことになります。こまめな統合は、たまった洗い物を毎食後に片づけるのに似ています。ためないからこそ、いつも軽い力で片づくのです。上のツールの結果通知が、まさに早期発見の働きにあたります。

練習問題

🎯
基本情報技術者 練習問題

Q1.継続的インテグレーション(CI)の説明として最も適切なものはどれか。
A.変更を頻繁に統合し、自動でビルド・テストを行う開発手法
B.本番環境へいつでも自動でリリースできる状態を保つ手法
C.開発の最後に一度だけすべての変更を統合する手法
D.テストを手作業で実行する手法
Q2.CIのパイプラインで、コミット後に自動で行われる処理として一般的なものはどれか。
A.本番サーバへのデプロイのみ
B.ビルドと自動テストの実行、結果の通知
C.設計書の自動作成
D.開発者による手動の動作確認
Q3.CIを導入する利点として最も適切なものはどれか。
A.統合を後回しにできるので作業がまとめやすい
B.バグや競合を早期に発見でき、修正が容易になる
C.テストを書かなくてよくなる
D.コードレビューが不要になる

関連コンテンツ