taken by shutupyourface
そういえば、このブログにはほんのちょっとしか書いてませんでしたが、QCon Tokyoに参加しました。主にクラウドコンピューティングのトラックを中心に聞いていました。本当はAndroidとかも興味あったんですけどね。その中で、Rubyのまつもとゆきひろさんのトラックの中で「おや?」と思うところがあったので、ブログに書くことにしました。
そもそもメタファーは単なる比喩
「ソフトウェア工場」のメタファーについて、「ソフトウェアは工業製品じゃない」という話はいたるところで聞かれますし、まつもとさんのお話のスタート地点もそうでした。僕も以前はそう思ってましたが、最近はちょっと違います。そもそもメタファーは「比喩」でしかないので、「ここの量産にあたる部分はコンパイルでしかないから云々」と、対応する部分の状況が違うからダメだ、というのはちょっと短絡的すぎないかな、と思います。「本来は量産にあたる部分はソフトウェアではコンパイル作業なんだけど、ソフトウェア工場のメタファーではプログラミング作業と見なします」と言ってもいいと思います。単なる比喩ですから。
もちろん、見方がブレている時点で、コミュニケーションツールとしての役割は果たせていません。「ソフトウェア工場というメタファーがいまいち(情報伝達の点で)」というのには同意します。でも考え方が違う、とまでは言う必要はないかな、と思います。
「量産ライン」は数ある製造工程のごく一部
中越沖地震の影響で、自動車工場の操業が止まったのは覚えている方も多いと思いますが、いわずもがもな、自動車は大量の部品で作られています。電化製品もそう。iPodとかも「Appleが大量のフラッシュメモリを発注!新型か?」とかニュースなりますしね。
そのような様子がリアルに実感できる本をこの前、本屋で見つけました。「クルマはかくして作られる―いかにして自動車の部品は設計され生産されているのか (別冊CG) 」です。ぜひ、立ち読みでもいいので見てみて下さい。池袋のジュンク堂だと2Fの自動車関連書籍のコーナーに平積みされてます。
偉大な書籍は偉大な一行からはじまる(by 角谷さん)らしいのですが、この本は前書きの中にエッセンスがちりばめられて書かれてします。読んでみると、偉大な本というよりは、自動車好きがうれしそうな顔して社会科見学してきて書いたような本であることは確かです。僕も興味あります。すごく楽しそう。主にトヨタ系のサプライヤー(部品メーカー)の武勇伝がたくさん書かれています。
我々が見て知り聞いて知っている自動車工場とは、自動車の最終アセンブル工場、いってみればすでに出来上がっている部品を組み立てるための工場だからである(中略)料理でたとえるならフランベしてさらに盛りつけるシーンだけなのである
自動車のシートに使われる革の製造工程だとか、手作業のたまもののハンドル、シフトコラムカバー、樹脂成形、ワイヤハーネスなどなど、自動化が全然行われていない工程もたくさんあることにビックリすると思います。「自動化された工場」の部分は氷山の一角で、その下には大量に、それをささえるための手作業が隠れているということは「ソフトウェア工場」というメタファーを言っている人はたぶん気づいていない事実。ごく一部の面からしか見てない、ということになりますよね。まぁ、メタファーなんでごく一部だけ見ても問題ないとは思いますが。
そもそも製造ラインを作る、ということ自体大変
チョコレートを例に考えても、おいしいレシピは簡単にできたとしても、工場で大量生産することを考えると、チョコの型に流し込む温度とか、冷やす時間、できたチョコを包装紙にくるんだり、箱に入れたり・・・・たぶんチョコのレシピを考える以上に製造ラインを作る方が大変なんだろうなぁ、と思います。
Google で「製造ライン」「工程設計」といった言葉で引くと、色々な会社がひっかかります。ぱっと出てきたのはマツダエース株式会社と、ホンダエンジニアリング。トヨタと日産は自社でやっているのかな?製造工程を作るサポートをしているメーカーさんもいくつか出てきます。求人サイトが多いのは裏方だからですよね?機密度も高そうだからあまり大手を振って宣伝とかはできなそうですし。そこは置いておいても、数多くの専門の会社が製造ライン設計のために仕事をしていたり、自動車や電気などで工場建設は何百億から何千億というニュースなったり、「簡単に自動化」をするための仕組み作りというのがとても大変なことがわかります。
書籍では「MotorFan illustrated vol.28 廃熱利用のテクノロジー」の特集2のスチール・ボディを読むと、材料特性を見極め、きめ細かに製造ラインを構築しているのが分かります。また、生産側の都合も考えた車両設計が行われていることが分かります(トヨタのiQは海外で生産することも考えて、加工の難しい堅い鋼板はつかってないらしい)。
そもそも自動車の設計はイテレーティンブ
そもそも、自動車は100年間、基本アーキテクチャは変わってません。動力があって、タイヤが4つあって、イスが前向きに付いていて、ギアがあって、ハンドルがあって、ハンドルを切ると前輪が回って・・・という部分です。法律上の制約も多かったりしますが(日本のトラックは全長でルールが決まっているので、アメリカのビッグリグは作ると運搬量が減るとか)、基本的にはこのアーキテクチャーの枠の中でそれぞれの改良が行われてきています。100年間。
参考でリンクを張った雑誌や、書籍を見ると分かるのが、一つの工程をずーっと過去から見続けてきた人たちの努力の集積が今に繋がっているんですよね。新しいクルマが出るたびに、1つのイテレーションが完了するイメージです。
例えば、僕がF22の図面を手に入れられたとして、戦闘機をどんどん作って世界征服できるかというと、たぶんムリです。ちょっとした樹脂部品を作るにしても、縮度合いや射出圧力など、細かいノウハウがないと図面通りにはできません。「クルマはかくして作られる」を読むと、改めて自動車が総合産業で、日本の物作りの技術的な裾野の広さをもってして、初めて支えることができていることがわかります。「後工程の誰でも実装できる仕様書」なんてものは製造業にはないはずです。
ソフトウェア工場について改めて考える
で、初めての話題に戻るとソフトウェア工場を実現するために足りないのは、自動化ための仕組み作りの努力かな、と思います。データベースとか、UIとか、それぞれを部品とみなして開発していくとすると、中央のラインで組み合わせる人の他に、その部品を作り込む人が必要です。ソフトウェアなので、そこはそもそも人が手を動かすのではなくて、性能のいいミドルウェアとかになるのかもしれないけど、そもそもそういうところにきちんと投資しているソフトウェアメーカーがどれぐらいあるのか・・・
本当にソフトウェア工場を造ろうとしたら、考えないと行けないことはたくさんあると思います。そもそも、量産に近い形でソフトウェアをどんどん開発できるような体制を作るために平準化していくコストが、メリットとバランスがとれるのか・・・平準化することでユーザのメリットが損なわれないか・・・そんでもって、それをする価値があるのかどうか?
僕が現在思っていることをまとめると、「メタファーが正しいか正しくないかよりもむしろ、最終組み立てラインを自動化をするために支払われている、数多くの人たちの努力に触れないで『工業化』を語るのはおかしいのではないか?」ということです。