400人超のアポロ開発を率いた
ハミルトンは1936年に米インディアナ州で生まれ、1958年にアーラム大学で数学の学位を得た。1959年にMITで気象予測のプログラム開発に入り、1961年からリンカーン研究所で米国初期の防空システムSAGEに携わった。[1]
1965年、MIT計装研究所がNASAのアポロ計画で機上ソフトウェアを作る人材を募集していると知り、最初のプログラマーとして採用された。無人飛行用の開発を経て有人ミッションのチームを率い、1968年には司令・機械船側の責任者となった。MITによると、アポロのソフトウェア開発には400人以上が参加していた。[1]
後年、ハミルトンが自分の背丈を超えるソースコードの印刷物の横に立つ写真が広く知られた。だが、成果はコード量では測れない。限られた計算資源で、異常が起きても重要な処理を続ける方法を組み込んだことに価値がある。

月面着陸直前に処理の優先順位が働いた
1969年7月のアポロ11号月面着陸では、着陸船のコンピューターに1202エラーが表示された。ハードウェアのスイッチ設定によって、コンピューターが処理能力を超える仕事を抱えたためである。[1]
ハミルトンのチームが設計したソフトウェアは、不要なバックグラウンド処理を止め、着陸に必要な処理を優先した。警報を出しながら重要な仕事を続けたため、管制側は着陸を継続できると判断した。
NASAは2003年にハミルトンへExceptional Space Act Awardを授与した際、非同期処理、優先順位付きスケジューリング、端から端までのテスト、人間を意思決定に残す仕組みが高信頼ソフトウェアの基礎になったと説明した。[3]
障害を消すのではなく、障害が起きたときに何を残すかを先に決めていた。 現在のクラウドサービスでいう負荷制御や縮退運転にも通じる考え方である。
「ソフトウェア工学」を仕事の名前にした
1960年代、ソフトウェアはハードウェアに付随する作業と見られがちだった。ハミルトンは、ソフトウェアにも設計、検証、組織、専門性が必要だとして「software engineering」という呼び方を使い続けた。MITは、130本を超える論文を発表し、独立した分野の確立を助けたと評価している。[1]
呼称を変えることは、単なる肩書きの問題ではない。失敗時の振る舞いを仕様にし、テストし、記録し、責任を持つ対象としてソフトウェアを扱うことにつながる。機体や回路と同じように、プログラムも安全を左右する部品だと認めさせる仕事だった。
ハミルトンは1970年代までMIT計装研究所に勤めた後、1976年にHigher Order Softwareを共同創業し、1986年にはHamilton Technologiesを設立した。アポロで得たエラー防止と耐障害性の考えを、企業向けのシステム開発へ広げた。[1]
写真の象徴と実際の仕事を分ける
巨大なコードの束の横に立つ写真は、女性技術者の先駆者としての象徴になった。2017年にはNASAの女性たちを題材にしたレゴ製品にも登場した。AP通信は、晩年のハミルトンが技術分野の女性を励ます存在として評価されたと伝えている。[2]
一方、象徴だけで語ると、400人を超えるチームを動かした管理と設計の仕事が隠れる。月面着陸を「一人の天才が救った」とまとめるのも正確ではない。ハミルトンはチームを率い、優先順位付き処理を含む設計を積み上げ、管制官と宇宙飛行士が判断できる状態を作った。
個人の功績は、チームと手順を不要にしたことではなく、複数の人が安全に判断できる仕組みを作ったことにある。 これは現在の大規模ソフトウェア開発でも変わらない。
現代の開発へ残した4つの原則
ハミルトンの仕事から、現代の開発へ持ち帰れる原則は4つある。
- 処理能力が足りないとき、すべてを続けず重要な機能を優先する。
- エラーを隠さず、利用者や運用者が判断できる警報を出す。
- 正常系だけでなく、誤操作や機器の不具合を含む端から端のテストを行う。
- 自動化だけで閉じず、必要な場面では人間が判断できる情報を残す。
生成AIや自律型ソフトウェアでも、失敗時に何が止まり、誰に通知され、どこまで自動で続けるかは設計事項である。能力の高さだけでなく、異常時の振る舞いを先に決める姿勢が要る。
MITは、ハミルトンが「未知を扱う」ためのソフトウェア工学を実践したと振り返る。新技術が増えるほど、未知は減るのではなく形を変える。安全性は失敗が起きない約束ではなく、失敗しても最重要の目的を守る準備である。
カバー画像はアポロ宇宙船のモックアップ内にいるマーガレット・ハミルトン。写真:NASA / Wikimedia Commons、Public Domain。
まとめ
- マーガレット・ハミルトンは9月30日に90歳で死去し、MITが10月7日に発表した。
- アポロ11号では、不要な処理を止めて着陸に必要な処理を優先する設計が異常時に働いた。
- 障害を前提に優先順位、警報、端から端のテスト、人間の判断を組み込む考えは、現代のソフトウェアにも残る。






