Chat (Lingr.com)
Informaiton
Daily
Column
- MySQL日本語の旅(5/1)
- アクセス向上秘伝(5/9)
- 一風変ったHaskellλ門(6/13)
- SICP Answer Book (5/31) 問題3.26追加
Zope Solution
Extra
アーカイブ
OSS案内所
Site Info
関連リンク
最近流行りのブログってあるじゃないですか?
あれ、面白いですよね〜。
これだけ多くの人が情報発信するチャンスを得られたのは、人類史上初のことではないでしょうか?
私もこっそりブログを書いていますが、最初は毎日更新するのがしんどかったです。
でも、今はだいぶ慣れてきて、それほど時間をかけずにこなせています。
「習慣の力」は偉大だ!
3日坊主の私でも毎日続けられるのは、ある意味奇跡的かも?...
そんな毎日の積み重ねが、近い将来のとんでもない力になるのかも知れません。
まさに継続こそ力なりってやつですね。
そして、このコラムも毎週続けていることに意味があるんでしょうね、きっと。
「継続的インテグレーション」も、毎日の積み重ねが重要なプラクティスです。
どういうことかと言うと、毎日結合テストをしなさいというプラクティスなんです。
「え?結合テストってリリースの前にやるんじゃないの?」
そこが従来の開発とXPの大きな違いです。
XPでは、毎日が結合テストの日なんです。
でも実は、1日1回のペースは「遅すぎるとき」のペースです。
1日何度も結合テストをするのが、本来のXPにおける結合テストのサイクルです。
「そう言われても、そんなペースで結合テストできる訳ないじゃん!」
そうですね...きっと、従来の開発のやり方のまま、このサイクルに入ることは私であっても不可能でしょうね。
ですので、やり方を変えないといけません。
1日何度も結合テストをするためには、幾つかの条件が必要になります。
まず、いつでもリリースできる状態にする必要があります。
開発者がコードを各人バラバラに管理していたり、インテグレーションのたびにどこかを手作業で書き換えなければならないとなると、結合テストのための環境作りだけで時間がかかってしまい、テストどころではなくなってしまいます。
解決するには、開発の初期段階から、リリースがいつでも可能な状態をキープするのが一番ですね。
自動ビルドツールやバージョン管理ツールをプロジェクト標準ツールとして導入しておくのが最善の策です。
ツールを使った継続的インテグレーションの細かな様子については、気ままなリンクの”継続的インテグレーション”のリンクをご覧下さい。
次に、テストは自動化されていなければなりません。
テストがコンピュータによって自動化されていないと、1日何度も結合テストをすることは誰がやっても実現不可能でしょう。
時間がとてつもなくかかるからです。
それに、手作業で何度も同じテストをするのは、とても退屈なものです。
きっと、退屈さのあまり、テスト失敗が出てても、簡単に見逃してしまうでしょう...
これが、自動化されたテストであれば、テストの実行はボタン一発。
あとは何分(何秒?)かほっておけば、勝手にテスト結果が出てきて、うまくいったのか、ダメだったのかが一目でわかります。
また、どこを直せばいいのかもすぐにわかります。
また、何かよからぬコード変更をしたときも自動的に警告を上げてくれます。
「そんな結合テスト、いつ作る暇があるんだ?」
答えは...結合テストは作りません。
というより、単体テスト=結合テストなのです。
これがXPの強みの1つですね。
単体テストを作り、それを結合時に走らせれば、そのまま結合テストになっているのです。
ですので、XPでの単体テストは、開発時だけでなく、インテグレーション時にもコードが動くことを保証してくれるのです。
テスト自体の細かいことについては、テスティングについてのコラムをご覧下さい。
最後にインテグレーションや結合テストを決して1人でやらないことですね。
共同所有のコラムの冒頭でペアインテグレーションの話を書きましたが、開発中の結合テストのためのインテグレーションも2人で行った方が効率・安全性・心理面の全てにおいて、相当なメリットがあります。
ペアでの作業にイマイチ価値が見出せないというあなたは、一度インテグレーションをペアでやってみることをオススメします。
継続的インテグレーションを行うことで、毎日動くものがリリースされるようになります。
毎日、スッキリした気持ちで帰れるのは、気分がいいものです。
また、いつ見ても動いているというのは、はたから見ても気持ちがいいものです。
継続的インテグレーションをマスターして、もうリリース直前に結合テストが通らなくて徹夜続きなんてことからオサラバしましょう!
次週2/25(金)は、「週40時間労働」です。お楽しみに!
There is no comment.