1ヶ月でWebデザイン・プログラミングスキルをオーダーメイドのカリキュラムで学べるスクール、それがWebCamp。

子供の想像力を伸ばしアイデアを形にする小学生向けプログラミング教室「プロスタキッズ」

CIツールでビルドを自動化!コードは常に動作する状態にしておこう

Pocket

はじめに

継続的インテグレーションをご存知ですか?

継続的インテグレーションは、ビルドやテストなどを常時行っていくことを指します。
開発手法であるエクストリームプログラミング(XP)のプラクティスのひとつでもあり、生産性の向上やコード品質の改善などの効果があります。
ビルド間隔が延びると問題が起きやすくなるため、定期的なビルドが望ましいのです。

この記事では、プログラマーの方のために、継続的インテグレーションについて、具体的な内容やツールなどをお伝えしていきます。

継続的インテグレーションとはどんなものか?

ソフトウェアはソースコードの集合体なので、動作させるにはすべてのコードを統合する必要があります。
言語によってはコンパイルやリンクなどの作業も必要でしょう。
統合局面では、それまで見落とされていた問題が発見されることが多く、大きな手戻りが発生することも少なくありません。

そこで、「継続的インテグレーション(CI)」では、継続的にビルドやテスト、インスペクションを行い、問題を早期に発見します。
統合を行うタイミングとしては、リポジトリにコミットされた時などが適切でしょう。
いずれにしてもコードが変更された時点で即座に実行するべきです。

継続的インテグレーションの効果

生産性の向上

継続的インテグレーションでは、ビルドやテスト、インスペクション作業を自動化します。
これまで手作業で行ってきた作業が自動化されるため、手間が削減され、生産性が向上します。
また、作業の属人化も避けられ、特定のメンバーへの過度の依存も防げます。

コード品質の改善

テストやインスペクションが日常的に行われるようになるため、コードの品質が改善し、バグの数も減少します。
問題があれば早期に発見できますので、修正コストも少なく済むでしょう。
問題が発生したことをいち早く知らせるために、物理的なランプを導入している現場もあるぐらいです。

リリース期間の短縮

テストやインスペクションを経て無事統合されたコードは品質が保証されており、いつでも動作させることができる状態になっています。
そのため、リリースもすみやかに行うことができ、短いリリース間隔でも難なくこなせます。

継続的インテグレーションをサポートするCIツール

継続的インテグレーションでは、作業を自動化しなければいけないため、なんらかのツールの助けを借りる必要があります。

代表的なCIツールといえば「Jenkins(旧Hudson)」でしょう。

JenkinsはJavaで作られているCIツールです。
インストールも簡単で、すべての操作がブラウザからGUIで行えるため、使いやすいツールになっています。Gitを始め、SubversionやMercurial、CVSなど主要なバージョン管理システムに対応しています。
1,400を超えるプラグインが提供されており、拡張性も高いです。

また、TravisCIやCircleCI、WerckerなどのオンラインCIサービスもおすすめです。
自前でCIサーバーを用意する必要もなく、より手軽に継続的インテグレーションを始められます。
無料プランもありますので、一度試してみてはいかがでしょうか?

継続的デリバリーも有効

継続的インテグレーションをさらに発展させたものが、「継続的デリバリー」です。
継続的デリバリーでは、ビルドからテスト、インスペクション、デプロイまで含めて継続的に実施します。

自動的にデプロイする環境はテスト運用環境であり、テスト運用環境で問題がないことを確認した後で本番環境にデプロイします。
また、直接本番環境にデプロイする方法もあり、こちらは「継続的デプロイ」と呼びます。

どちらの場合でもユーザーに素早く製品を届けることができ、その分フィードバックも早くなります。
ユーザー満足度も上がり、Win-Winの関係になれるでしょう。

まとめ

生産性の向上や品質の改善において、継続的インテグレーションは非常に有効な手段です。
継続的デリバリーも同時に行い、ユーザーからのフィードバックを早期に得ましょう。
XPやスクラムなどのアジャイル開発手法もいっしょに導入すれば、よりモダンな開発プロジェクトになるでしょう。

投稿者:プロスタ編集部

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

プログラミングで挫折しそうなら、現役エンジニアにマンツーマンで相談してみませんか?オンラインのプログラミングスクール「TechAcademy」のメンターが対応。

この記事が気に入ったら
いいね!しよう

プロスタの最新情報をお届けします

あわせて読みたい

関連記事

ページ上部へ戻る