人月の悲劇
『人月の悲劇』(にんげつのひげき、The Mythical Man-Month)は、フレデリック・ブルックスによるソフトウェア工学における殺人事件を描いた物語である。探偵・ドルリイ・レーンを主人公としたブルックスの著者でも人気のある一作である。
ざっとあらすじを紹介しよう。
レーン探偵は、とあるソフトウェア開発プロジェクトに招かれた。IBM 360 度という全方位型の密閉されたシステムを開発する中で、この開発チームが抱える問題を解決するために招聘されたのだ。プロジェクトは 360 度全方位に向かって展開されるシステムであって、政治、軍備、経済、教育、医療、交通、通信などあらゆる分野に対して大きな影響を当たると考えられるものであった。そう、IBM 360 度が世界に7台あるだけで、すべての計算資源をまかなえるのではないかという時代だったのだ。もちろん、その後にある Microsoft 365 によって 5 度の違いがあり、IBM 360 度は崩れ去ってしまうのであったが、まだその時は 5 度の差は気付かれていなかった。その時代の物語である。
一般的に、ソフトウェア開発は、設計と実装の組み合わせによって成り立っている。設計書を書き、その通りにコードを書いていく。設計書が完璧であれば、コードが完璧になると言われていた時代である。後の私達は、そんなことにはならないことを知っているが、当時はそうだったのだ。そう、まだ新型コロナウィルスが流行る前だったので、コロナウィルスの後遺症が世界に広がる前の時代だったのだ。相対的にバカになってしまった今となっては、信じられないだろうが、時代は完璧な設計と完璧な実装を実現できていたのだ。
しかし、レーンが招かれたプロジェクトは、完璧とは程遠い設計と同じく完璧とは程遠い実装だけが残されていた。散乱した設計書の紙が散らかり、それから引き写したタイプライタとコードを印刷したこれまた紙が散らかっていた。
レーンは、開発チームのメンバーに尋ねた。
「なぜ、こんなことになったのですか?」
その昔、ソフトウェア開発はひとりの天才の頭の中で完結していた。天才自身が設計して、天才自身がコーディングをする。たまに、インベーダーゲームをコンピュータの中に構築してしまう位の天才がいたのである。いや、テトリスだったかもしれない。そのインベーダーゲームだったかテトリスだったかを仕事の合間に作ってしまうほどの天才だ。だから、ちょっとした IBM 1 度の開発ぐらいひとりの天才の頭の中で構築するぐらい簡単だったのだ。そう、最初は IBM 1 度と呼ばれていたのだ。
しかし、IBM 1 度の開発は、開発自体が進むにしたがって、ちょっと様子が違ってきた。最初は軍事面の弾道軌道を計算するだけのものだったのだが、政治と教育にも分野を伸ばしたのである。政治の世界では、投票率の計算を行い、教育の分野では学生の成績評価を行うものであった。IBM 1 度に参加していた天才は軍事の天才ではあったものの、政治と教育の天才とは違っていた。よって、選ばれたのは、政治の天才と教育の天才であった。つまり 3 人の天才が集まって IBM 3 度を作り上げたのである。
それぞれの天才は、IBM 3 度をどのように作り上げるのかと話し合った。
もともとひとりの天才だったのだが、3 人の天才のお陰で、相互コミュニケーションというものが発生することになるのである。しかし、日本の諺にあるように「三人寄れば文殊の知恵」と言うように、3 人の天才が集まれば、3 倍の知恵が出てくると日本人ならば考えるであろう。しかし、残念ながら、IBM 3 度はアメリカ人だけで構成されていたので、3 人いても文殊の知恵にはならなかった。残念なことだ。そこで、3 人の天才は話し合った。いわば、話のラインが 3 本になったのである。天才A,B,Cとすると、AB, BC, CA の 3 本の会話のラインができたわけである。つまりは、コミュニケーションコストの発生である。
IBM 3 度が出来上がったころに、経済の消費税、医療の薬の計算を追加することになった。つまりは IBM 5 度の登場である。そうなると、あらたに天才は 2 人追加されることになり、天才 D,E が開発プロジェクトに加わることになったのである。賢明なる読者はお分かりのように、5 人の天才はさらなる会話が必要になったのである。すると、会話のラインは AB, AC, AD, AE, BC, BD, BE, CD, CE, DE の 10 本に増えた。5 人の天才がいると、10 本の会話のラインができるわけである。コミュニケーションコストはうなぎ登りに増えていった。
さらに、IBM 5 度の完成されたころに、IBM 10 度の提案がなされた。あらたに、国語の文章問題と、算数の足し算と、社会の歴史問題、理科のリトマス試験紙、体育のバスケットボールの話題が加わったのである。当然ながら、いままでの 5 人の天才だけでは対応できない。つまり、新たに 5 人の天才が招聘されて、IBM 10 度の開発には 10 人の天才が関わることになったのである。さて、コミュニケーションのラインはどうなるのか。
10 * 9 / 2 = 45
このように 45 本の会話のラインが発生することになった。
想像してほしい。いや、実に騒々しいことである。
しかし、賢明なる読者ならば既に想像ができるであろう。IBM 10 度では飽き足らず、IBM 360 度を開発することになったのである。もう、いくら天才とはいえ 360 人もの人数がひとつの部屋に押し込まれて、他の天才たちと会話をしなければいけなくなった。実に開発どころではない。一日が 24 時間あったとしても、10 分ずつ会話をしていったとしても 3590 分も会話をしなくてはいけないのである。これは寝る暇もない。いや、会話だけで一日が終わってしまう。まるで、会議だけで終わってしまう現代の企業のようである。
レーンは言う。
「そこで、開発者の人数が x 人いるとすれば、答えは
x(x-1)/2
となります。つまり、人数が増えれば増えるほど、会話のラインは爆発的に増えていくのです。ですから、人数を増やせば増やすほど、コミュニケーションコストが増えていき、開発効率が落ちていくのです」
果たして、IBM 360 度の開発は成功したか否かは定かではない。最近では、360 度に加えて 365 日も流行りではあるが、いやいや会話のコミュニケーションコストが莫大になってしまい、ソフトウェア開発がうまく進まないことを考えると、いっそのこと IBM 1 度のように、One Drive とか NHK ONE とかに回帰したほうがよいだろう。
確か「人月の悲劇」は、そういう話だった筈だが、さて、どうだったか...あ、いや「人月の神話」だったか、あれ? 人が死んでいないし、まぁ、いいか。
「人月の神話」フレデリック・ブルックス
「Xの悲劇」エラリイ・クイーン




