下地輝史のブログ

下地輝史のブログ

別に歌手目指してるわけではないが、ちょっと一曲歌ってみた。

継続的インテグレーションについての話。

継続的インテグレーション、、、どこかで聞いたことある用語。
ソフトウェア開発する際に生産性をあげるための"ナニカ"だろうな〜程度の理解。

 

そんな僕が今回はより実践に近いソフトウェア開発をやるために、この継続的インテグレーションを自分のプロジェクトに導入してみることにした。

 

まず、用語の意味について調べた。

継続的インテグレーションを完結に説明すると"ソースコード変更の度にビルド・テストをこまめに行い、実行結果をチェックして評価しようね"ということ。よくCIと呼ばれている。以下CIと呼ぶよ。

 

うん、普通に簡単な概念。。。

 

なにか当たり前ことを言っている気がしたので、CIをしない場合を考えてみる。

 

CIしない場合(継続的でない場合)

ソースコード変更1→ソースコード変更2→ソースコード変更3→久々にソフトウェアを統合してみる。

ここで、エラーやテスト失敗などの問題なく動いてくれればいい。

しかし、問題があった場合、ソースコード変更1〜3のうちに"どの時点"で問題があったかを知ることができない。バージョン管理システムを利用していれば、変更履歴を辿って原因究明することはできるが、"どの地点"が分かれば無駄な作業が減りそうだ。

 

でも毎回CIするのは煩雑な作業。というか自動化できそうなところ。

そこで登場するのがCIツール。簡単に言うと"ソースコード変更を捕捉して、自動的にCIしてくれるツール"だ。JenkinsやCircle CIがある。

 

CIはビルドとテスト実行の自動化の役割も担っているが、その作業は世間的に先に?広まっているビルドツールに任せちゃっている。

 

じゃあCIツールは何してる?

 

主に以下の2点になると考える。

1.ソースコード変更の捕捉→ビルドツール自動実行

2.ビルドとテストの実行結果を表示

 

う〜んこの凄いことやってない感。

ただ1によって数秒短縮することになる。または2はフィードバック用としての役割を果たすために時系列で見せたり、GUIベースでUI/UXの工夫がされているので、開発効率は気づかずとも上がっているかもしれない。

まとめ

  • CIをすることでソースコード変更による問題の早期発見をしようぜ
  • CIツールを使ってCIを自動化しようぜ
  • CIツールの内部でビルドやテスト、依存関係解決を自動化する作業をビルドツールに任せちゃってるぜ