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