トヨタ生産方式とアジャイル開発

トヨタ生産方式には7つのムダというものがあります。それぞれ、以下のようになっています。

  • 作りすぎのムダ
  • 手待ちのムダ
  • 運搬のムダ
  • 加工そのもののムダ
  • 在庫のムダ
  • 動作のムダ
  • 不良を作るムダ

トヨタ的な考え方では、製品を加工している作業が唯一付加価値を生む作業であって、他の作業は付加価値を生まないので極力排除していくべきものであるとします。それらは「ムダ」と呼ばれます。ムダには上記の7種があり、これらをなくしていくことが原価を減らし、企業の競争力を高めます。実際、トヨタ自動車は儲かっており、この考えを完全に否定できる人はいないでしょう。

さて、ソフトウェアの開発にもトヨタ生産方式の考え方は適用可能だと考えています。結論からいうと、トヨタ生産方式が目指すところはアジャイル開発とそれと共通している。

ソフトウェアの開発プロセスを工業製品の生産と同一視するようなソフトウェア工学は一般に嫌われがちです。ソフトウェアは一品ものであり、大量生産が行われる工業製品と一緒にしてはいけないだとか、開発者を工作機械と同等に扱っており人間性を無視しているだとかの批判があります。人月計算のウォーターフォール開発が非人間的であるということは、多くの人が述べるところであり、私も嫌いです。ウォータフォール開発はソフトウェアを生産する一本の長い生産ラインを想定したもので、そこではエンジニアはライン工です。同じことを延々と行うライン作業の非人間性は、ソフトウェア産業が生まれるよりかなり以前からに既に批判されています。古くは『モダンタイムズ』であり、これは1936年の作品です。人月計算のウォータフォール開発をしている企業は未だにチャップリンの時代から成長していない。

実は機械工業の世界では、もはやチャップリンの時代のようなことはしていないのです。生産ライン自体は存在しますが、ライン工は非人間的な仕事ではなくなっている。現場作業者自身が自分の仕事のムダを見つけて、「カイゼン」を行っている。カイゼンというのは創意工夫だから、それ自体面白いことだ。非効率極まりない非生産的な仕事を淡々とこなせというのが最も精神を蝕む。同じ仕事であっても、考えて工夫することが許され、それが評価されるならば、面白いものとなる。現代の工場というのは、モダンタイムズに描かれるような人を人として扱わないような場所ではなくて、作業者も知恵を絞って自分の職場をよくしようとしているような、活き活きとした場所である。*1別にカイゼンは、決して人間が気持ちよく働けるためにしているわけではない。ただ金のため、効率のためだ。効率化と人間の幸福は決して矛盾したものではない。鞭打って働かせても生産性が上がるわけがない。油と工数は絞れば絞るほど出るとか思っている人は、人間の可能性を信じてなさすぎる。人間を舐めるな。

トヨタ生産方式は、同一品種の大量生産によって効率を高めようというフォード式の生産方式の問題を解決するために生まれた。フォード式の生産方式を別の言い方で呼べばロット生産である。予め何をいくつ作るべきかが分かっていればまとめて作った方が安い。しかしながら、予想が外れて売れ残ったら大量の在庫を抱える。売れ残りというのは、原価もムダになれば、それを保管した場所もムダになれば、処分のための費用もムダになる、非常に恐ろしいリスクである。これが作りすぎのムダである。これを回避するために、必要なものを必要なときに作れば良いというJust In Time方式が発明された。

ロット生産の、何を作るべきか事前に分かっていなければならないという欠点は、ウォータフォールモデルが抱える欠点と同じである。ウォータフォール開発はロット生産と同じ発想だ。何かを作るときに手間がかかるのは「段取り作業」である。材料や金型を機械にセットして、加工が始められる状態にする作業に大きな工数を要する。ロット生産の発想に立つと、段取りにコストがかかるならば、段取りの回数を少なくしようとする。一度セッティングをしたら、できるだけそのセッティングを壊さないで、同じものをたくさんつくる。そうしたら、1つの製品あたりの段取りのコストは少なくなる。ウォータフォール開発も同じで、まとめて設計して、まとめて生産して、まとめて統合して、まとめてテストして、まとめて納品したら、一個の機能あたりの付随作業のコストは少なくなるし、最初に意図したものが確実に出来上がるだろうという発想だ。しかし、ロット生産と同様に不要なものを過剰に作ってしまう可能性が高い。

作りすぎのムダの何がヤバイのかというと、他のムダを隠してしまったり、他のムダを生み出してしまうということが問題である。一生懸命ムダなものを作っていたとしても、外からみるといかにも仕事をしているように見える。仕事がないという手待ちのムダだとかが隠れてしまう。忙しそうにしているけれども、その作業自体がムダだというのが分からなくなってしまうのだ。あるいは無意味なものを一生懸命作ってしまうことは、加工そのもののムダである。*2

作りすぎのムダを防ぐために、トヨタ生産方式ではどうするのかというと、必要になったらつくるということをする。*3まさにアジャイル開発でいうところのYAGNI――You ain't gonna need it――原則である。受注があるまでは作らずに、受注したら速攻で作れるような体制を整えておく。しかし、まとめて作るということをしないならば、段取りのコストがかかってしまう。なんてことはない、トヨタ生産方式では段取りの回数を減らすのではなく、段取り一回あたりのコストを減らすように工夫して、トータルの段取りのコストを下げるのだ。アジャイル開発でも同じことだ。なんの工夫もなしに、YAGNIを実践したらコストが増えるに決まっている。欲しくなったらすぐに作って配備できるように、ビルドだとかデプロイだとかテストだとかを自動化しておくのだ。機械加工だと段取りを迅速にするための仕掛けを治具といいますが、自動化のためのツールスクリプトはソフトウェア開発における治具なのです。

不思議なのは、偉大なるトヨタ生産方式が発明されたこの日本で、何故かソフトウェア産業においては未だにウォータフォール開発一辺倒であることです。何故かと考えると、顧客の程度が低いからでしょう。トヨタ自動車はかつて在庫を抱えて潰れかけました。そのために作りすぎのムダがいかに危険なものかを知り、カイゼンを行って今の栄華があります。ムダをムダと気づかないとカイゼンはできない。いわゆるSIerなるところにシステム開発を発注している企業なり官公庁は、無意味なものを大金払って作らせたとしても、それがムダかどうか判断つかないのだろう。SIerと呼ばれる業種はリスク引受業だと言われます。システムが品質・予算・納期を満たして完成するかどうかは、博打です。負ければ大損するので、SIerはそのリスクを引き受けて保険料を得るという商売をしています。しかし、SIerは作ったものが実は要らないものだったというリスク――作りすぎのムダのリスクは引き受けてくれない。予算超過なんかより無意味なものを作ってしまう方がはるかリスクフルだと思う。しかし、日本社会は作った動いたで満足なようで、それに意味があったとかは興味がないようだ。投資の効果をどうやって評価するかは私も知らないので、難しい話ですけれども……。

作りすぎのムダを排除して、初めて他のムダに手をつけることができる。材料を加工している以外の仕事は付加価値を生まないので、それらはなくせるものならなくしたいムダだ。ソフトウェア開発においては、コード触ったりテストをしている以外の作業はムダだ。コードも触らなければ、テストもしない人間の多いこと。必要悪ではあるのだけれど、こいつらをいかに排除して、コードを触れる人が作業に集中できるようにするかというのが、次の課題となる。そして、これらは創意工夫をともなう楽しい仕事だ。

トヨタ生産方式―脱規模の経営をめざして

トヨタ生産方式―脱規模の経営をめざして

*1:ちょっと機械メーカーを持ち上げすぎかな?鎌田慧自動車絶望工場』で描かれるように期間工は未だにしんどい仕事かもしれない。でも、けっこう給料がよいみたいなんだよな。

*2:7つのムダはMECEではない。作りすぎのムダが特別で、他の6個がMECEとなっている。

*3:トヨタ生産方式でも、生産計画というのは存在する。材料を発注したり、人を集める必要があるからだ。科学的でシステマチックなトヨタ生産方式においても、この部分は多分に博打的要素を含むようだ。アジャイル開発が無計画かというと、それも違っていて、迅速に開発できる体制を整え・維持するにもコストがかかるので、計画は必要である。いらんものを作るよりは計画がはずれる方がましということだろう。