大規模ソフトウェアプロジェクトの臨界点
2006.03.30
ワシントン州レドモンド市のあるスターバックスでの会話
知人:おお、Satoshi、久しぶり!
私:やあ、最近見なかったけどどう?
知人:言わなかったっけ、Microsoftに戻ったんだ。Vistaだよ。
私:Vistaか、大変だろう。
知人:大変なんてもんじゃないよ。
(ここから、彼の愚痴がしばらく続く)
私:そっか、大変だね。がんばってね。
知人:Satoshiは戻って来ないの?
私:だめだめ、OSだけはもう作りたくない。
知人:そうか。でも、気が変わったらいつでも連絡してよ。
私:そっちもまた外の空気が吸いたくなったら連絡しろよ。
私は常々「プロジェクトの大きさと、エンジニアのプロダクティビティは反比例する。だから、ある程度以上にプロジェクトの規模が大きくなると幾ら人を追加しても全体のプロダクティビティは上昇しなくなる」と言ってきたが、ひょっとするとVistaはその臨界点を超えてしまったのかもしれない。
Windowsが様々なアプリケーションの機能を取り入れて肥大化するきっかけとなったのはWindowsとIEの統合だと思うのですが、もしこれがなかったらMicorsoftはどうなってたんでしょうね?
Netscapeにブラウザを押さえられて覇権を譲り渡していたのか、それとも統合しなくてもIEのバンドルや無料配布だけで覇権を維持できていたのか、どっちなんでしょう?
もし前者ならWindowsの肥大化はMicrosoftが生き残るための宿命だったということになりますし、後者だったらMicrosoftはNetscapeの影に怯える余り、必要のない肥大化をやってしまったと言うことになるんでしょう。
Posted by: Baatarism | 2006.03.30 at 19:52
いつも楽しく読ませていただいております。
一点気になる点があるので質問させてください。
>私:だめだめ、OSだけはもう作りたくない。
これはどうしてですか?
以前のエントリで,WebのAPIの方がOSのAPIに比べて様々なことが出来,技術者を魅了するというようなことをお書きだったと思うのですが,それも1つの理由でしょうか。
Posted by: tono | 2006.03.31 at 07:16
>Windowsが様々なアプリケーションの機能を取り入れて肥大化するきっかけとなったのはWindowsとIEの統合だと思うのですが、もしこれがなかったらMicorsoftはどうなってたんでしょうね?
とても難しい質問ですね。Brad Silverbergなんかは、逆にIEの成功がMicrosoftに安心感を与え、Googleの誕生を許してしまった、という見方をしていますが、それにも一理あるとは思います。
>私:だめだめ、OSだけはもう作りたくない。→これはどうしてですか?
一言で言えば、私自身が「OSはこれ以上進化させる必要は無い」と考えているからですね。これも結構深いテーマなので、今度エントリーとして書いてみようかと思います。
Posted by: Satoshi | 2006.03.31 at 08:00
Vista の開発に関しては、経済学で言う 「規模の不経済」 が働いているということでしょうか。
Posted by: yas | 2006.03.31 at 14:03
>Vista の開発に関しては、経済学で言う 「規模の不経済」 が働いているということでしょうか。
厳密には違うような気もしますが、確かに似ていますね。何事もあまり大きくしすぎてはいけない、ということでしょうか。
Posted by: satoshi | 2006.03.31 at 14:20
Windowsの肥大化がまずかった理由ですが、本来パソコン業界は「モジュラー型」の利点を生かして成長してきた産業なのに、Windowsにおいては自動車業界のような「インテグラル型」の製品開発をしてしまったためだと思います。そのため、パソコン業界やソフトウェア業界が本来持っていたはずの利点を、Microsoftは失う結果になったのでしょう。
パソコンやソフトウェアは、やはり「モジュラー型」の開発が適しているのではないでしょうか。
Posted by: Baatarism | 2006.03.31 at 19:12
いつも楽しく読ませていただいています。
>私は常々「プロジェクトの大きさと、エンジニアのプロダクティビティは反比例する。だから、ある程度以上にプロジェクトの規模が大きくなると幾ら人を追加しても全体のプロダクティビティは上昇しなくなる」と言ってきたが、ひょっとするとVistaはその臨界点を超えてしまったのかもしれない。
↑に関しては、大規模プロジェクトというのはVistaのようなものもそうでしょうが、どの程度大きくなるとそういった状況になるのでしょうか?ソフトウェア開発におけるプロジェクトの限界みたいなものがあるのですかね?
Posted by: kaz | 2006.03.31 at 19:36
>パソコンやソフトウェアは、やはり「モジュラー型」の開発が適しているのではないでしょうか。
ですね。私は、それをもう一歩進めて、モジュール間のやりとりはメッセージのみで行うという、祖結合型(loosely-coupled)なアーキテクチャが良いのではと考えていたりします。
>↑に関しては、大規模プロジェクトというのはVistaのようなものもそうでしょうが、どの程度大きくなるとそういった状況になるのでしょうか?ソフトウェア開発におけるプロジェクトの限界みたいなものがあるのですかね?
Vistaは世界でも類を見ない大きさに膨れ上がっています。コードを書いているエンジニアは2000人以上と言われていますから。プロジェクトの運営の仕方やアーキテクチャによっても違ってくるので一概には言えませんが、やはり数百人以上の規模のプロジェクトの運営はものすごく難しいと思います。私個人としては、50人を超したあたりから苦痛になってきますが…。
Posted by: satoshi | 2006.04.01 at 11:22