『闘うプログラマー [新装版]』――正しいものは勝ち残る

グレッグ・パスカル・ザカリー=著
表紙 闘うプログラマー [新装版]
著者 グレッグ・パスカル・ザカリー/山岡洋一
出版社 日経BP
サイズ 単行本
発売日 2009年07月
価格 1,980円(税込)
ISBN 9784822247577
UNIXはカトラーの宿敵だ。モリアーティ教授(シャーロック・ホームズの宿敵)のようなものだ。カトラーはUNIXを、博士ばかりの委員会が設計したクズのようなオペレーティング・システムだと思っている。一貫した思想がないし、その欠陥が露呈している。だからいつも、UNIXをぶちのめそうと考えてきた。しかし、実際にそのチャンスをつかんだのは、はじめてだった。

概要

Windows NTの初期開発チーム
Windows NTの初期開発チーム
本書は、ウォールストリート・ジャーナル紙の敏腕記者グレッグ・パスカル・ザカリーが1994年に著したもので、巻末に「NT総責任者のポール・マリッツは、わたしの要請にこたえて、取材に協力した社員に一切懲罰をくわえないと約束した」と記されているように、NT開発に関わった多くの技術者が実名入りで、私生活を含めた壮絶な闘いの日々を語っている。
ザカリーは誠意をもって、インタビュー以外に文献から引用した部分を巻末に整理している。新装版は2009年7月に刊行され、NT発売当時、日本マイクロソフトの社長だった成毛眞さんが解説を寄せている。
デビッド・カトラーは大学でフットボールに熱中し、数学の成績が良く、1965年に卒業したときには、GMからコンピュータ・プログラミングの仕事に誘われた。だが、プログラマーは決められたルールに従うだけで、自分でルールを決めていくリーダーではないと考えていたカトラーは、デュポンに就職し、素材の用途を顧客に助言する部門に配属された。そこはコンピュータの力を借りなければできない仕事ばかりで、カトラーはIBMの学校に通い、プログラミング手法を学んだ。カトラーは、「普通だったら、それで正しいと考えて、終わりにする。それが正しくなくても、正しくないという事実には気づかない。コンピューターでは、ほぼ正しい答えを見つけても、なんの慰めにもならない。ほぼ正しい、というのは、間違いのひとつにすぎない」と当時を振り返る。カトラーは、コンピュータで問題を解決するのではなく、コンピュータそのものを使うことが天職だと気付いた。
カトラーは DEC に転職し、PDP-11 コンピューター用のリアルタイム・オペレーティング・システムの開発に貢献し、高く評価された。カトラーは厳格で、冷酷なばかりでなく、部下のごまかしを絶対に認めようとしなかった。カトラーは VAX/VMS を開発し、業界のスターになった。

1988年夏、ビル・ゲイツは悩んでいた。アップル・コンピュータが Windows は Macintosh の OS を違法にコピーしているとして裁判になった。IBMとマイクロソフトは [OS/2:wiklipedia] の共同開発に合意したが、MS-DOS のプログラムを動かせるという仕様が足を引っ張った。この頃、スティーブン・ホーキングの教え子でIBM用タスクスイッチャー「トップビュー」を開発した物理学者ネイサン・ミルボルドの会社を買収した。
ミルボルドはカトラーが DEC 内で干されているという情報をキャッチし、ゲイツに伝えた。ゲイツカトラーは全く異なるタイプのエンジニアだったが、その目指すベクトルは一致していた。マイクロソフトのナンバー2、スティーブ・バルマーは「神が結びあわせたとしか思えない」と語っている。1988年10月31日、カトラーはマイクロソフトに入社した。

1989年7月、NTの開発は難航していた。1つには、ターゲットCPUのインテル i860 の開発がはかばかしくなかったこと。ゲイツは、標準的なインテルの386系CPUで、NTが動くことを最優先課題と考えていたが、カトラーは386向けに開発すると移植性が犠牲になると考えていた。第2に、ネットワークの専門家が少なかった。第3に、ユーザー・インタフェースなどのグラフィックに詳しい技術者がいなかった。
数学が得意なチャールズ・ウィトマーは、 OS/2 パーソナリティ・ソフトとして開発されていたプレゼンテーション・マネージャーのグラフィック・プログラマーのチーフとなり、1988年末に完成させた。次に、NTのプレゼンテーション・マネージャーの仕事に取りかかり、 OS/2 のそれを改良するのではなく、ベジエ曲線を基本単位とした。ウィトマーは開発言語として C++ を選択したが、カトラーは反対した。開発チームは C++を学ぶのに数ヶ月を要した。
年が明けて1990年1月、ゲイツは386版NTが遅れていることに業を煮やしていた。カトラーは、パソコン業界の状況を飲み込めていなかった。5月に Windows 3.0 が発表され、MS-DOS 時代からの呪縛だったメモリの制約などが取り払われ、大きな反響を呼んだ。ゲイツは、IBM OS/2 と決別を決め、NTに Windowsパーソナリティを導入することを決めた。開発計画は大幅に変更しなければならなかった。こうして、NTは「Windows NT」と呼ばれるようになる。25人だった開発チームは150人に膨れあがった。
1991年1月上旬には、プロジェクトの新しい構造と戦略は固まり、技術的問題の多くは一段落していた。グラフィックについても、クライアント・サーバー方式を導入したNTがDOSよりわずか数パーセント遅いだけであることをバルマーに示して決着がついた。
ところが、ファイル・システムやネットワークはそのままだった。ゲイリー・キムラは、NTのために新しいファイル・システムをつくるかどうかで悩んでいた。NTのファイル・システムの成否は、その復元性にかかっていた。ところが、社内でジェームズ・オールチンが率いるカイロという新しいプロジェクトが、ファイル・システム「NTFS」の前に立ちはだかった。それは、あらゆる情報を迅速に検索できる理想的なファイル・システムだったが、技術的な難易度は極めて高いものだった。

マイクロソフト社内では、NTの開発環境を OS/2 からNT自身へ移行しようとしていた。開発チームは、自ら開発した環境を使うことを「ドッグフードを食べる」ことにたとえた。ドッグフードへの切り替えは、3段階で実施された。第1段階ではグラフィック機能のないNTを使い、次にグラフィック機能をつけ、最後にネットワーク機能を加える。
1991年8月中旬に最初の NTネットワーク・バージョンが完成した。しかし、祝っている暇はなかった。すぐに大量のバグが報告されるようになった。
この段階になって、セキュリティが話題になった。当初、LANマネージャーのセキュリティ機能をそのまま採用すればいいと考えられていたが、ネットワーク上にあるデータファイルに対するセキュリティ設定の抜け漏れが出ることがすぐにわかった。そこで、ローカルとドメインという2つの考えを用意し、それぞれに権限設定ができるように方針転換した。だが、このことが後の権限設定を複雑なものにする。
NTのビルド・ラボは戦場になった。幅広い能力をもつプログラマー、マーク・ルコフスキーが加わった。ルコフスキーの意見には重みがあった。同僚が「ルコフスキーが受け付けなければ、どんなコードも屑にしかならない」と言うほどの戦いぶりを見せた。カトラーは、とくに重要なバグを「ショーストッパー」と呼んだ。文字通り、オペレーティング・システムが実行する「ショーがストップする」ほど深刻なバグを意味する。
1991年10月21日のコムデックスで、NTの試用版――ソニーの工場で製造したCD-ROMに収められた――が配布された。反響は凄まじいもので、PCマガジン誌は「オペレーティング・システムの概念を完全に塗り替えるものになる」と予言した。カトラーは開発チームへ「全員の努力に感謝する」というメッセージを送った。

だが、バルマーはNTにフォールト・トレランス機能を搭載することを約束した。まだ NTFS のテストも始まっておらず、DOSやWindowsのアプリケーションを使えるようにする機能も未実装だった。
カトラーは、1992年2月には機能のコーディングが終わり、6月末にはNTを発売できると考えていた。しかし、NTはますます複雑になって、この計画どおりにはことが進まなくなった。ウィンドウズをパーソナリティとして選んだために、プリンター、モニター、キーボードなどの既存の周辺機器を、大量にサポートしなければならなくなった。そんな中、カトラーが以前勤めていたDECが、自社のCPU、アルファにNT移植するというニュースが伝わった。
カトラーはルコフスキーに代わって、ビルド・ラボに缶詰になった。ここまで大きなプロジェクトで、設計責任者がビルド担当者につきっきりになったのは、前代未聞だった。しかし、カトラーは最前線の近くにいたいと願っていた。
チーム・メンバーが長時間働く死の行進の期間に入り、恋人、友人、妻や夫、子供たちとの関係がおかしくなっていった。カトラーが大切にしているのは、第1に仕事、第2が遊び、第3が友人、家族は第4という変わった感覚を持っていることも影響していた。

1992年7月8日に、マイクロソフトが主催したアプリケーション開発者向けのサンフランシスコ会議で、CD-ROMに入ったNTのベータ版を配布した。過去最高の参加者があつまった。ビル・ゲイツがNTの登場をたたえ、「これがまだ、ドッグフードであることはわかっている。しかし、わたしは、これを食べている」と語った。
だが、NTのサイズとパフォーマンスは依然として目標を達成できずにいた。カトラーの上司でNT開発総責任者のポール・マリッツの立場は苦しくなった。いつもなら、プロジェクトが目標を達成できないと、ゲイツは責任者に痛烈な批判をあびせる。しかし、NTは普通のソフトではない。カトラーは、まず、まともなソフトを作る。信頼性を高める。その後で、パフォーマンスの改善を考える。その過程で、ソフトに磨きをかけていくという考えを一貫して持ち続けた。自分のチームの努力の成果を非難する声があることに気づけば、カトラーは荒れ狂うだろう。それを知っていただけに、ゲイツは口をつぐんだ。
プログラマーの多くは、コードを書くにあたって、どれだけのメモリーを食うのかをほとんど考えない。そして、ゲイツにしろ誰にしろ、NTの機能が想定を超えて大きくなっていたのだ。
ゴールがはっきりしないまま、きびしい仕事が続く見通しになり、250人のチームのなかには、意気消沈する者もでてきた。何人かは会社を辞めた。
そんななか、フリーの超一流プログラマー、マイケル・アブラッシュが入社し、グラフィックス部隊の苦境に立ち向かった。ジョー・リンは、ごく小さな調整で十分な効果がある提案をした。
マイクロソフト社の先端技術研究所長で、OSでは米国最高レベルの専門家として Mach (マーク)  を開発したリック・ラシッドは、カーネルにページングを導入することを提案した。カトラーは自分の聖域への侵入に強烈に抵抗したが、ラシッドカトラーを怒らせたことを後悔はしなかった。
技術者の世界では、個性がはげしくぶつかりあうことよくある。ほぼおなじ目的を達成するための方法は、技術的にみていくつもある。技術的な判断は、個人の好みによるケースが多い。技術についての個々人の考え方の違いは、成り行きにまかせる方がいいとカトラーは考えている。

1992年12月16日の社内会議で、ビル・ゲイツはNT出荷を腹に決めていた。だが、パフォーマンスの点では妥協できない。ここで妥協すれば、ユーザーに見向きもされなくなる。ゲイツの力の源泉は、アプリケーション開発者から、パソコン・メーカー、ユーザーにいたる関係者が、マイクロソフトの製品に依存するようにし、マイクロソフトの製品の世話になるようにすることにあるからだ。
バグは避けることはできない。人間ならだれでももっている欠点に原因があるからだ。バグをまったく避けるには、「完璧な仕事をするしかない」が、それはだれにもできない。バグを不用意に処理すると、とんでもない結果になりかねない。ひとつのバグの処理に間違いがあって、40台のパソコンのビルドが壊れたことがあった。
第2回ベータ版を1993年3月8日にリリースできたので、5月10日の最終版リリースに向けたスケジュールからは遅れていなかった。しかし、その後、ショーストッパーと1級のバグの数が急増した。問題はバグだけではなかった。互換性が大きなハードルになっていた。
5月26日に、ビル・ゲイツはウィンドウズの展示会でNTを宣伝し、60日以内に店頭に並ぶと語った。出荷がさらに遅れることが確定した。ゲイツはOS/2の失敗で、ユーザーは過去を捨てずに未来に移行したいと望んでいることを痛感した。だから、NTは、古いアプリケーションをサポートしなければならないのだ。
7月16日、金曜日、午後5時、NTの509番目のビルドが「封印」され、少なくとも5日間、テストにかけることになった。
7月26日、月曜日、午後2時30分、ウィンドウズNTは製造にまわされた。カトラーは自分のオフィスで、たったひとり、コンピューターに向かって「全員の貢献に感謝する。とくに、最後の3か月、毎日200ものバグを処理しながら、深刻な問題にはぶつからなかった。これだけの成果をあげられたのは、全員の比類のない努力のおかげである」とメッセージを打った。カトラーは自分を含めたチームのメンバーのために、神話のような世界を維持してきた。この世界では、日常見られる曖昧さはなくなり、すべてが黒か白か、善か悪かで割り切ることができる。カトラーはその言動で常識をせせら笑うことによって、日常の世界から切り離された神話の世界を維持してきた。カトラーを支配できる者はだれもいない。世界でもトップ・クラスの金持ちのゲイツですら、例外ではない。ゲイツは、プロジェクトの完成に必要な資源をカトラーに提供した。開発費の総額は1億5000万ドルであり、それまでのどんなパソコン用ソフトよりも多かった。
チームワークのために個性を犠牲にしなければならないとはかぎらない。NTチームには、自己主張が強烈な者が多かった。そして、状況の変化に対応して、古いルールをぶちこわし、新しいルールを打ち立てていったが、それでチームの調和を破壊することはなかった。なにはばかることなく、上司を批判し、公式にはなんの責任ももたない人に助言を求めた。NTの品質を高めるために必要だと思えば、重要な決定をくだすときに、許可をもとめることはめったになかった。どんな規則があっても、意味のないものだと思えば、平気で無視する。

NTが出荷された日、チームのメンバーや、その家族、恋人は、自分たちの人生のひとつの章がこれで終わったのだと思った。みんなよろこんだが、疲れ切っていて、お祝いをする気分にはなれなかった。ユーザーはNTの機能に興味をひかれてはいるが、売れ行きはいまひとつだ。初年度には、ゲイツが予想していた100万本のほぼ半分が売れたにとどまった。一方、CPUのメーカーはNTに殺到している。当初、NTを使えるのは、インテル、MIPS、ディジタル・イクイップメントの3社のCPUだけであった。1993年7月にNTが発売された直後に、IBM、アップル、ヒューレット・パッカード、モトローラの各社がそれぞれのCPUにNTを移植しはじめた。発売からわずか数か月で、NTは事実上、すべての主要なコンピューターで使えるようになり、過去に例をみなかったほど、汎用のオペレーティング・システムになる勢いにある。
1994年3月、カイロの進捗が遅いことにいらだったジェームズ・オールチンは、カトラーにカイロ全体の指揮をまかせた。カトラーにとって「人生最良のとき」がまたやってきた。

レビュー

Windows NT 3.1を使う女性のイラスト
本書の原題は "Showstopper: The Breakneck Race to Create Windows NT and the Next Generation at Microsoft" という長いものである。ショーストッパーとは、「あまりの名演技に、観客の拍手がなりやまず、舞台が先に進まない状態」を表すが、本書では、「出荷というショーを中止させるほどの致命的なバグ」を指す。企業内チームが全くのゼロから仕事をするという意味で、Windows NT の開発は最後のショーだった。「闘うプログラマー」という邦題は、この物語を端的に表す名訳だと思う。
私は、Windows NT に思い入れがある。それまで、VMSUNIX でネットワーク・プログラムを開発したことがあったが、パソコン用のプログラムはCP/Mや MS-DOS で動くスタンドアロンなプログラムばかりだった。Windows 3.1NetWare が登場し、いよいよクライアント・サーバ型のシステムを構築する段階になった時、開発環境としてNTを選ぶしかないと感じたからだ。
NTは、VMSUNIX の流れを汲むカーネルを持ち、Windows API を備え、クラッシュ時にもファイルを復旧しやすい。国産PCとして DOS/V に対応したFMVではスペック不足で(486DX2+4MB)、発売されたばかりの32ビットCPU「Pentium」にRAMを32MBに増設したDell Dimensionにターゲットを絞った。見積は1台80万円に達したが、にもかかわらず、稟議はスムーズに通った。それが必要な道具だったからだ。スタンドアロンなプログラムではなくシステム構築するには、実行環境よりハイスペックは開発環境が要る。今では当たり前のことである。本書で最後まで問題視されていた大量のメモリとレスポンスの悪さも、開発で使うには大した問題にならなかった。

1988年10月31日に、カトラーがマイクロソフトに入社したとき、日本では昭和天皇が入院し、自粛ムードが漂っていた。年が明け、1989年2月24日に大喪の礼が執り行われ、自粛が解禁になると、一気にバブル経済へ突入する。私は、8月に初代ダイナブック(J-3100SS)を購入し、NOMADでプログラム開発をするようになった。1990年10月には 80286 を搭載した J-3100GS に乗り換えた。Windows 3.0 は1991年1月に日本に上陸するが、すぐにブルースクリーンになるなど、開発に使えたものではなかった。1993年度までは、ひたすら MS-DOS とC言語でプログラムを作り、NetWare を介して、なんとか UNIX の基幹システムと通信ができるようにした。だから、NT日本語版が発売になった途端、それに飛びついた。開発のかたわら、NTで動く黎明期のブラウザ「Mosaic」でネットサーフィンをした。

1990年11月に三田に完成したNEC本社ビルに出入りしていた。本書の解説で成毛眞さんが紹介しているが、そこに OS/2 が並んでいたのを覚えている。その後、OS/2 の敗戦処理として左遷させられた国内メーカーの方々と仕事をする機会があった。これはソフトウェア業界にかぎったことではないが、大規模プロジェクトが失敗すると、多くの関係者が人柱になる。他人事ではなかった。
Apple創業者スティーブ・ジョブズも人柱の一人だった。Appleを追放されたジョブズは NeXT社を立ち上げ、32ビットのマルチタスクOS「NeXTSTEP」の開発を指揮していた。NeXTSTEP は、Machカーネルをベースにした BSD UNIX系のOSで、この Mach を開発したのが、本書にも登場するマイクロソフト先端技術研究所長のリック・ラシッドだ。そして、NeXTSTEP を手土産に、ジョブズは1996年に Appleに復帰する。NeXTSTEPMacOS XiOS に姿を変え、Appleの業績にV字回復をもたらせた。
振り返れば、SmallTalk に由来するウィンドウシステムを搭載し、1984年に華々しくデビューした Macintosh は、たしかにパソコンの門戸を一般ユーザーへ開いた。ジョブズの現実歪曲空間の為せる技であろう。ユーザーの動向に敏感なビル・ゲイツは、MS-DOS上で動くWindowsを開発した。だが、結果的に、この2つのソフトウェアは失敗した。
人柱となったジョブズは、失敗の本質を悟り、NeXTSTEPを開発した。一方のゲイツは、NT開発チームに口を挟まなかった。

本書で触れているが、コンピュータ科学者ジョセフ・ワイゼンバウムは「設計者を評価するのは仲間の設計者だが、プログラマーを評価するのは最終的には、機械なのだ。コンピューターは情け容赦のない批評家だ」と語ったという。同様に、株主も情け容赦のない批評家だ。失敗には人柱を求める。
だから私は、自分の思考や手順が正しいか(正確か)をプログラムに書いて実行する。人柱になるのは嫌だから。
この習慣は、近い将来、生成AIのプロンプト入力に取って代わられることになるだろう。だが、技術者の仕事は、チームワークのために忖度をして個性を犠牲にしてはいけない。正しいものが正しいからだ。中途半端な忖度をする生成AIなどは願い下げだ
(2025年8月1日 読了)

参考サイト

(この項おわり)
header