by shigemk2

当面は技術的なことしか書かない

アジャイルサムライ 継続的インテグレーション:リリースに備える

継続的インテグレーション (Continuous Integration, CI)
継続的インテグレーション - Wikipedia

主にプログラマーのアプリケーション作成時の品質改善や納期の短縮のための習慣のこと。
狭義にはビルドやテスト、インスペクションなどを継続的に実行していくことを意味する。

そして、リリースに備えるという習慣をチームに根付かせること。

ここでデプロイにありがちな失敗の要因を挙げると、

  • ヒューマンエラー、typo、バグ
  • チームメンバーとの連絡ミス
  • 動作エラー、設定ファイルの誤り
  • 開発環境とデプロイ環境との違い
  • 古くなったドキュメント

などが挙げられる。

すぐにデモをしないといけなくなったときに備えて、
リリース(ビルド+インテグレーション+デプロイ=継続的インテグレーション)に
備える文化を身につけよう。

この本的に継続的インテグレーションとは…
開発者がソフトウェアに加えた変更を取り込んで、
ソフトウェア全体として統合する作業を途切れることなく
続けていく取り組みのこと。

継続的インテグレーションツールをセットアップするために必要なこと

ソースコードレポジトリは、svnかgitを使うのがいい。
悲観的ロックモデルのバージョン管理ツールだけは絶対つかってはいけない。

チェックイン手順を習慣づける方法

  1. 最新のソースコードを取得する
  2. 変更を加える
  3. テストを実行する
  4. 作業中に発生した更新差分を取得する
  5. 再度テストを実行する
  6. チェックイン

ビルドの自動化
ビルドエージェントを利用して、
チェックインされるたびにビルドを自動化するのが望ましい。
そして、ビルドの所要時間は10分を切るのがなお望ましい。

作業単位を小さくする
リファクタリングと同じく、コードの統合もこまめにやる。
統合は常にしんどいが、頻度を高くすることで統合も容易になる。
統合が厄介で面倒な作業になるまえに、こまめにコードをマージすべき。

開発しているソフトウェアを、いつでも動く状態にしておくことが肝要である。
自分の担当している部分が少なくて不完全でも、ビルドとテスト、デプロイを
やれるところまでやる。



最後に

自分のプロジェクトの開発手法がアジャイルかどうか、他のプロジェクトは
どうか、といったのはどうでもよく、重要なのは素晴しいプロダクトを作ること、
それを自分のお客さんにちゃんと届けることなのである。

  • 毎週、価値ある成果を届けられているか?
  • たゆまぬ改善のための努力を惜しまず続けているか?