ギークママ、月へ行く:「アポロ計画」を支えた女性プログラマーの肖像

1961年、ジョン・F・ケネディの一言で始まった「アポロ計画」。約10年にわたる宇宙開発と人類の大きな一歩が踏み出された裏には、MITの女性プログラマー、マーガレット・ハミルトンの貢献があった。彼女のコードは人類を月へ導いただけでなく、ソフトウェア工学の未来をも切り開くことになった。
マーガレット・ハミルトン:「アポロ計画」を支えた女性プログラマーの肖像
PHOTOGRAPH BY by HARRY GOULD HARVEY IV

マーガレット・ハミルトンにはもともと、ソフトウェアの基礎概念をつくり、人類初の月面着陸を成功させるようなつもりはまったくなかった。1960年は、女性が高い専門性のある技術職に就くことが認められていた時代ではない。当時24歳のハミルトンは、数学の学士号をもち、プログラマーとしてMIT(マサチューセッツ工科大学)で働いていた。彼女は夫がハーヴァード・ロースクールに在学する3年の間は彼を支え、そのあとは自分が数学の修士を取るつもりだった。

しかし「アポロ計画」が始まったため、ハミルトンは大きなプロジェクトを率いるためにMITラボに残った。そしてその偉業は、人類とコンピューターの未来を大きく変えることになるのだった。

ハミルトンの横に重なる膨大な書類が、アポロ計画のコンピューターのソースコードだといわれている。PHOTOGRAPH COURTESY OF NASA

当時「働く母親」として変わり者扱いされていたハミルトンは、宇宙船のプログラマーとしては草分け的な存在だった。彼女は週末や夜に、娘のローレンを連れてラボに出かけた。4歳のローレンをチャールズ川の見わたせるオフィスで寝かしつけた横で、ハミルトンは熱心にプログラムを書き、最終的にはアポロのコマンドモジュール・コンピューターの一部となるプログラムをつくり上げた。

「何度も言われたものだわ。よく娘をひとりにしておけるわね、って」とハミルトンは当時を振り返る。それでも彼女は、ほかではできないような仕事を愛していたし、仕事仲間との関係も気に入っていた。仕事後にMITの教員メンバーと一緒に飲みに行ったり、仲間内でしかわからないギークジョークを交わすのも楽しかった。他人には理解されなかったかもしれない。それでもラボでは「仲間の一員になれた」とハミルトンは話している。

いまと同じく、当時もテック業界の中心にいたのは男性研究者たちだった。多様性に乏しいといわれる今日のテック業界で働く女性プログラマーたちと同じく、ハミルトンも変わり者だったのだ。いまのソフトウェアメーカーの人々にとっては驚くべきことかもしれないが、この男性中心社会をつくった“父たち”のひとりは、“母”だったのだ(それは、なぜ現在においても男女の間で不平等があるのか?という疑問を投げかけてくれるに違いない)。

アポロ・コマンドモジュール実物模型で作業するマーガレット・ハミルトン。PHOTOGRAPH COURTESY OF MIT

1962年、同僚のひとりとハミルトン。PHOTOGRAPH COURTESY OF MARGARET HAMILTON

Nora

MITのラボでスタッフと、アポロ8号のミッションを見守る(写真前列左がハミルトン)。PHOTOGRAPH COURTESY OF MARGARET 

Nora

レイセオン社で銅のワイヤーを磁石リングに装着する作業。PHOTOGRAPH COURTESY OF JACK POUNDSTONE/RAYTHEON

銅のワイヤー部分のアップ写真。PHOTOGRAPH COURTESY OF JACK POUNDSTONE/RAYTHEON

彼女に宇宙計画の命運が託された

ハミルトンがキャリアを積み重ねていたちょうどそのころ、1961年にジョン・F・ケネディによって立ち上げられた「アボロ計画」のおかげもあって、ソフトウェア業界は大きな飛躍を迎えることになる。MIT器械工学研究所の彼女が所属するチームが、コンピュータープログラミングのコアとなるアイデアを発案。それは世界初のボータブルコンピューターの誕生につながることになる。

彼女はシステムプログラミングの専門家として腕を上げ、ハイレヴェルなエンジニアたちのディスカッションに参加しても引けをとらない存在になっていた。「わたしが初めてラボに来たときは、自分たちが何をやっているのかを理解している人は誰もいませんでしたね。西部開拓時代のようでしたよ。教育体制など整っていなかったので、人に教えることもできないのです」

マイクロソフトが創設される10年前、マーク・アンドリーセンが「ソフトウェアが世界を飲み込んでいる」と指摘した50年近くも前のことだ。アポロ宇宙計画の初期のころは、ソフトウェアに注目している人は誰もいなかった。アボロ計画の技術的な条件などが書かれている文章にすら「ソフトウェア」という言葉は見られない、とMITの航空宇宙工学研究者、デヴィッド・ミンデル教授は著書『Digital Apollo』のなかで書いている。「ソフトウェア開発は予定に入っていなかったし、予算にも組み込まれていなかった」

しかしアポロ計画が展開するなか、ミッションを達成するうえでソフトウェアが重要であることがわかってきた。1965年、ハミルトンはアポロ宇宙船搭載ソフトウェアの責任者となる。彼女の仕事に、宇宙計画の命運が託されたのである。そのプレッシャーで、ハミルトンは眠れない夜を過ごすこともあった。ある深夜遅くのパーティのあとに、コードに欠陥があることに気づいて研究室に急いで戻ったこともある。「いつか書かれるであろう、アポロ計画の新聞記事を想像していたものです。わたしのプログラムのことが記事に載るところをね」

1968年になると、400人以上がアポロ計画のソフトウェア開発のために働くことになった。ソフトウェアこそが、米国が月へのレースで勝つために必要な鍵だったからだ。そしてもちろん、ソフトウェアは予想を遥かに上回る役割を果たすこととなる。ハミルトンのチームはアポロ宇宙船のプログラミングを行うと同時に、のちに4,000億ドルの規模まで成長する産業を生み出していたのだ。

当時、ハミルトンにとってプログラミングとは、パンチカードに穴を開け、山積みされたファイルを一晩かけてバッチ処理し、それをアポロ月着陸船の動きをシミュレーションする巨大なハネウェル社製メインフレームコンピューターに投入する作業を指していた。「わたしたちは、宇宙船が飛び立つ前にすべてをシミュレーションする必要がありました」とハミルトンは振り返る。一度コードが設定されると、近隣にあるレイセオン社の作業場へと送られ、“小柄なおばさんたち”と呼ばれた熟練の女性縫師たちが銅線を磁石リングに巻き付けた(コアを通るデータ線に信号が生じたら二進数の〈1〉、コアを迂回する際は〈0〉と解釈される)。当時はRAMやディスクドライヴといった機器はまだなかったため、メモリーは文字通りコンピューターのなかに編み込まれていたのだ。

アポロのフライトの際には、ほぼ同一のコンピューター2台が積まれていた。1台は月着陸船「イーグル」に搭載され、もう1台は宇宙飛行士を地球から月、そして月から地球へと運ぶ司令船に使われた。約30kgのこれらのコンピューターは、類を見ないポータブルコンピューターだった。MITのエンジニアであるハル・ラニングや、ハミルトンの上司だったディック・バトンによって開発されたこの「アポロ誘導コンピューター」は、トランジスターの代わりに集積回路を使用した最初期のコンピューターの1つである。ミンデル教授によると、それは人が操作するように設計されていると同時にフライ・バイ・ワイヤー(航空機等の操縦・飛行制御システムの1種)による自動操縦テクノロジーを備えた最初のコンピューター搭載ナヴィゲーションシステムだった。現在もジェット機のスタンダードモデルとして使用されている先駆的なシステムである。

「こういった重要なコンピューターが宇宙船に搭載され、ミッションにおいて中核的な役割を与えられたのは歴史上初めてのことでした」とMIT在籍時にアポロ月着陸船のソースコードに取り組んでいたドン・アイルズは言う。「われわれは、それが可能だということを示すことができました。いまでは考えられないほどメモリー容量は少なく、計算速度も遅いコンピューターでしたが、われわれはやり遂げたのです」

このコンピューターがなければ、ニール・アームストロング船長が月面に着陸することはなかっただろう。そしてハミルトンやアイルズ、その他MITのエンジニアチームによって書かれたソフトウェアがなければ、コンピューターはそもそも役に立たなかっただろう。

レイセオン社の「小さなおばさんたち」。PHOTOGRAPH BY JACK POUNDSTONE/RAYTHEON

1969年7月20日、アポロ11号が「静かの海」に着陸するわずか数分前、彼らのコンピューターの重要性は明らかになった。アポロのソフトウェアエンジニア、ドン・アイルズが言うところの「ドキュメンテーション・エラー」、すなわちミッションの最重要フェーズでの緊急事態を伝えるメッセージをコンピューターが表示し始めたのである。

しかしこれは同時に、ハミルトンを含むエンジニアたちがこれまでディスカッションを重ねてきた経験が、功を奏した場面でもあった。エラーメッセージが次々と現れたのは、コンピューターが情報をオーヴァーロードし、不必要な計算タスクを課せられていたからだ。コンピューターはただ、月面着陸時の操縦に注力すればよかったのである。だがヒューストンのエンジニアたちは、非同期処理システムにより、誘導コンピューターは静かの海への着陸に専念できると知っていた。予定していた動作容量が十分でないと判断したソフトウェアはエラーを検出することで、最も優先度の高い命令に集中するようにできていたのです、とハミルトンは言う。

そのコードが人類の可能性を開いた

ある日、娘のローレンがMITのコマンドモジュール・シミュレーターの「DSKY」と呼ばれるキーボードで遊んでいた。彼女がディスプレイをおもちゃにして遊んでいるとき、あるエラーメッセージが表示された。ローレンはシミュレーション中に「P01」というプログラムを起動してしまい、ユニットをクラッシュさせてしまったのである。宇宙飛行士がそんな間違いをするとは考えられなかったが、これを見たハミルトンは、もしもの事態を回避するためにコードを追加したいと考えた。

ハミルトンと娘のローレン。PHOTOGRAPH COURTESY OF MARGARET HAMILTON

だが、このアイデアはNASAに却下されてしまう。「宇宙飛行士はミスをしない、と何度も言われましたね」と彼女は言う。「彼らは完璧に訓練されているから、と」。代わりにハミルトンは、NASAのエンジニアや宇宙飛行士が利用できるプログラムドキュメントに「フライト中にP01キーを押さないこと」と書き加えた。本来ハミルトンは、システムの混乱を防止するためのエラーチェック・コードを追加したかった。だがそれは、上層部には不要と判断されたのである。「みんなに言われました。『そんなことは決して起こらない』と」。ハミルトンはそう思い出す。

しかし、それが起きたのである。1968年のクリスマスのころ、月へ向かった初めての有人飛行船、アポロ8号が飛び立ってから5日が経っていたときのことだ。宇宙飛行士ジム・ラヴェルがフライト中に、うっかりP01キーを押してしまったのだ。

ヒューストンから呼び出しを受けたとき、ハミルトンは器械工学研究所2階の会議室にいた。P01キーを押したことで、ラヴェルがそれまでに収集したナヴィゲーションデータすべてを消去してしまったのである。それは大問題だった。データがなければ、誘導コンピューターは宇宙飛行士たちを地球に帰還させる軌道を見つけられないのだ。ハミルトンとMITのプログラマーたちは、修正するための方法、それも完璧な方法を考えなくてはならなかった。9時間にわたって厚さ8インチ(約20cm)のプログラムリストを調べた末に、彼らはあるプランを思いついた。ヒューストンから新たなナヴィゲーションデータをアップロードすればいいのだと。ハミルトンとローレンのおかげで、宇宙飛行士は無事帰還することができた。

ハミルトンと彼女の仕事は、人類ができることの可能性を成層圏外のみならず、現実世界でも指し示してくれた。ハミルトンが開拓したソフトウェア工学は、アポロ計画に始まり、いまではほぼすべての人が使う技術になるまでに普及した。1970年代に入ると、ハミルトンはNASAやアポロ計画から引退し、数々のソフトウェア会社を設立・牽引することになる。今日、彼女の会社であるハミルトン・テクノロジーズは、ハミルトンのキャリアが始まったMITラボ、夜空の星を見上げ続けるコード革命のハブから、わずか数ブロック先にある。

※『WIRED』によるNASAの関連記事はこちら。


Related Articles

PHOTOGRAPH BY by HARRY GOULD HARVEY IV

TEXT BY by ROBERT MCMILLAN

TRANSLATION BY by SATOSHI KATAGIRI