アポロ11号の危機を救った女性プログラマー、マーガレット・ハミルトン

1969年7月20日、アポロ11号が人類史上初の月着陸に向けて降下を始めた時。問題は起こりました。ニール・アームストロングとバズ・オルドリンを危機から救ったのは、あるプログラマーの機転のきいた仕掛けだったのです。

しかも、その人物とは32歳の女性プログラマーでした。
着陸目前の緊張感とわかりやすい解説で明かす、月面着陸の真実とは!?

1969年7月20日、ヒューストン時間15:06

史上初の月着陸を目指すアポロ11号の月着陸船イーグルは、月面 に向けて降下を始めていた。ニール・アームストロングとバズ・オルドリンは体に振動と加速度を感じたが、足元たった2メートル下で火を吹くエンジンの音は、真空の帳に遮られて全く聞こえなかった。

月面を背にして飛ぶ月着陸船の窓からは、漆黒の宇宙に浮かぶ青い地球が見えていた。その時…

ビー、ビー、ビー、ビー…

かん高い警報音がヘルメットの中に鳴り響き、コンピューターのPROGと書かれたランプが黄色く点滅した。

「プログラム・アラーム」

アームストロング が冷静に言った。オルドリンはコンピューターのキーを叩き、エラーの原因を問い合わせた。コンピューターは無機質な4桁の数字で答えた。

「1202」

オルドリンはヒュートンにその数字を告げた。訓練で経験したことのないエラーだった。

「1202」

オルドリンは繰り返した。ヒューストンからの返事はない。アームストロングが口を開いた。

「1202プログラム・アラームの意味を教えてくれ。」

声に苛立ちが混じった。無数のスイッチが並ぶ計器板の真ん中に”ABORT”と書かれた赤い大きなボタンがあった。

これを押せば緊急退避プログラムが作動し、降下ステージが投機され、上昇ステージのエンジンが船を安全な月軌道に押し上げる。それはつまり、月着陸ミッションの失敗を意味した。

この危機を救ったのは、アポロのコンピューターにプログラムされていた巧妙なソフトウェアだった。

それを開発したのは、マーガレット・ハミルトンという名の、当時32歳の女性プログラマーだった。

『宇宙兄弟』のワンシーン

マーガレット・ハミルトンは単に女性技術者の先駆けだっただけではない。「ソフトウェア」という言葉すらほとんど知られていない時代に新しい分野を切り開いた、真のパイオニアだった。現代では耳慣れた「ソフトウェア工学」という言葉を生んだのも彼女だった。

彼女は1936年にアメリカ・インディアナ州の人口たった2000人の小さな町で生まれた。父は哲学者で詩人だった。大学で数学を学んだ後、結婚し、北の街ボストンに移り住んで、愛する一人娘を設けた。時代は冷戦だった。MITリンカーン研究所に雇われ、SAGEというソ連機を自動追尾するシステムの開発に携わった。

1963年のある日、マーガレット・ハミルトンはMIT器械工学研究所がNASAとの契約 で「月に人を送るためのコンピューター」を開発しているという噂を聞いた。

「一生に一度のチャンスだ」と思った彼女は、すぐに電話をかけ、その日のうちに二つの部署と面接を取り付けた。

面接の日に両方から合格の知らせが来た。一方が本命だったが、もう一方を断って相手を傷つけるのが嫌だった彼女は、コイントスで決めてくれと伝えた。本当にコイントスをしたかは分からない。

彼女は結果的に望んでいた部署に雇われ、「月に人を送るためのコンピューター」のソフトウェアを開発する仕事をすることになった。

アポロ司令船のシミュレーターに座るマーガレット・ハミルトン。画像提供: NASA
アポロ司令船のシミュレーターに座るマーガレット・ハミルトン。画像提供:NASA

アポロ誘導コンピューターがもたらした数々の技術革新

MITが開発していた「人を月に送るためのコンピューター」は、正式にはアポロ誘導コンピューターという。プロジェクトを指揮していたのは、バッティン教授だ。

ひと昔前にテレビ番組『トレビアの泉』で、「アポロは初代ファミコン並みのコンピューターで月に行った」と紹介されたことがある。

たしかに、計算速度とメモリ量だけを比べれば、それは間違ってはいない 。計算速度の指標のひとつであるCPUのクロック数は、アポロ誘導コンピューターが2.0 MHz、ファミコンが1.8 MHZ。

(1)計算速度はCPUのクロック数だけでは単純比較できない。iPhone7はクアッドコアで64-bit。一方、アポロ誘導コンピューターはもちろんシングルコアで8-bit。

アポロ誘導コンピューター。画像提供: NASA
アポロ誘導コンピューター。画像提供: NASA

だが、人間は象より体が小さいから下等だというわけではないように、計算速度とメモリ量だけを比べて「性能が低い」というのは正しくない。

アポロ誘導コンピューターには時代をはるかに先取りしたイノベーションの数々が詰め込まれていた。現代の我々が当たり前と思っていることの多くは、実はアポロによって普及したものだった。

そのひとつが集積回路(IC)だ。当時は「デジタル・コンピューター」というもの自体が世の中にほとんどない時代だった。

あっても、それは大学や大企業の部屋ひとつを占める巨大な代物で、小さな町の灯りをぜんぶつけられるくらいの電力を食った。宇宙船に搭載するためには、革命的に小さく、軽く、そして省電力にする必要があった。

それを可能にした魔法が、当時の最新技術だったICだった。まだICを採用する電気製品はほとんどなく、1963年には全米で生産されるICの60%がアポロ向けだった。ICが産業として発展するのに、アポロは大きな役割を果たしたのだ。

そして、アポロ誘導コンピューターには絶対的な信頼性が求められた。「間違えてデータが飛んじゃった!」なんていう経験が、皆さんにおありだろう。スマホの写真くらいならば消えても彼女に怒られるくらいで済む。他の女の番号が消えてくれたらむしろハッピーなくらいだ。

だが、それが宇宙船の航法データだったら、それは宇宙飛行士の死を意味するかもしれない。

アポロ誘導コンピューターのプログラムやデータを格納するメモリ(ROM)には、どんな誤操作しても、叩いても蹴っても、絶対に消えない仕掛けがあった。データが文字通り「縫い付けて」あるからだ。

どういうことかというと、このROMはコア・ロープ・メモリといって、無数のリングと電線でできている。

リングを電線が通ると1、通らないと0と記録される仕組みだ。だから一度縫われてしまえば、メモリを消すことも書き換えることも物理的に不可能なのだ。

コア・ロープ・メモリは、女工さんたちが0と1の列を一針、一針、縫い針で縫って作られた。彼女たちの指先に月への旅の成否がかかっていた。だからNASAは度々宇宙飛行士に工場を訪問させ、女工さんたちを激励したという。

そして何よりも革新的だったのは、ほとんど誰も聞いたことのない「ソフトウェア」という概念を採用したことだった。

当時、機械は決められた機能しか持たないのが常識だった。たとえば機械式の腕時計は時間を表示する機能しかない。年月日も表示させるには、再設計をするか、別の機械を買う必要がある。

現代の我々は、パソコンやスマホに新しい機能を追加したい時、アプリ(アプリケーション・ソフトウェア)をインストールする。そのたびに機械(ハードウェア)を買い換える必要はない。

アポロ誘導コンピューターは、おそらく乗り物に搭載されるコンピューターとして史上初めての「ソフトウェア」を持ったコンピューターだったのだ。

マンガ『宇宙兄弟』©小山宙哉/講談社
マンガ『宇宙兄弟』©小山宙哉/講談社

史上初のデジタル・オートパイロット

マーガレット・ハミルトンがMITで働きはじめて間もない頃、アポロ誘導コンピューターは大きな転換点を迎えていた。

もともとNASAがアポロ誘導コンピューターに求めた機能は、前回の記事で書いたナビゲーション、つまり宇宙船の現在位置と速度を計算することだけだった。ところが開発が始まって3年後の1964年に、オートパイロットの機能も追加するようにNASAに求められたのだ。

このあまりにも無茶な要求にMITが応えられたのは、まさにソフトウェアの力だった。大胆な機能の追加にも、ハードウェアを再設計することなく、ソフトウェアを書き換えるだけで対応できたからだだ。

もちろん、ソフトウェアに課せられた責任と仕事量は膨大だった。

マーガレット・ハミルトンもオートパイロットのソフトウェアを開発する仕事を与えられた。彼女が担当したのは、万が一ミッションが失敗し緊急退避することになった場合のプログラムだった。

このプログラムが実際に使われることはないだろうと思われていたため、新米の彼女にこの仕事が回されたのだ。彼女はそのプログラムに「Forget it(忘れてね)」という茶目っ気のある名前をつけた。

ところで、もしあなたがタイムマシンに乗ってマーガレット・ハミルトンの仕事風景を見たら、とてもコンピューター・プログラミングをしているようには見えないだろう。

彼女はモニターとキーボードに向かっているのではない。ひたすらカードに穴を開けている。

アポロの時代、コンピューター・プログラムはパンチカードを使って入力した。パンチカードはマークシートに似ているが、鉛筆で塗りつぶす代わりに穴を開ける。

カード1枚でプログラム1行分。1枚、1枚穴を開けてプログラムを作る。大きなプログラムは何千枚、何万枚ものパンチカードになった。それをコンピューターに読み取らせてプログラムを動かすのである。

完成したプログラムを実行するのはいつも深夜だった。マーガレット・ハミルトンたちは夜遅くまでパンチカードに向かって働いた。そうやって作られたのが、世界初のデジタル・オートパイロットだった。

当時のプログラミングに使われたパンチカード
当時のプログラミングに使われたパンチカード

敵は宇宙飛行士

だが、マーガレット・ハミルトンたちが苦労の末に開発したオートパイロットを毛嫌いする人たちがいた。

宇宙飛行士だった。

たとえば、ある宇宙飛行士はMITの技術者に言い放った。

「もちろん打ち上がった瞬間にコンピューターの電源なんて切ってやるさ。 」

この頃の宇宙飛行士のほとんどは軍隊のパイロット出身だった。自分の手で操縦することが男の誇りだという飛行冒険家時代の古いヒロイズムが、彼らの血の中に残っていた。

とりわけ古参の宇宙飛行士がそうだった。彼らは容赦なく MITの技術者を罵倒した。後にアポロ15号の船長になるデイヴィッド・スコットも、こんなことを言った。

「なんでお前らはこんなことに時間を無駄にしてるんだ。MITに帰って考え直しやがれ。」

だが、手動操縦にこだわった宇宙飛行士はことごとくシミュレーションで月着陸船を墜落させた。アポロのシステムは非常に複雑で、もはや人間の手だけで操れるものではなかったのだ。

技術の進歩は、古臭い男のエゴに付き合うことはなかった。宇宙飛行士に選択肢はなかった。月に行きたければ、操縦桿を握るのではなく、コンピューターを操って宙を飛ばなければならなかった。

もし俺らが自殺したくなったら、させろ

マーガレット・ハミルトンはすぐに頭角を現し、数年のうちにアポロのフライト・ソフトウェア全てを統括する立場になった。

仕事は多忙を極めた。夜や休日は4歳の娘のローレンを職場に連れてきて働いた。そしてローレンが職場の床で寝ている間に、マーガレットはパンチカードに向かった。「よく娘をそんな風に放っておけるね」と皮肉を言われる事もあった。

ある日、退屈したローレンはアポロのシミュレーターで遊んでいた。そして偶然、「P01」という打ち上げ準備のプログラムを作動させてしまい、シミュレーターがクラッシュした。

それを見たマーガレット・ハミルトンはふと思った。万が一、実際の飛行中に宇宙飛行士が同じ間違えをしたらどうする?

そこでマーガレット・ハミルトンは、宇宙飛行士が間違えて致命的なコマンドを入力してしまった場合に、それを拒否するソフトウェアを書いた。

しかし、NASAはそのソフトウェアを却下した。

「宇宙飛行士は完璧に訓練されているから、決して間違えない。」

これがNASAの言い分だった。宇宙飛行士も激しく反対した。その急先鋒はアメリカ初の宇宙飛行士である、アラン・シェパードだった。彼は冷淡に言った。

「この安全ソフトを全部消せ。もし俺らが自殺したくなったら、させろ。」

仕方なくマーガレット・ハミルトンは折れ、代わりに宇宙飛行士向けのマニュアルにこう書き込んだ。

「飛行中にP01を選択しないこと。」

マーガレット・ハミルトンが正しかったことは、後に証明された。アポロ8号が月周回中、六分儀で星を観測していたジム・ラベルは、「01」番の星をコンピューターに入力しようとして間違えて「P01」を作動させてしまったのだ。

MITの会議室にいたマーガレット・ハミルトンはヒューストンからの緊急の電話に呼び出された。彼女たちは数時間かけて解決法を発見し、その手順をヒューストン経由で宇宙飛行士に伝え、事なきを得たのだった。

アポロ11号を救ったプログラム

この件ではマーガレット・ハミルトンのアイデアは採用されずに終わった。だが、実は彼女はもうひとつの重要なアイデアを思いついていた。

「自分たちプログラマーも、間違いを犯しうるのではないか?」

そう謙虚に考えたのだ。もちろん、ソフトウェアは宇宙船に搭載される前に徹底的にチェックされる。それでも、徹底的に訓練された宇宙飛行士もミスを犯すように、チェックをすり抜けてしまうバグもあるのではないか。

だから、バグのないソフトウェアを作るだけでは十分ではない。万が一バグがあった場合でも、人命に関わるトラブルを回避できるソフトウェアでなくてはならない。

この思想のもと、マーガレット・ハミルトンのチームはアポロのソフトウェアに、ある決定的に重要な機能を忍び込ませた。

もし万が一、何らかの原因でコンピューターがフリーズしそうになったら、プログラムを一度全て終了し、宇宙飛行士の生死に関わる重要なプログラムだけを再起動させる。 そしてそれを知らせるためにアラームを出す。

そのコードが「1202」だった。

画像提供:NASA
画像提供:NASA

1969年7月20日、ヒューストン時間15:07

「1202」

バズ・オルドリンの声がヒューストンの管制室に響いた。バック・ルームに控えていた技術者ジャック・ガーマンは即座にその意味を理解した。マーガレット・ハミルトンがプログラムした通りに、コンピューターはフリーズを回避し、月着陸に必要なオートパイロットを実行している。ガーマンはそれを誘導管制のスティーブ・ベイルズに伝えた。

ほぼ同時進行で、フライト・ディレクターのジーン・クランツが各担当に「ゴー」か「ノー・ゴー」かを尋ねた。一つでもノー・ゴーがあると着陸は中止だ。ベイルズは力強く答えた。

「ゴー!」

アラームが出てから、わずか20秒だった。月着陸は継続された。

原因は後に判明した。宇宙飛行士が使うチェックリストに誤りがあり、オフになっているべきランデブー・レーダーがオンになっていた。

そのせいで処理しきれない量のデータがコンピューターに流れ込んでいたのだ。もしマーガレット・ハミルトンのエラー回避機能がなければ、コンピューターはこの決定的なタイミングでフリーズし、月着陸は中断されていただろう。

その後も何度か同じアラームが出たが、オートパイロットは正常に作動し続け、月着陸船イーグルは月面から300メートルの高さにまで降下していた。アームストロングは窓の外を見てはっとした。

イーグルが向かう先に、サッカー場ほどの大きさのクレーターと岩場が見えたのだ。その瞬間、彼は”ATTITUDE HOLD”モードに切り替えた。

オートパイロットが降下速度をコントロールする間、アームストロングが水平方向の速度をコントロールしてクレーターを回避した。コンピューターと人間の、息のピタリと合った二重奏だった。

「燃料は?」

アームストロングが聞いた。

「8パーセント」

オルドリンが答えた。だいぶ少なかったが、安全に着陸できそうな場所がイーグルの向かう先に見えていた。

「オーケー、良さそうな場所がある。」

だが近づくにつれ、そこも安全ではないことがわかった。

「クレーターを飛び越す。」

そのすぐ先に、わずか30メートル四方の平らな場所があった。アームストロングとコンピューターは、まるで回路で接続されているかのように息を合わせ、その場所にイーグルを導いた。

「60秒」

燃料の残りをヒューストンが告げた。エンジンが巻き上げる砂煙が窓を覆った。

「30秒」

アームストロングに話す余裕はなかった。月着陸船はゆっくりと、灰色の月面へ降りていった。

「着地ライト 」

オルドリンが言った瞬間、アームストロングが「エンジン・ストップ」ボタンを押した。

振動が止まり、キャビンは完璧な静寂に包まれた。二人はヘルメットの中から無言で目を合わせた。アームストロングが感情を抑えた声で言った。

「ヒューストン、こちら静かの海基地。イーグルは着陸した。」

46億年の静寂を過ごした灰色の月世界に、はじめて生ける者が降り立った瞬間だった。

画像提供:NASA
画像提供:NASA

その後

アポロ計画が終了したのち、マーガレット・ハミルトンはMITを離れて起業し、ソフトウェア工学の第一人者として活躍した。

2016年、オバマ大統領はマーガレット・ハミルトンに大統領自由勲章を授与した。授与式でオバマは彼女の言葉を紹介した。

「当時はソフトウェア工学という分野すらなかった。だから私がパイオニアになる他に道はなかった。」

アポロ計画では12人が月面に足跡を残した。アポロ17号が1972年12月14日に月面を離陸して以降、この星の土を踏んだ人間は、まだ誰もいない。

©小山宙哉/講談社『宇宙兄弟』
©小山宙哉/講談社『宇宙兄弟』
©小山宙哉/講談社『宇宙兄弟』
©小山宙哉/講談社『宇宙兄弟』

こちらの記事は月面着陸50周年を記念して、『宇宙兄弟』公式サイトから「【第13回】〈一千億分の八〉アポロ11号の危機を救った女性プログラマー、マーガレット・ハミルトン」を許可を得て転載したものです。

執筆者プロフィール

小野 雅裕公式HP公式Twitter
大阪生まれ、東京育ち。2005年東京大学工学部航空宇宙工学科卒業。2012年マサチューセッツ工科大学(MIT)航空宇宙工学科博士課程および同技術政策プログラム修士課程終了。慶應義塾大学理工学部助教を経て、現在NASAジェット推進所に研究者として勤務。

2014年に、MIT留学からNASA JPL転職までの経験を綴った著書『宇宙を目指して海を渡る MITで得た学び、NASA転職を決めた理由』を刊行。

2018年には、自身のweb連載『宇宙に命はあるのか 人類が旅した一千億分の八』も書籍化。同書はアポロ11号の月面着陸50周年記念で、Kindle版が期間限定で11円で購入できます!(2019年7月20日時点)

キーワード