APOLLO GUIDANCE COMPUTER 1961-1972
月を目指したソフトウェアと、その言葉をつくった人
マーガレット・ハミルトン氏を悼む
2026年10月7日、マサチューセッツ工科大学(MIT)が一つの訃報を公表した。アポロ計画で宇宙船の搭載ソフトウェア開発を率い、「ソフトウェアエンジニアリング」という言葉を世に送り出したマーガレット・ハミルトン氏が、9月30日に死去した。90歳だった。
コードの山の隣に立つ、あの一枚の白黒写真を見たことがある人は多いだろう。自分の背丈ほどに積み上がった印刷物。あれが、人類を月に運んだプログラムである。IT小僧は今回、彼女を偲びつつ、アポロ計画の宇宙船ソフトウェアとは何だったのか、そして AI がコードを書く時代に我々が何を受け継ぐべきかを考えてみたい。
確認済みの事実(MIT公式発表より)
1936年インディアナ州ポーライ生まれ。1959年にMIT入り、1961年からリンカーン研究所で防空システム SAGE を担当。1965年、MIT計器研究所でアポロ計画の最初のプログラマーとして採用される。1968年には司令船チームの責任者となり、最終的に400人超が参加するソフトウェア開発を統括した。2016年、オバマ大統領より大統領自由勲章を受章。
アポロの宇宙船ソフトウェアとは何だったのか
アポロ宇宙船には、司令船と月着陸船それぞれに「アポロ誘導コンピューター(AGC)」が搭載されていた。MIT計器研究所(現在のドレイパー研究所)が設計し、レイセオンが製造した機械である。現代の感覚でいえば、スペックは絶望的に貧弱だ。
| 項目 | アポロ誘導コンピューターの諸元 |
| 語長 | 15ビット+パリティ1ビット |
| 書き換え可能メモリ | 2,048ワード(磁気コアメモリ) |
| 固定メモリ | 36,864ワード(コアロープメモリ) |
| 容量の目安 | 合計しても約76キロバイト相当 |
| 筐体と重量 | 約61×32×17センチ、約32キログラム |
| 操作端末 | DSKY(表示・キーボード装置) |
| 開発体制 | MIT計器研究所、最大400人超 |
注目すべきは固定メモリだ。これは「コアロープメモリ」と呼ばれ、フェライトの磁気コアに銅線を通すか、脇を迂回させるかで1と0を表現した。つまりプログラムは、文字どおり手で織られていた。工場の作業者が針で線を通し、一度織り上げたら書き換えは効かない。打ち上げ数週間前に、月へ行く命令はすべて金属のリングの中に物理的に固定されたのである。
宇宙飛行士はこの機械と、DSKY という小さなパネルで対話した。「動詞(バーブ)」と「名詞(ナウン)」の二桁の数字を打ち込むと、何をどう操作するかが決まる。人間にとって優しいとは言えない。しかし、2キロバイトの書き換え領域しかない機械に、慣性航法、エンジン推力制御、姿勢制御、着陸誘導、表示処理を同時に走らせるには、これ以外の設計はなかった。
着陸直前に鳴った「1202」アラーム
1969年7月、アポロ11号の月着陸船イーグルが降下に入って数分、コンピューターがアラームコード「1202」を表示した。意味は「エグゼクティブ・オーバーフロー」、つまり処理が間に合わない。管制室には緊張が走り、中止するかどうかの判断が数十秒で求められた。
原因はランデブーレーダーだった。着陸には不要なこの装置が、スイッチ位置の問題でコンピューターへデータを送り続け、処理能力の相当部分を奪っていた。普通の設計なら、ここで固まるか暴走する。
ところがアポロのソフトウェアは固まらなかった。ジョブに優先度を与え、余力がなくなれば低優先度の仕事を切り捨てて再起動し、着陸に必要な処理だけを生き残らせる仕組みが組み込まれていたからだ。管制室はソフトウェアを信じて続行を指示し、人類は月面に降りた。
正確を期すための補足
この優先度方式の実行管理機構(エグゼクティブとウェイトリスト)を設計したのは、同じMIT計器研究所のハル・レイニング氏である。ハミルトン氏個人の発明として語られることがあるが、正確ではない。彼女の功績は、こうした設計思想を400人規模の開発全体に徹底させ、検証し、飛行可能な品質に仕上げたマネジメントとエラー対策にある。アポロのソフトウェアは集団の成果であり、その事実こそ彼女自身が最も強調していたことでもある。
ハミルトン氏が残したもの
彼女の最大の貢献は「防御的プログラミング」の実践である。きっかけは娘のローレンさんだった。4歳の彼女がシミュレーターで遊んでいて、飛行中に打ち上げ前プログラム「P01」を起動させ、システムを落としてしまった。
ハミルトン氏は「訓練された宇宙飛行士はこんな操作をしない」という理由で修正を却下された。ところが1968年のアポロ8号で、ジム・ラヴェル飛行士がまさに同じ操作をしてしまい、航法データが消失する。復旧作業の後、彼女の提案はようやく正式に組み込まれた。
「訓練された人間はミスしない」という前提を、彼女は信じなかった。人間は必ず間違える。だからソフトウェアの側が、間違いを予期し、検出し、自力で回復できるように作られていなければならない。これは今日のフォールトトレランス設計そのものであり、1960年代にこれを主張して通したことの重さは計り知れない。
アポロ後、彼女は1976年に Higher Order Software 社を設立した。エラー防止と耐障害性という、自らの設計思想そのものを事業にしたのである。
さらに10年後、Hamilton Technologies 社を興す。その主力製品となった設計言語は、エラーを「発見する」のではなく「そもそも発生させない」ことを狙ったものだった。生涯を通じて、彼女のテーマは一貫して「未知への対処」だったといえる。
「ソフトウェアエンジニアリング」という言葉の意味
1960年代、ソフトウェアを書く仕事に名前はなかった。ハードウェアこそが工学であり、プログラムは「ブラックボックス」、良くて付属品、悪く言えば誰にでもできる雑務という扱いだった。
ハミルトン氏は、この仕事にも固有の規律があり、他の工学と同じ敬意を受けるべきだと考えた。そこで、ハードウェア工学などと区別しつつ、システム工学全体の一部として位置づけるために、あえて「ソフトウェアエンジニアリング」という語を使い始めた。彼女自身の回想によれば、当初これは長らく冗談のネタにされ、過激な考えだとからかわれ続けたという。
この言葉が意味していたこと
単に「プログラミングの格好いい言い換え」ではない。設計・検証・文書化・構成管理・レビューを含む規律ある工程として扱い、その成果物の品質に工学と同じ責任を負う、という宣言である。再現性のない職人芸から、説明可能な工学へ。この転換こそが、アポロのソフトウェアに人命を託せた理由だった。
AI時代の我々が見習うべきこと
さて、ここからが本題である。コードは AI が書く時代になった。生成速度は人間の比ではない。では、アポロから学ぶことはもう無いのか。IT小僧は、むしろ今こそ学ぶべきだと考える。
| アポロの原則 | 現代への読み替え |
| 人間は必ず間違える | AIも必ず間違える。前提を疑う設計を置く |
| 優先度と切り捨て | 過負荷時に何を守り何を捨てるかを事前に決める |
| 制約が設計を鍛える | 潤沢な資源は、考えない言い訳になりうる |
| やり直しが効かない | 本番一発勝負の領域は今も確実に存在する |
| 仕事に名前を与える | 誰が品質に責任を負うのかを曖昧にしない |
生成されたコードは、レビューされなければ単なるテキストである。動いたから正しい、という判定は、アポロの時代でも通用しなかった。今のほうが、むしろ危うい。書く速度が上がった分、検証されないコードの総量だけが積み上がっていくからだ。
もう一つ。彼女が闘った相手は技術的困難だけではなかった。「ソフトウェアは工学ではない」という組織の空気と、「訓練された人間はミスしない」という管理側の思い込みである。この二つは、形を変えて今も現場にある。「AIが書いたから大丈夫」「レビューは工数の無駄」という言葉を聞いたら、それは1960年代に彼女が却下された場面とまったく同じ構図だと思ったほうがいい。
まとめ
アポロのソフトウェアは、2015年に全ソースコードが公開され、今では誰でも読むことができる。半世紀以上前の、手で織られたプログラムが、いまも学習材料として生き続けている。
ハミルトン氏は当時を振り返って、自分たちは世界で最も幸運な人間だったと語っている。前例がないのだから、開拓者になるしかなかった、とも。その幸運を引き受けた結果として、我々の職業には名前があり、規律があり、敬意がある。
76キロバイトで月へ行けた。我々は、その何万倍もの資源を持っている。足りないのは容量ではなく、たぶん規律のほうだ。マーガレット・ハミルトン氏のご冥福を心よりお祈りする。
出典・参考:MIT News 公式訃報(2026年10月7日付)、MIT計器研究所およびドレイパー研究所公開資料、アポロ誘導コンピューター技術資料