継続的インテグレーション (Continuous Integration, CI)
継続的インテグレーション - Wikipedia
主にプログラマーのアプリケーション作成時の品質改善や納期の短縮のための習慣のこと。
狭義にはビルドやテスト、インスペクションなどを継続的に実行していくことを意味する。
そして、リリースに備えるという習慣をチームに根付かせること。
ここでデプロイにありがちな失敗の要因を挙げると、
- ヒューマンエラー、typo、バグ
- チームメンバーとの連絡ミス
- 動作エラー、設定ファイルの誤り
- 開発環境とデプロイ環境との違い
- 古くなったドキュメント
などが挙げられる。
すぐにデモをしないといけなくなったときに備えて、
リリース(ビルド+インテグレーション+デプロイ=継続的インテグレーション)に
備える文化を身につけよう。
この本的に継続的インテグレーションとは…
開発者がソフトウェアに加えた変更を取り込んで、
ソフトウェア全体として統合する作業を途切れることなく
続けていく取り組みのこと。
継続的インテグレーションツールをセットアップするために必要なこと
ソースコードレポジトリは、svnかgitを使うのがいい。
悲観的ロックモデルのバージョン管理ツールだけは絶対つかってはいけない。
チェックイン手順を習慣づける方法
- 最新のソースコードを取得する
- 変更を加える
- テストを実行する
- 作業中に発生した更新差分を取得する
- 再度テストを実行する
- チェックイン
ビルドの自動化
ビルドエージェントを利用して、
チェックインされるたびにビルドを自動化するのが望ましい。
そして、ビルドの所要時間は10分を切るのがなお望ましい。
作業単位を小さくする
リファクタリングと同じく、コードの統合もこまめにやる。
統合は常にしんどいが、頻度を高くすることで統合も容易になる。
統合が厄介で面倒な作業になるまえに、こまめにコードをマージすべき。
開発しているソフトウェアを、いつでも動く状態にしておくことが肝要である。
自分の担当している部分が少なくて不完全でも、ビルドとテスト、デプロイを
やれるところまでやる。
最後に
自分のプロジェクトの開発手法がアジャイルかどうか、他のプロジェクトは
どうか、といったのはどうでもよく、重要なのは素晴しいプロダクトを作ること、
それを自分のお客さんにちゃんと届けることなのである。
- 毎週、価値ある成果を届けられているか?
- たゆまぬ改善のための努力を惜しまず続けているか?