ソフトウェア開発は既にフロントローディングである

ソフトウェア開発におけるフロントローディングとは何だろう? - カタチづくりの続き。

そもそもハードウェアの場合、開発と製造が分離されています。

フロントローディング2 - sakataakinoriのブログ

僕はむしろ逆ではないか、と思っている。
つまり、むしろ製造業の方が設計と製造が分離できていないのではないか。例えば金型設計を考えてみよう。金型の設計というのは相当な職人技が要求される分野で、CADで設計したものそのままでは上手く整形できない場合も多いと聞く。そんな場合どうするか。現場の職人さんが手作業で修正(削ったり磨いたり)してしまうのだ。つまり、金型の製作においては設計と製造が分離されていない。設計とは現物であり、現物が設計なのだ。
そう、製造業では組織は分離されている。設計部門と製造部門だ。でも、組織が分離されていることを以て「設計と製造が分離されている」というのは正確ではないように思う。

ソフトウェア開発の場合には、設計と製造が同時に進行しています。

フロントローディング2 - sakataakinoriのブログ

これも、厳密には同時ではないはず。
確かにソフトウェア開発では、設計と製造(コーディングとコンパイル)がめまぐるしく入れ替わるわけで、これは殆ど同時進行といってもいいのかもしれない。けれども、製造(コンパイル)は完全かつ厳密に自動化されていることもまた確かで、設計は人間の仕事、製造はコンパイラの仕事、と完全に分離されている。
なお、念のため書き加えておくならば、僕はソフトウェアの設計とはコーディングであってUMLではない、という立場をとっている。


さて、改めて、製造業におけるフロントローディングとは何なのか。
それは、製造よりも設計に注力しようということ。製造の段階でミスが発見されて設計まで手戻りが発生するというのは非常に無駄なコストがかかるから、そういった問題は設計段階で解決しておこうということ。
見方を変えれば、製造工程は殆ど自動化された「ただ設計データどおりに製造するだけ」の工程にしようということ。


だから僕は、以前のエントリでこう書いたのだ。

実はこの「フロントローディング」を、究極的に実現している産業がある。
ソフトウェア開発業界だ。

製造業も「ソフトウェア企業」になっていく? - カタチづくり

よく考えてみて欲しい。
まずソフトウェアでは製造(=コンパイル)は完全に自動化されている。昨今はコンパイルにさほど時間がかかることも少ない。設計(=ソースコード)に間違いがあればコンパイラが瞬時にエラーを返してくれる。
つまり、ソフトウェアにおいては設計に対する製造のコストは限りなく小さいわけで、ソフトウェアには設計工程しかないといっても過言ではないわけだ。これこそ究極のフロントローディングではないか!


製造業は、ソフトウェアがうらやましいのだ。だから設計(=CADデータ)さえあれば確実にモノが出来るという状態にしたくて仕方がないのだ。CADデータから素早くシミュレーションして性能を確かめられる環境を整備したくて躍起になっているのだ。


この点においては、確実にソフトウェア産業が製造業よりも先を行っている。ソフトウェア産業の悩みとは、究極のフロントローディングの先にある問題なのだ。
今までの製造業において「効率化」といえば、それはすなわち製造の効率化であった。しかし近年、徐々にその効率化の波が設計工程にまで押し寄せようとしている。そして今後仮に製造業においてもフロントローディングが実現するとするならば、その場合には設計工程しかないわけだから必然的に効率化の対象も設計工程となる。そのとき製造業は、現在のソフトウェア産業が直面している問題と同様の問題にぶち当たるのではないだろうか。すなわち、「知識労働の効率化」だ。


僕は夢見ている。
いつの日か、逆に製造業がソフトウェア産業から学ぶようになるのではないか。
いつの日か、今日のソフトウェア業界がTPSから学んでいるように、製造業がエクストリームプログラミングから学ぶようになるのではないか。
いつの日か、製造業のCADモデリングテスト駆動開発が導入されるようになるのではないか。
いつの日か、ソフトウェア産業が製造業に恩返しする時が訪れるのではないだろうか、と。