まつもとゆきひろ氏を批判するなんて、身の程知らず&ふつうなら非難ごうごうで炎上しそうなものだが、
このブログは、御意見無用で、コメントを切っているので、せっかくだから、書いておこう
ここの記事
「ソフトウェアは工業製品ではない」、Rubyのまつもと氏が講演
http://www.atmarkit.co.jp/news/200904/10/matz.html
(以下斜体は上記サイトより引用)
「ビューティフルコード」と題した基調講演を行ったまつもと氏は、2007年に共著者の1人として出版した同名の書籍に書いたエッセイに込めた思いを、次のように語る。
「世界に冠たる日本の製造業のノウハウを適用することで生産性を上げることができるに違いないという発想がありますが、ソフトウェアは工業製品ではない。そうした誤解を正していきたい」。
たしかに、トヨタのかんばん方式を見習う人なんかは、そう考えているのかも・・・
ソフトウエア=工業製品=製造業のノウハウで生産性上がる
ただ、それ(とくに後者の「工業製品=製造業のノウハウで生産性上がる」)って、
一部の(とくに大企業の人)の気もするけど、まあいいか、それはおいておいて、
前者の話、ソフトウエアは工業製品ではないとすると、では、何?
コード(ソフトウェア)を書くというのは、組み立てのことではなく、製造業でいう「設計」に相当するという。
で、
設計である以上、それは人間的要素が強い職人芸であり一品物になりがちだという。
これ、まつもと氏が作る、あるいは関係するソフトは、なら、ひとつも問題はない。
しかし、「世の中すべてのソフトが」といわれると、どーかなあ??
たとえば、ウィリアムのいたずらがかかわる仕事の多くは
・ウィリアムのいたずらが、ExcelのVBAマクロなどを提供する
・ワーカーさん(デジタルどかた)のかたが、Excelをうめて、大量にソースコードを生み出し、
その一部を決まったとおりに加工し(ここに創意工夫はない。工場の作業と同じような感じ)
・帳票や画面を大量生産する
というようなかんじなのです。
まさに、ソフトウエアファクトリーというのが、言いえて妙であって、Excelで値を入れて、
ボタンを押すのが、「職人芸」や「一品もの」かあ?
という感じがします。
ウィリアムのいたずらのようなマクロを作る部分はたしかに設計で、職人芸かどうかは、かなり??ですが、
一品ものではあります(マクロはプロジェクトによって”切り替えます!”CASEツールのように、同じものを
使うわけではないです。1つのプロジェクト内でも、切り替えたりします。)
ただ、そのExcelマクロを使って、Javaのソースを作る人は、はたして、職人芸なのか?
華麗なるExcel入力裁きや、ボタンうちをするとか(北斗の拳みたいに)??
ソフトウエアファクトリー化できるような、業務アプリと、
まつもと氏が開発しているような(Ruby)コンパイラとかは、分けて話したほうが
いいとおもうんです。
でないと、「工業製品でない」とかいう一方的な否定意見をもとに、ウィリアムのいたずらのような
工業製品みたいなソフトを作っている仕事をしている人たちを否定してしまうことになります。
そうなると、まつもと氏の権力、威力は絶大なので(きのう、この記事出たとたんに、あるミーティング
でこの話、きいたもん。すげー)、ウィリアムのいたずらのような、工業化、自動化に携わる人は、
日本にいられなくなくなってしまいます。
でも、そういった、ソースの自動化技術が中国その他で認められた場合、日本の生産性が圧倒的に
世界から見て低下する気がします。
そして、Excelを使ってソース自動生成、解析支援を行っているウィリアムのいたずらの場合、
ついこの前もあったけど・・・
ソフトウェア開発においてキーボードを叩いている時間は短いのです。むしろ考える時間、読んでいる時間が長い。
なんて、言ってられないわけです。1週間以内に、あるシステムの動きを解析せよ!などという仕事はよく来るわけで、
その場合、
・入出力アクセスクラスを割り出し、
・そのクラスを利用している入出力関数に関して、Excelシートに読み込み
・その入出力関係を、読み込みデータにマクロをかけて割り出し、
・プログラムの動きを推測し、
・想定される業務フローを割り出す
という作業をします。
この場合、ソースを見ながら、頭にうかんだこと
(たぶん、こーいう決まりで書いているなあ?)から、
すぐにそれを検証するため、VBAプログラムを書いていき、
そこからどんどん、プログラムを分解していって、割り出します。
そのときって、たぶん、読んでる時間より、VBA書いているほうが長い・・・
・・・っていうか、頭に浮かぶよしなしごとを、VBAでそこはかとなく、書き綴っているので、
読んでいる、書いている、考えている、キーボードうっている時間は分解できない。
数万行レベルのものから動きを抽出するとなると、やっぱ、読むっていうのは、
無茶な作業じゃないかなあ・・・VBA使って、ソース解析をやっていかないと・・
そーなると・・・
やっぱ、
・規模大きいんだけど単純作業プログラムと
・規模大きい複雑プログラムと
・規模小さいけど、複雑プログラム
っていうのは、議論を分けて考えたほうがいいと思んですよ。
そして、ソフトウエアファクトリーを考えるのは、「規模大きいんだけど単純作業プログラム」で、この手の自動生成、解析支援技術を発展させていったほうが、ソフトを全部ひっくるめて、ソフトは工業製品ではないというより、建設的だと思うし、なにより、雇用拡大、頭脳流出防止につながると思います。
いまのように、ソフトウエアファクトリー技術があるのに否定してしまうことは、将来的、それが他国に流れて、ソフトウエア業界の絶望的な敗北につながると思うんですけどねえ・・・。
P.S ただし、ソフトウエアファクトリー化における、自動生成、解析技術は、かんばん方式や見える化ではなく、また、アートでもなく、従来のCASEツールとも違うけど・・
つまり、ソフトウエアファクトリー化=製造業をみならうこと”ではない”。