軌道上における10億ドルのボトルネック
宇宙船のフライトソフトウェア検証は天文学的なハードルであり、しばしばイノベーションを阻む10億ドル規模のボトルネックとなります。たとえ小さな新機能であっても、それを導入するには宇宙船全体のシステムを再検証する必要があるからです。この徹底したプロセスには広範なテストベッドへのアクセスが必要であり、数年を費やすことも珍しくなく、大幅な遅延とコスト増大を招いています。
歴史的に、火星探査機の走行やロボットアームの精密な制御といった特定のミッションタスクの指示は、カスタムのコマンドシーケンスで定義されてきました。これらのシーケンスはコアとなるフライトソフトウェアの外側に存在し、その実装はミッションごとに大きく異なっていました。そのため、新しい宇宙探査プロジェクトが立ち上がるたびに、特注で断片化された高コストなコードベースが生成され、標準化や再利用が妨げられてきました。
この特注のアプローチは重大なジレンマを引き起こしました。宇宙船の自律性を高めるには複雑な新しいソフトウェアの統合が必要ですが、既存の検証パラダイムでは、それが非常に低速でリスクの高いものになっていたのです。NASAのJet Propulsion Laboratoryは、数十億ドル規模のミッションを危険にさらしたり、進歩を妨げる終わりのない数年単位の検証サイクルに陥ったりすることなく、新しい自律ソフトウェアを安全かつ効率的に展開する方法を早急に必要としていました。
火星のためのブラウザサンドボックス
WebAssembly(Wasm)は、ブラウザのギミックとしてではなく、ハードウェアに依存しない強力なバイトコード形式、つまりコンピュータ命令のための「万能翻訳機」として登場しました。これは標準化された実行環境を提供し、多様なソフトウェアコンポーネントが、完全な再コンパイルを必要とせずに、異なるプロセッサアーキテクチャ間で一貫して動作することを可能にします。
この本質的な移植性に加え、重要な機能として堅牢なサンドボックス化が備わっています。Wasmは「信頼性の低い」コードのために安全で隔離されたコンテナを作成し、コアとなるフライトシステムへの干渉や、許可されていないメモリおよび計算リソースへのアクセスを根本的に防ぎます。
NASAにとって、この隔離機能はゲームチェンジャーです。メインのフライトソフトウェアは、サンドボックス化されたモジュールに割り当てられたメモリとCPU時間を厳密に制御し、実行の開始から終了まで細心の注意を払って監視します。このパラダイムシフトにより、更新されたナビゲーションアルゴリズムのような新しい機能を追加する際に、数年かかるシステム全体の再検証プロセスが不要になります。
この安全な実行モデルを宇宙に持ち込むため、NASAのJet Propulsion LaboratoryはSpaceWasmを開発しました。この専用インタープリタは、宇宙船上で直接Wasmバイナリを変換し、リソースが制限された環境に合わせてコンパクトなバイトコードを適応させます。SpaceWasmはバイトコードを直接実行するのではなく、固定された測定可能なメモリ量を使用して、より高速な中間形式にデコードします。これにより、ミッションクリティカルなシステムに不可欠な決定論的なリソース使用が保証されます。
SpaceWasmのフェイルセーフ設計の内部
SpaceWasmの設計は、柔軟性よりも予測可能性を優先しており、これは宇宙船の運用において譲れない条件です。コンパクトなWebAssemblyバイトコードを直接実行することは避け、エンジンはまずバイトコードをより高速な内部の中間表現(IR)にデコードします。この重要な前処理ステップは、固定された測定可能なメモリ量を消費するため、動的システムでよく見られる予測不可能なメモリの急増を防ぎ、実行効率を確保します。この決定論的なアプローチにより、ミッションクリティカルなハードウェア上でのリソース競合が防止されます。
一般的なソフトウェアとは異なり、SpaceWasmは決定論的でパニックフリーなシステムを備えたカスタム動的メモリ割り当て機能を採用しています。メモリは固定サイズのメモリページを通じて管理され、操作の途中で動的にサイズを変更することはできません。これらのページ内のサブリージョンもあらかじめ決められた不変のサイズを持っており、宇宙船の機能を停止させかねない予期せぬ割り当て失敗のリスクを排除しています。この「サプライズのない」メモリモデルは、その信頼性の根幹をなすものです。
これは汎用的なWebAssemblyランタイムではなく、NASAのJet Propulsion Laboratoryで開発された、極めて専門性の高い緻密なエンジンです。最大限の安全性と並行性を確保するためにRustで記述されており、SpaceWasmには厳格な運用制限が課されています。最大256個のモジュールをサポートし、スタック深度の設定が可能で、24ビットのページアドレッシングを利用します。その堅牢な設計と包括的なテストに関する技術的な詳細については、プロジェクトのソースコードをご覧ください:nasa/spacewasm: A flight-compliant WebAssembly interpreter。この厳格なエンジニアリングが、失敗が許されない環境での信頼性を保証します。
この記事が気に入ったら、毎朝同じようなものをメールで受け取れます。
1日1通 · 2クリックで解除 · サードパーティのトラッキングなし
地球外コードの新たなスタンダード
ユニバーサルなランタイム機能は、将来のミッションに向けて前例のないコードの移植性を約束します。一度検証された単一の機器用ソフトウェアは、火星、木星、さらには太陽系外へと向かう多様な宇宙船に展開可能です。この標準化されたアプローチにより、ミッションごとにカスタムソフトウェアを書き直すという歴史的な負担が解消され、開発サイクルと検証コストが劇的に削減されます。
NASAのJet Propulsion Laboratoryは、SpaceWasmをオープンソースプロジェクトとしてGitHubで公開しました。この透明性は世界的な協力を促進し、ドイツのDLRのような他の宇宙機関や、より広範な技術コミュニティからの貢献を歓迎しています。このようなオープンモデルは、宇宙のための堅牢で共有可能なソフトウェアエコシステムの開発を加速させ、より広範なイノベーションを可能にします。
SpaceWasmは、宇宙ソフトウェアエンジニアリングにおける根本的なパラダイムシフトを意味します。従来のフライトソフトウェアにつきものだった数年にわたる再検証のボトルネックから解放され、よりアジャイルで費用対効果の高い開発プロセスを実現します。最終的に、このイノベーションは次世代の高度な自律型宇宙探査の可能性を解き放ち、より速く、より高い能力で人類の到達範囲を宇宙へと広げていきます。
よくある質問
SpaceWasmとは何ですか?
SpaceWasmは、NASAのJet Propulsion Laboratoryが開発した特殊なWebAssembly (Wasm) インタープリタです。Webブラウザではなく、リソースが制限された宇宙船上でサンドボックス化されたコードを安全に実行するために設計されています。
なぜNASAは宇宙でWebAssemblyを使用しているのですか?
NASAは、異なるミッション間でコマンドソフトウェアを標準化し、信頼性の低い新しいコードをサンドボックス内で安全に実行するためにWebAssemblyを使用しています。このアプローチにより、フライトソフトウェアの検証にかかる時間と数百万ドル規模のコストを劇的に削減できます。
SpaceWasmは標準的なWebAssemblyランタイムと何が違うのですか?
SpaceWasmは、安全性と決定論のために構築された、極めて制約の厳しい非標準ランタイムです。独自のパニックフリーなメモリ割り当て機能を備え、Wasmバイトコードをより高速な形式に変換するため、失敗が許されないミッションクリティカルなシステムに適しています。
SpaceWasmはオープンソースですか?
はい、NASAのJPLはSpaceWasmをオープンソース化しました。このプロジェクトはRustプログラミング言語で記述されており、コミュニティによる貢献や利用のためにGitHubで公開されています。

