Skip to content
industry insights

Apollo 11のコードは今も動く—そしてそれは素晴らしい

Apollo 11のオリジナルコードをエミュレーターで実行し、その小さなコンピューターがどのように過負荷を乗り越えたかを確認しましょう。ソースコードには、ミッションの背後にあるエンジニアリングの工夫、そしてジョークが隠されています。

Cassidy Wolfe
Apollo 11のコードは今も動く—そしてそれは素晴らしい

2冊のバインダーに隠された月面ミッション

驚くべき事実があります。1969年に人類を月に着陸させたコードは今も存在しており、MIT博物館に保管されていた2冊の紙のバインダーから綿密に書き起こされました。ボランティアたちがこれらの歴史的なスキャンデータを苦労してデジタルコードベースに変換し、現在では誰でもアクセスして実行できるようになっています。これは、保存活動と共同作業の賜物です。

これは単独の天才の物語ではありません。当時、先駆的なコンピューター科学者であったMargaret Hamiltonは、MIT Instrumentation Laboratoryのソフトウェアエンジニアリング部門を率いていました。400人以上のチームが、Apolloの司令船と月着陸船の両方に不可欠なソフトウェアを開発しました。Hamiltonのリーダーシップとこの取り組みの規模の大きさは、Apolloの背後にある集団的な卓越性を物語っています。

Apollo Guidance Computer用のアセンブリ言語で書かれたこの現存するソースコードは、アセンブルすることでオリジナルのメモリイメージと完全に一致させることができます。愛好家はVirtual AGCエミュレーターを使って、Apollo 11の宇宙飛行士が実行したのと全く同じシーケンスを体験することさえ可能です。これにより、初期の宇宙飛行ソフトウェアの厳格で制約の多い世界を前例のないほど深く理解することができます。

コンピューターのメモリはツイートよりも少なかった

月面ミッションは、現代のサーモスタットよりも性能の低いハードウェアで実行されていました。MITのInstrumentation Laboratoryで構築されたApollo Guidance Computer (AGC) は、わずか1.024 MHzで動作し、消去可能なメモリはわずか2,048ワード、つまり約3,840バイトしかありませんでした。比較として、現代のRaspberry Pi Picoは70倍のRAMと130倍高速なクロックを誇ります。

制約がAGCを定義しました。72 KBの読み取り専用メモリは、物理プログラミングの驚異であるcore rope memoryに依存していました。小さな磁気コアにワイヤーを通すことでソフトウェアを直接エンコードしていました。リングにワイヤーを通すとバイナリの「1」、通さないと「0」を意味しました。つまり、ソフトウェアの迅速な修正は不可能であり、フライトコードは文字通りハードウェアに織り込まれ、打ち上げの数ヶ月前には固定されていたのです。

こうした制限が、卓越した設計を強制しました。エンジニアは極めてコンパクトなコードを作成し、完璧を期して厳密に検証しました。AGCのExecutiveスケジューラーはタスクに優先順位を付け、12ワードのスロットで最大8つのジョブを処理しました。GitHubリポジトリに書き起こされたコードを見ると分かるように、コード内のコメントでさえ実装されたロジックと食い違うことがあり、極限のプレッシャー下での迅速で反復的な開発の証となっています。

コードにはジョークがある。しかし、安全対策は真剣そのもの。

月へ向かうコードであっても、ユーモアは普遍的な定数であることが分かりました。計り知れないプレッシャーにもかかわらず、MITのInstrumentation Laboratoryのエンジニアたちは、Apollo Guidance Computerのアセンブリコードに、人間味あふれる楽しいコメントを散りばめました。「Please crank this silly thing around(この馬鹿げたものを回してくれ)」は着陸レーダーアンテナを動かすよう宇宙飛行士に指示するものであり、「Off to see the wizard(魔法使いに会いに行こう)」は「Burn Baby Burn(燃えろ、燃えろ)」と遊び心たっぷりに名付けられたエンジン点火シーケンスの前に置かれています。

宇宙飛行士は、小さなテンキーとディスプレイを備えたミニマルなインターフェースであるDSKY (Display/Keyboard) を通じて、この複雑なシステムと対話しました。コマンドは簡潔な数値の動詞と名詞のペアで構成されていました。「動詞」はアクション(例:表示)を、「名詞」は対象(例:時計)を示します。暗記したりチェックリストを参照したりして練習したこれらの指示こそが、飛行中にコンピューターを操作する唯一の方法でした。

しかし、その機知の裏には鉄壁の回復力がありました。Apollo Guidance ComputerのExecutive schedulerはタスクに優先順位を付け、重要な誘導機能が常に実行されるようにしました。Apollo 11の降下中に故障したrendezvous radarが原因でシステムが過負荷になった際、重要度の低いタスクが破棄され、1202のようなアラームがトリガーされました。

極めて重要な点として、restart checkpointsが不可欠な作業を保護していました。コンピュータが再起動しても、最後のチェックポイントから重要なプロセスを再開し、降下エンジンさえも再始動させることができました。この堅牢な設計により、コンピュータはミッションを放棄することなく障害を管理することができ、極限の制約下での先見の明を証明しました。この厳格さとユーモアの融合に興味がある方は、Original Apollo 11 Guidance Computer (AGC) Source Codeが公開されていますのでご覧ください。

この記事が気に入ったら、毎朝同じようなものをメールで受け取れます。

1日1通 · 2クリックで解除 · サードパーティのトラッキングなし

なぜ1202アラームが着陸を阻止しなかったのか

Apollo 11の着陸で悪名高い1202アラームは、プロセッサ時間を巡る必死の戦いを知らせるものでした。月着陸船が降下する際、rendezvous radarが毎秒12,800パルスを発信し、予期せずコンピュータのサイクルの13〜15%を消費しました。この活動と、すでに90%が使用されていたプロセッサが組み合わさったことで、重要なナビゲーションタスクが予定通りに完了できなくなりました。

Apollo Guidance Computer (AGC)のExecutive(スケジューラ)は、それぞれ12ワードの8つのジョブスロットしか管理できませんでした。ナビゲーションタスクが完了しなかったとき、新しいコピーがキューに入れられ、これらのスロットを急速に埋めて1202アラームをトリガーしました。AGCは保護されていない作業を破棄して再起動し、不可欠な降下機能を優先させることで対応しました。Steve Balesをはじめとするフライトコントローラーは、着陸を続行できるかどうかを迅速に判断する必要があり、最終的な数分間で5回もその決断が下されました。

この回復力は偶然ではありませんでした。MIT Instrumentation LaboratoryのMargaret Hamilton率いるチームは、AGCに堅牢なrestart protectionを組み込み、降下中であっても重要な操作を再開できるようにしました。コード全体に配置されたチェックポイントにより、降下エンジンなどの重要なタスクを即座に再起動できるようになっていました。

今日、AGCの素晴らしさを検証することができます。Virtual AGCプロジェクトは、コンピュータとそのDisplay and Keyboard (DSKY)インターフェースを忠実にエミュレートしており、誰でもApollo 11のフライトコードを実行できます。打ち上げ前のチェックから着陸時のアラームまで、宇宙飛行士が使用した正確なシーケンスをApollo 11 AGC repositoryで探索できます。Hamiltonが述べたように、彼女のチームには「二度目のチャンス」はありませんでしたが、彼らのコードは私たちに学ぶための無限の機会を与えてくれています。

よくある質問

今日、オリジナルのApollo 11ソースコードを実行できますか?

はい。書き起こされたソースコードは、オープンソースのVirtual AGCエミュレータでアセンブルして実行できます。

Apollo Guidance Computerにはどれくらいのメモリがありましたか?

2,048ワードの消去可能なメモリ(約3,840バイト)に加え、固定の読み取り専用コアロープメモリがありました。

Apollo 11の着陸中に1202アラームが発生した原因は何ですか?

レーダーパルスがプロセッサ時間を消費し、スケジューラの限られたジョブスロットを過負荷にしたためです。コンピュータは優先度の低い作業を破棄し、保護されたタスクを再起動しました。

Margaret Hamiltonとは誰ですか?

HamiltonはMITのInstrumentation LaboratoryでApolloのソフトウェアリーダーを務め、有人ミッションを誘導したソフトウェアの開発に貢献しました。

Found this useful? Share it.

For builders

Want Stork to write one of these about your product?

Send us a URL. We use the product, form a view, and publish what we actually think — in 8 languages, labeled Sponsored, with no copy approval on your side. That last part is what makes it worth quoting.

See how it works$199 · AI tools & software only

ビルダーの方へ

このページは、他社のツールのために働いています。

AIエージェントが読み、購入検討層がたどり着きます。8言語とMCP経由で答えます。あなたのツールにも同じページを — 24時間以内に公開。