はじめに
プログラム自体は、コーディングしてテストを行えば、はい出来上がりとなります。
ただし、実際の現場では一人で開発することは少なく、チーム内の複数名で開発することがほとんどなのです
その際、ほかの人が作りこんだ不具合が自分のプログラムに影響を与えるということが多々あります(もちろんその逆も多々ある)
古い企業の場合、プログラム修正の翌日以降、チームの中の構成管理者が結合テスト環境のサーバにプログラムを適用する段階になって、コンパイルエラーが出るなどの問題に気づきます。
その後は、何が悪い、だれが直したソースだ、と大騒ぎになって対応します。
これが本番リリース直前だったとしたら目も当てられません。
そこで近年では不具合の検出はできるだけ早く、自動的に行えるような仕組みが多くの企業で取り入れられています。
そのような仕組みの一つが CI(継続的インテグレーション) と呼ばれています。
CI(継続的インテグレーション)とは
プログラムコードに変更があると、そのコンパイルからテストまで自動化する手法です。
個々のプログラムからなるソフトウェアは、実際に一つにまとめて(インテグレートして)動かすまで何がおきるかわかりません。
不定期にインテグレートするような運用の場合、コード変更が大量になる傾向があります。その際、結合テストを行って不具合を発見しても、原因究明に多大な時間がかかることがよくあります。
CI(継続的インテグレーション)を取り入れることで、コードを変更するたびにビルド・テストが自動で実行できるようになります。
細かい間隔で定期的にテストが実施できるので、即時に問題を発見でき、手戻りを最小限に抑え、結果的に開発にかける時間を削減できます。
どのようにしてCIを実現するのか
手組みでビルドシェルを作り、CRONで動かしてもいいのですが、、、
世の中には既にCIを実現するソフトウェアがあります。
いくつか紹介します。
1. Jenkins
CIツールでは最も有名なもののひとつが『Jenkins』。私の会社でもお世話になっています。
基本無料!(重要)で利用できますし、1800以上のプラグインが用意されており、痒い所に手が届くよう柔軟に利用できます。
Jenkins自体はJavaで作られており、Javaが動作する環境であればどこででも構築できます(多くは共用のLinuxサーバやWindowsサーバ上でしょう)
CI設定は管理画面から行います。
・どこのバージョン管理からソースを持ってきて、どのようにビルドするのか。
・毎日何時何分に実行するのか
・エラーになったら、登録されているメールアドレスに自動で通知
など色んな設定ができます。
2. Circle CI
『Circle CI』は、Jenkinsに次いで一般的なCIツールです。
Jenkinsとの大きな違いは 有料 。
ただし、有料の効果は大きいです。
まず自前のサーバは必要ありません。インストールする手間もプラグイン最新化の手間も要りません。
CIを行うためのサービスのみが提供されています。(これをSaaSという)
利用者はGitHubなどのクラウド型バージョン管理サービスとCircle CIをつなぎ、yml形式のファイルでどのようなCIをするか記述し、それを管理画面から登録するだけ。
簡単に始められます。
欠点としては、SVNのようなオンプレ型のバージョン管理ツールは使えないことが挙げられます。
以上、アプリケーション開発の現場で重要な仕組みの一つを紹介させていただきました
次回はもう一つの CD について紹介したいと思います
都内大手IT企業に勤務(13年目)
生まれは兵庫。
教育学部からIT業界に飛び込んだ異色の経歴
慣れないことに苦労しながらもプログラミングからサーバ構築、果ては顧客対応まで一気通貫にこなす 何でもエンジニアに!
得意言語はJava、HTML、CSS、JavaScript
現在はアパレル向けの会員管理・POS管理システムの開発・運用に携わる。
以下のサービスを出品しています!
何でもご相談ください。