🚀 プログラマー列伝:マーガレット・ハミルトン〜 人類を月に送ったコード、「ソフトウェアエンジニアリング」という言葉を作った先駆者 〜
"There was no choice but to be pioneers; no time to be beginners."
— Margaret Hamilton
この人、格好良すぎると思う…

基本プロフィール
本名:Margaret Elaine Heafield Hamilton
生年月日:1936年8月17日
出身:アメリカ・インディアナ州ポーリ
学歴:Earlham College 数学 学士(1958年)
主な業績:Apollo誘導コンピュータ・ソフトウェア開発、「ソフトウェアエンジニアリング」という用語の創出、USL(Universal Systems Language)の開発
会社:Hamilton Technologies, Inc.(1986年創業、現CEO)
称号:"Software Engineering Pioneer"
生い立ちと転機
1936年、インディアナ州の小さな町に生まれる。
Earlham Collegeで数学を専攻し、1958年に卒業。
卒業後の計画はシンプルだった:
「夫のハーバード法科大学院在学中の生活費を稼いで、
その後に自分も大学院に進む。」
そのつもりで MIT でプログラマーとして働き始めた。
しかし——Apolloプログラムが始まった。
月に人を送るという途方もないプロジェクトに、ハミルトンは引き込まれていった。
大学院進学の計画は、そっと棚に上げられた。
MIT時代:ソフトウェアという「荒野」
SAGE防空システム(1960年代初頭)
最初の仕事はMIT リンカーン研究所での SAGE(Semi-Automatic Ground Environment) プロジェクト。
アメリカ初の防空コンピュータシステムで、敵機識別ソフトウェアの開発を担当した。
この経験が、後のApollo参加への足がかりとなった。
Apollo参加(1965年〜)
ハミルトンは1965年にApolloプロジェクトを知り、「非常にエキサイティングな月面プログラムだ」として参加を希望。MITインストゥルメンテーション研究所に加わり、Apolloプロジェクト初のプログラマー、かつ初の女性プログラマーとなった。
後にソフトウェアエンジニアリング部門のディレクターに昇格。
「荒野」としてのソフトウェア開発
当時、誰も本当に何をしているかわかっていなかった。ソフトウェアは荒野だった。「ソフトウェアエンジニアリングという分野は存在しなかった。自分たちだけでやるしかなかった。知識は、あるいはその欠如は、人から人へと伝えられていくだけだった」とハミルトンは語っている。
教科書も、先生も、カリキュラムも存在しない。
チーム全員が自分たちで考え、自分たちで解決するしかなかった。
Apollo誘導コンピュータ(AGC)のソフトウェア
ハードウェアとしての「コード」
当時のメモリ技術は現代とは根本的に異なっていた。
Apolloミッションでは、記憶媒体として「ロープ」と呼ばれる特殊なコアメモリが使われた。ハミルトンのプログラムはロープに織り込まれ、ボストン近郊ウォルサムの多くの縫製工たちが、ソフトウェアを手作業でハードウェアに変換した。小さな鉄のリングが銅線に糸のように通されていった。
コードは文字通り、職人が手で「編む」ものだった。
そのロープを管理するハミルトンは、チームから 「ロープ・マザー(Rope Mother)」 と呼ばれた。
「コードの山」と同じ高さの女性

1969年に撮影された有名な写真がある。
ハミルトンが、自分の身長ほどに積み上がったコードの印刷物の隣に立っている写真。
コードの束が彼女の身長と同じほど積み上がっているその姿を描いたLEGOのマーガレット・ハミルトン フィギュアが2017年に「NASAの女性たち」コレクションの一部として発売された。
Apollo 11:着陸3分前の危機(1969年7月20日)
「1202」アラーム
人類初の月面着陸まで残り3分というとき、アポロ11号のコンピュータに
「1202」エラーアラームが連続して鳴り響いた。
宇宙飛行士も地上のNASA管制室も、何が起きているか把握できていなかった。
何が起きていたか
アストロノーツが気づかないまま、ランデブーレーダーのスイッチが誤った位置になっており、そのためコンピュータの処理能力が圧迫されていた。
コンピュータは処理過負荷に陥っていたのだ。
なぜ着陸できたのか
ハミルトンのチームが事前に優先度付きタスク管理システムを設計していた。
コンピュータが過負荷になったとき、自動的に:
低優先度タスクを切り捨てる
着陸に必要な最重要タスクだけ継続する
エラーコードで状況を通知する
という自律的エラー回復が動作した。
ハミルトンはこの状況に備えていた。彼女とチームが開発したエラー検出・回復ソフトウェアにより、着陸直前のギリギリのタイミングでミッションを救うことができた。
ハミルトンは後にこう記している:
"もしコンピュータがこの問題を認識して回復措置を取らなかったら、
Apollo 11は成功した月面着陸にはなっていなかったと思う。"
「ソフトウェアエンジニアリング」という言葉の誕生
ハミルトンは「ソフトウェアエンジニア」という言葉を自分たちの仕事を表すために作り出した。自分たちのやっていることがApollo宇宙船の他の仕事と同様に重要で、同等のエンジニアリングだと感じていたからだ。
しかし当初は嘲笑された。批評家たちは「仕事の重要性を誇張している」と言った。
それでもハミルトンは諦めなかった。
ハードウェアエンジニアたちに認められるまで、動くソフトウェアで証明し続けた。
「最も尊敬されていたハードウェアの第一人者が会議で
『ソフトウェア開発もハードウェアと同様にエンジニアリング分野とみなすべきだ』
と言ってくれた日のことは忘れられない。
私たちはエンジニアリング分野として認められたのだ。」
今日、「ソフトウェアエンジニア」は世界で最も需要の高い職業のひとつである。
Apollo以降のキャリア
1969〜1972年:残りのApolloミッション、Skylabソフトウェア開発を継続
1976年:民間企業 Higher Order Software (HOS) を共同創業
1986年:Hamilton Technologies, Inc. を創業・CEO就任
〜現在:USL(Universal Systems Language) と DBTF(Development Before the Fact) の研究・普及
USLとDBTF:ハミルトンの「その後」
Apollo後のハミルトンは、「なぜソフトウェアにバグが生まれるのか」の根本解決に取り組んだ。
DBTF(Development Before the Fact):
バグを後から直すのではなく、設計段階でバグの入り込む余地をなくす というパラダイム。
ハミルトンは「ソフトウェアエンジニアリング」という概念を確立し、非同期ソフトウェアや優先度駆動タスク管理の概念を開発した。
受賞・栄誉
1986年:Augusta Ada Lovelace Award(コンピュータ分野の女性への最高賞)
2003年:NASA Exceptional Space Act Award(NASA史上最高額の賞)
2016年:大統領自由勲章(Presidential Medal of Freedom)(バラク・オバマ大統領より)
2017年:LEGOフィギュア化(「NASAの女性たち」コレクション)
継続中:Hamilton Technologies, Inc. にて現役で研究・開発中
人物像
開拓者気質:マニュアルも教科書も存在しない分野に飛び込み、自ら切り拓いた
信念を曲げない:「ソフトウェアもエンジニアリングだ」と笑われても証明し続けた
実用主義と先見性の融合:月面着陸という極限の現場で、エラー回復という「未来のソフトウェア思想」を実装した
まとめ:マーガレット・ハミルトンが変えたもの
「ソフトウェアは重要ではない」という時代 → 「ソフトウェアエンジニアリング」という言葉と概念を創出
「動けばいい」というコードの時代 → エラー検出・自律回復・優先度管理という思想を実装
Apollo 11、着陸3分前の危機 → 事前に設計した回復システムが人類初の月面着陸を救った
マーガレット・ハミルトンが証明したのは、
「ソフトウェアは宇宙船と同じく命を預かるエンジニアリングである」 ということ。
そして彼女が1960年代に月面着陸のために書いたコードの思想——
エラーを事前に予測し、自律的に回復する設計——は、
現代のあらゆる組み込みシステム・クリティカルシステムの基礎となっている。
参考:Britannica, Smithsonian Magazine, IEEE Computer Society, Wikipedia, Kartaca, DPMA ほか
