ソフトウェアはものづくり

まだ世間一般的には認識されていないのだなあと。

クロワッサン on Twitter: "#asanama 猪子「グーグルだってものつくりですよ!エンジニアばっかりですよ!ソフトウェアだってモノツクリなんですよ!」 この怒りの声を聞いた。ていうかモノツクリを全部ハードに定義するのがもう古いってことだよね。猪子さんは言葉足りてないけど、感情は伝わってる。"

#asanama 猪子「グーグルだってものつくりですよ!エンジニアばっかりですよ!ソフトウェアだってモノツクリなんですよ!」 この怒りの声を聞いた。ていうかモノツクリを全部ハードに定義するのがもう古いってことだよね。猪子さんは言葉足りてないけど、感情は伝わってる。

ソフトウェア開発はものづくりです。
それが理解されないのは、ソフトウェア開発って何をやっているのか、そして(実は)製造業のものづくりって何をやっているのかが知られていないからだと思います。
世間一般で「ものづくり」というと、おそらく製造業を指していると思うので、ソフトウェア開発との比較を考えてみようと思います。

プロセス的な比較

いわゆる製造業でものづくりを、超々簡略化して書くとこんな感じの流れになります。

  1. どんな「もの」をつくるか決める
  2. 「もの」の特性を決める。要件、諸元、仕様(スペック)
  3. 諸元を満たすように部位、部品ごと分担して設計をする
  4. 設計を「もの」にすべく工場で加工する
  5. できあがった「もの」に対してテスト
  6. 出荷


部品メーカーでは諸元は顧客から要求されたり、各工程の合間にたくさんのレビューがあったり、イノベーションが生まれていたり、人間ドラマが生まれていたりしますが、超々無機質にプロセスだけを書くとこんな感じになるはず。


一方、ソフトウェア開発のプロセスはこんな感じ

  1. どんな「ソフトウェア」をつくるか決める
  2. 「ソフトウェア」の機能を決める。何が出来るのか。要件定義。
  3. 要件を満たすように、各部位、部品ごと分担して設計をする
  4. 設計を「ソフトウェア」にすべくプログラミングする
  5. できあがった「ソフトウェア」に対してテスト
  6. 出荷

各工程の間には、レビューがあったり、イノベーションがあったり、人間ドラマが生まれていますが、こちらも超無機質にプロセスを書くとこんな感じ。


違いがわからないっ。。。

ハードウェアとソフトウェアの比較

「もの」は物理特性とかも考えなくてはいけないから、コンピューターが決まった動きをするだけのソフトよりも難しい。そこに工夫がうまれるんだよ!

みたいな考え方もあるかもしれません。
でも、ソフトウェアというのは(私見ですが)人間の意識をプログラムというカタチに落としていくもの。最先端の自然科学で「もの」の特性がすべてわかっていないのと同様に、人間の「意識」というものも全くわかっていません。どちらが難しい、複雑であるとは一概には言えません。

職人は人間の五感を使って仕事をしている。パソコンでちゃちゃっとやるプログラマとは違う。

という考えもあるように思います。
でも世間的に「職人」といってイメージされるのは、岡野雅行さんのような、いわゆる町工場で自分で全部の工程を手がけているような人です。職人さんというのは、僕も本当に尊敬しますし超人的だと思います。でも自動車のような何万点もの部品を組み合わせ、かつ大量生産するのは、沢山の人が組織として動かなくてはいけません。そうすると、製造プロセスはどうしても上に書いたようにならざるを得ないのです。
(そして実際には大企業の工場や設計の現場などのいたるところに職人はいますが、それはほとんどの人が知らないし、違うイメージだと思います。)


逆に小さな町工場的に一人の人間が超人的な能力を発揮すると言うと、ソフトウェアの方がより近い。ソフトウェア開発は歴史が浅い分、いわゆる「職人」的イメージに合う人はソフトウェア開発の現場にいるように思います。



などなど、比較してみるとハードとソフトとでの違いはないように思えます。「ものづくり」という言葉から、なんとなく皆がハードウェア的なものを思い浮かべているだけなんでしょう。


戦後の復興を思い返して「ものづくり」という言葉に一縷の望みを持ちたいという人が多いように思いますが、そうであればなおさら、ハードウェアと同じようにソフトウェアも扱う社会的空気が必要があると思います。最近のトヨタのアメリカでの訴訟を見ても、(ソフトに不具合が会ったかどうかの話は別として)今時の「もの」はソフトウェアがないとうまく動かないのですから。


「ものづくり」という言葉のイメージを変えたいなと思いました。