【CIとは】ITエンジニアなら必須?問題を早期発見する便利ツール
CI(継続的インテグレーション)という考え方が提唱されてしばらく経ち、現在では特に、大規模ソフトウェア開発で一般的になってきています。
開発現場でも実際にCIツールが利用されることが増えてきており、ITエンジニアはその知識を持っておく必要があります。
本記事では、そんなCIについて簡単にご紹介しましょう。
Contents [hide]
そもそもCI(継続的インテグレーション)とは?
IT用語のCI(Continuous Integrationの略)は日本語で継続的インテグレーションと呼ばれており、ソフトウェア開発において短期間で品質管理を行う手法のことです。
コンパイル・テスト・デプロイといったソフトウェア開発のサイクル(ビルド)を頻繁に繰り返し実行することで、問題の早期発見や開発効率化などが可能となっています。
このCI(継続的インテグレーション)を実現するため、CIツール(サーバー)が利用されています。
CI(継続的インテグレーション)ツールが必要とされる理由
実際にCI(継続的インテグレーション)を行うと、非常に手間がかかります。
単体テストや個々のモジュールのコンパイルなら個人単位でも対応可能ですが、結合テストやデプロイでは、様々なモジュールが関わるため、そう簡単にはいきません。
そのため短い期間で開発サイクルを回すと、コストが高くついてしまいます。
そのコストを軽減してくれるのが、多くの作業を自動化してくれる「CIツール」です。
作業の自動化により属人化を防ぐことができ、誰にでもビルド作業ができるようになります。
またソフトウェア開発者の負担も軽減されるため、作業ミスの削減につなげることも可能です。
このような理由から、CIツールはCI(継続的インテグレーション)を行う上で必要不可欠となっています。
CIツールを使うと何ができるのか?
CIツールは多くの作業を自動化するだけでなく、様々な機能もあります。
実際にリリースに必要な「ソフトウェアビルド機能」や「デプロイ機能」、スケジュールしたシステムテストに問題が起こった場合などにメールで知らせてくれる「アラート機能」、ツールによってはGitなどの「リポジトリと連動する機能」などです。
このような機能を持ったCIツールを使うことにより、以下のことができます。
■ テストの自動化
自動テストを決まったタイミングで実行するようにスケジュールが組める「テスト自動化ツール」を使用することにより、手動でのテスト工数を削減し開発工数を増加させることが可能です。
さらに、再テストを実行しやすいため、結合テストフェーズ前の単体テストの時点で不備に気づける可能性が高くなります。
また改修があるごとにテスト自動実行がなされるため、早期に不具合を把握でき迅速な対応とることも可能です。
このように自動化を採用すれば、テストコードの実行によるスローテストを回避し、効率的に開発を進められます。
■ 開発状況の把握
ビルド結果の履歴を時系列に並べて可視化することにより、ビルドエラーの発生状況や自動テストのテスト結果などの状況を把握することができます。
■ ソースコードの静的解析
コーディングルールやバグのチェックツールを組み込むことにより、開発中のソースコードの問題部分をあぶり出すことができます。
また、将来発生する恐れがある不具合の発見や保守性の向上など品質を高めていくことも可能です。
おすすめCIツール5選
ではここでおすすめのCIツールを5つご紹介しましょう。
Jenkins
もっとも一般的なCIツール。オープンソースで無料。どのようなスクリプトにも対応できる高い汎用性と、豊富なプラグインによる優れた拡張性、対応言語の多さが人気の理由です。
Travis CI
GitHubと連携するため、簡単な設定で導入できるメリットがあります。また複数のソフトウェアがインストールされた環境でのテストが可能なのも大きな特長です。オープンソースのプロジェクトでは無料で利用できます。
Codeship
GitHub及びBitbucketとの連携が可能で設定が比較的簡単。パラレルに稼働することで、テストやビルドの処理が早いのもメリットです。SSHで接続することができます。利用制限内なら無料でも使えますが、それを超えると有料となります。
Bamboo
権限設定に優れたCIツール。さらに日本法人があるため、企業での利用に適しているでしょう。Atlassian 製品との連携が可能。また、GitHubやBitbucketに対応しています。有料(10ドル/月~)のCIツールです。
Circle CI
こちらもパラレル稼働によるテスト・ビルドの処理の早さがメリットの1つです。GitHubに対応。SSHでの接続も可能です。またiOSのビルドが行なえるのもCircle CIが選ばれる理由となっています。無料となる利用制限内でも、十分に役立つようです。
CIツールの比較
ツール名 | 料金 | 対応言語 | 特徴 |
---|---|---|---|
Jenkins | 無料 | 汎用性・拡張性に優れた定番。 | |
Travis CI | 無料 | PHP、 PYTHON、 RUBY、JAVAなど |
GitHubと連携し簡単に設定可能。 複数ソフトウェアがインストールされた状況でテスト可能。 |
Codeship | 100ビルド/月まで無料 それ以上は49ドル/月~ |
GitHub及びBitbucketと連携し設定が簡単。 テストやビルドの処理が高速。 |
|
Bamboo | 10ドル/月~ | 権限設定に優れるテストやビルドの処理が高速。 Atlassian 製品との連携が可能。 |
|
Circle CI | 1コンテナ無料 それ以上は50ドル/月 |
PHP、 PYTHON、 RUBY、JAVAなど |
テスト・ビルドの処理が高速。 iOSのビルドも行える。 |
こちらで紹介した以外にも、CIツールは無償・有償を含め、多くの種類があります。
機能が少しずつ違うため、自社の開発環境にあったものを選択したいところです。
もし、どれを使うか迷っている場合や使い方を覚えるために必要であるなら、無料でかつ広く利用されているJenkinsを第一候補とすることをおすすめします。
まとめ
CI(継続的インテグレーション)は問題・課題の早期発見と効率的な開発を実現するため、ソフトウェア開発では必須になりつつある手法です。
また様々な機能を持ったCIツールも多数存在しており、知識が必要となる場面は増えています。
実際に使用する場合は、それぞれのツールが持つ機能などを吟味して、自社の開発に適したツールを選ぶようにしましょう。