アジャイルはソフトウェア開発の工業化なのかも知れない
ここ数年、ITソリューション塾では (株) 戦略スタッフサービスの戸田社長にゲスト講師としてお越しいただいて、アジャイル開発について講義をしていただいています。概要についてはこのブログでも取り上げました。(「すべてを作らない」~アジャイルを使った新しいシステム開発 1, 2, 3) 今回リンク張るためにちょっと見直してみたら、3回目の最後にこんなこと書いてますね。
次回は、これにより「すべてを作らない」ことが可能になる仕組み、今回触れることができなかったロールの話、YAGNI、そしてアジャイルとTPS (Toyota Production System) の関係について、書いてみたいと思います。
どうしましょう。。まるっきり忘れてました ^^;
ちょうど先々週、塾の 24 期で戸田さんの講義があったところですので、アジャイルと TPS の関係について書いてみたいと思います。
戸田さんのお話では、現在アジャイル開発の手法として使われているスクラムや XP などは、TPS (Toyota Production System) の考え方が元になっているということです。こちらに詳しい資料があります。
TPS とは、言うまでも無くトヨタ自動車が生み出した生産方式で、いまや世界中のモノ造りの現場で採用されています。TPS そのものについてはいろいろと解説されているサイトもありますので、そちらを参照頂くとして、ここでは TPS がどのようにアジャイル開発に取り入れられているのかについて、TPS で使われるキーワードに対比させて書いてみます。(詳細については以前のブログを参照して下さい)
ポカヨケ、ムダの排除
XP で行われる「ペアプログラミング」は、2 人のプログラマが共同でひとつのコードを書いていく作業です。一人がプログラミングをし、もう一人が隣でチェックすることでポカミスを無くし、ムダ・ムリなアルゴリズムを無くし、コードの可読性も向上させることができます。
自行程完結
アジャイル開発では、作業を1-2時間単位のタスクに細分化し、その粒度でプログラムを作ります。個々のモジュールはペアプログラミングで可読性が高まり、エラーが排除されていますから、非常に高品質なものになっています。毎日、その日書いたコードを前日までのコードに結合してテストを行いますから、バグが残ることはほぼありません。次の工程に迷惑をかけることがないのです。
見える化
細分化したタスクは付箋で管理され、何が終ったか、何が残っているかが一目瞭然です。
カイゼン、アンドン
ペアプログラミングでは、プログラミング中に常にカイゼンが行われていますが、定期的にプログラムのコードレビューを行い、品質の向上に努めています。また、一日の終わりの結合テストでエラーが出ると、警報が鳴り (アンドン)、全員でコードをレビューするという仕組みを導入している開発チームもあるということです。
アジャイルとは、ソフトウェア開発の工業化なのかも知れない
まだまだ細かい話はあるのですが、ここまで書いてきて、要するにアジャイルとは、ソフトウェア開発の工業化なのではないか、と思うようになりました。ここで言う工業化は「低コストで一定の品質の製品を作ること」という意味です。
ソフトウェア開発における生産性は、多かれ少なかれプログラマの能力に影響を受けます。ある調査によると、プログラマの生産性には10倍の開きがあるということです。というか、聞く人によっては「いやあ、100倍は違うんじゃ無い?」などという人もいます。つまり、プロジェクトの期間も工数もコストも、最終的にはどれだけ優秀なプログラマを確保できるかにかかっているわけです。ところが見積り段階ではそんなことはわからないので、「普通の」(その基準も相当に曖昧ですが) プログラマを想定した見積りになり、結果は・・神のみぞ知る、ということになりがちなのでは無いでしょうか。
プロジェクトとしては、天才プログラマを育てたり見つけたりするよりも、誰がやっても一定の品質のプログラムができる方法を考える方が良いと言うことではないでしょうか。アジャイルは、そのためのヒントを提示してくれているように思えます。
ITソリューション塾・第25期の受付を開始しました
次回のITソリューション塾は、5月16日(火)からです。詳細日程やお申し込みにつきましては、こちらをご覧下さい。