ソフト開発におすすめのCI(継続的インテグレーション)ツールとは
CI(継続的インテグレーション)という考え方が提唱されてしばらく経ち、現在では特に、大規模ソフトウェア開発で一般的になってきています。
開発現場でも実際にCIツールが利用されることが増えてきており、ITエンジニアはその知識を持っておく必要があります。
本記事では、そんなCIについて簡単にご紹介しましょう。
Contents [hide]
そもそもCI(継続的インテグレーション)とは?
CI(Continuous Integrationの略)は日本語で継続的インテグレーションと呼ばれており、ソフトウェア開発において短期間で品質管理を行う手法のことです。
コンパイル・テスト・デプロイといったソフトウェア開発のサイクル(ビルド)を頻繁に繰り返し実行することで、問題の早期発見や開発の効率化などが可能となっています。
このCI(継続的インテグレーション)を実現するため、CIツールが利用されています。
CI(継続的インテグレーション)ツールが必要とされる理由
規模の小さなソフトウェアの開発なら個人でも可能ですが、ある程度以上の規模のソフトウェアを開発するとなると、ソフトウェア開発チームを立ち上げることが必要となります。
チーム開発では、チーム内での課題の共有やスケジュール管理が非常に重要です。
チームメンバーが増えればできることも増えますが、常に最新の情報を全員が把握していないと、何人かが同時に同じファイルを編集してしまったり、意図せず他のメンバーが作った処理を阻害してしまうコードを書いてしまうなどの問題が起こりかねません。
継続的インテグレーションの手法が考案される以前は、チームの開発者たちがそれぞれ独自に作業してソースコードを持ち寄り、結合テストを行っていました。
この方法ですと、個々のソースコードはうまく動いていても、ソースコード同士をマージ(結合)すると動かなくなってしまうなどのトラブルが頻発し、結合テストとそのバグ対応に非常に時間がかかってしまいます。
CI(継続的インテグレーション)では、結合する場所として用意した共有リポジトリに、開発者たちがソースコードをコミット(アップロード)すると、マージするためのソースコードのビルドとテストが自動的に実行されます。
このため、開発者は自分の書いたソースコードが共有リポジトリにバグを発生させてしまう場合、すぐに気づいて対応することができます。
結果的に、結合テスト時にバグを探す手間を省き、開発効率を大幅にアップすることができます。
このような理由から、CIツール(CIサービス)はCI(継続的インテグレーション)を行う上で必要不可欠となっています。
CIツールを使うと何ができるのか?
CIツールには様々な機能があります。
自動ビルド機能やテストの自動化、スケジュールしたテストに問題が起こった場合などにメールで知らせてくれる「アラート機能」、CIツールによってはGitなどのバージョン管理システムのリポジトリと連動する機能など多彩です。
CIツールの主な機能の特徴をまとめると、以下のようになります。
- テストの自動化
自動テストを決まったタイミングで実行するようスケジュールを組むことにより、手動でのテスト工数を削減することが可能です。またコードに変更があるごとにテストが実行されるため、早期に不具合を把握でき迅速に対応することができます。
- 開発状況の把握
ビルド結果の履歴を時系列に並べて視認可能な状態にすることにより、ビルドエラーの発生状況や自動テストのテスト結果などの状況を把握することができます。
- ソースコードの静的解析
コーディングルールやバグのチェックツールを組み込むことにより、開発中のソースコードの問題部分をあぶり出すことができます。また、将来発生する恐れがある不具合の発見や保守性の向上など品質を高めていくことも可能です。
- 継続的デリバリー
継続的デリバリー(Continuous Delivery)とは、継続的インテグレーションを拡張したもので、コード変更が発生すると、自動的にビルド、テスト、および本番環境へのリリース準備が実行されるというものです。
継続的デリバリーは、ソフトウェアのリリースプロセスを自動化し、開発チームがお客様に迅速かつ頻繁に更新を配信するのに役立ちます。
ウェブサービスなどのサービス公開時には、今後の運用の為にぜひ導入するべきでしょう。
おすすめCIツール5選
ではここでおすすめのCIツールを5つご紹介しましょう。
- Jenkins
もっとも一般的なCIツール。オープンソースで無料。どのようなスクリプトにも対応できる高い汎用性と、豊富なプラグインによる優れた拡張性、対応言語の多さが人気の理由です。利用者が多く、大きなコミュニティがあり、日本語の情報が集めやすいのも特徴です。
- Travis CI
GitHub上のソフトウェアのビルドやテストを行う、分散型のCIです、ビルド・テストを実行する環境がサービスとして提供されているため、最低限の設定のみで導入できるという特徴があります。プログラミング言語、ビルドやテストの環境、その他の各種パラメータが設定可能です。オープンソースのプロジェクトでは無料で利用できます。
- Codeship
GitHub及びBitbucketとの連携が可能で設定が比較的簡単。パラレルに稼働することで、テストやビルドの処理が早いのもメリットです。SSHで接続することができます。利用制限内なら無料でも使えますが、それを超えると有料となります。
- Bamboo
権限設定に優れたCIツール。さらに日本法人があるため、企業での利用に適しているでしょう。Atlassian製品との連携が可能。また、GitHubやBitbucketに対応しています。有料(10ドル/月~)のCIツールです。
- Circle CI
こちらもパラレル稼働によるテスト・ビルドの処理の早さがメリットの一つです。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ツールも多数存在しており、知識が必要となる場面は増えています。
実際に使用する場合は、それぞれのツールが持つ特徴などを吟味して、自社の開発環境に適したツールを選ぶようにしましょう。