
アポロ計画の飛行ソフトウェア開発を率いたコンピューター科学者、マーガレット・ハミルトン氏が9月30日に死去しました。90歳でした。月面着陸を支えたソフトウェアの開発に加え、ソフトウェア工学を独立した分野として認めさせる活動にも取り組みました。

気象予測からアポロ計画へ
ハミルトン氏は1936年、米インディアナ州パオリで生まれました。ミシガン大学で数学を学んだ後、アールハム大学に移り、1958年に数学の学士号を取得しました。
1959年にボストンへ移った後、マサチューセッツ工科大学(MIT)の気象学部門で、気象予測ソフトウェアの仕事に就きました。気象学者エドワード・ローレンツ氏と働いたことが、コンピュータープログラミングに携わる最初の機会になりました。
1961年にはMITリンカーン研究所で、米国初の防空システムとされるSAGE計画に参加しました。1965年、NASAのアポロ計画向けに搭載ソフトウェアを開発するMIT計測研究所に採用され、アポロ計画で最初のプログラマーとなりました。
400人超が担った飛行ソフトウェア
ハミルトン氏は当初、無人飛行のソフトウェアを担当し、その後、有人ミッション向けの機上飛行ソフトウェアを開発するチームを率いました。1968年には司令・機械船チームの副責任者となり、アポロ計画のソフトウェアには400人を超える人々が携わっていました。
アポロ8号では、飛行中に乗員が打ち上げ前のプログラムを起動し、航法データが失われました。ハミルトン氏は以前、シミュレーターで起きた同種の操作ミスを防ぐソフトウェア改修を提案していましたが、当初は採用されず、この出来事の後に変更がプログラムへ組み込まれました。
こうした経験は、誤操作や予期しない事態を想定し、ソフトウェア側でエラーを防いだり対処したりする「防御的プログラミング」の一例となりました。ハミルトン氏は、ソフトウェアをハードウェアなどと並ぶ工学分野として扱うため、「ソフトウェア工学」という言葉を使い、その認知に取り組みました。
1202警報後も着陸処理を継続
1969年7月のアポロ11号の月面降下中、誘導コンピューターに1202と1201のプログラム警報が表示されました。1202は処理に使うコアセット、1201はベクトル蓄積領域が不足したことを示す警報です。
警報の過負荷には、ランデブーレーダーに関係する余分な割り込みが寄与しました。問題は単純な機械的故障ではなく、レーダーのインターフェースと基準信号に関係していました。
誘導コンピューターのソフトウェアには、過負荷時に低優先度の処理を止め、重要な処理を再開する仕組みがありました。着陸誘導を続けられたのはこの回復機構によるもので、警報の原因そのものが消えたわけではありません。
ソフトウェアと地上管制の連携
警報への対応はソフトウェアだけで完結したものではありません。NASAの技術者ジャック・ガーマン氏が警報を評価し、誘導担当のスティーブ・ベイルズ氏がその知見を踏まえて着陸を続けられるか判断しました。
管制側は、誘導データが安定していることを前提に、飛行継続を乗員へ伝えました。乗員と地上管制は、警報が出ても着陸誘導が維持されているかを判断する必要がありました。
ハミルトン氏は1970年代までMIT計測研究所で働き、その後もソフトウェア企業を設立して開発を続けました。2016年には米国大統領自由勲章を受章し、2017年にはNASAの女性たちを題材にしたレゴセットに本人のミニフィギュアが加わりました。











