世界中の開発者が歴史的な飛行に貢献
4月19日(米国時間)、約12,000人の開発者のGitHubプロフィールに、新しいバッジが追加されます。このバッジは、NASAが火星でのヘリコプター「Ingenuity」の飛行に使用している特定バージョンのプロジェクトおよびライブラリーに開発者が貢献したことを称えるものです。詳細については、GitHubブログをご覧ください。
昨年7月、火星探査ヘリコプター「Ingenuity」が、火星探査機パーシビアランスに搭載されて地球を出発し、火星までの2億9,300万マイルの旅に出ました。しかし、Ingenuityにとって最も重要な道のりはわずか約10フィートでした。これは、この小型ヘリコプターが火星表面のすぐ上をホバリングした高度です。しかし、これが人類にとって重要なマイルストーンとなりました。この飛行は、別の惑星での初の動力飛行であり、ヘリコプターが火星で離陸できることを証明したのです。
火星の希薄な大気(大気の体積が地球の1%未満)の中で飛行するために、NASAのジェット推進研究所(JPL)は、Ingenuityの重量を4ポンド(1.8kg)未満にしなければなりませんでした。これには、ブレード、モーター、電源装置、ソーラーパネルのほか、機器を監視し、事前にプログラミングされたコースからヘリコプターが逸脱しないようにするための演算装置も含まれます。Ingenuityに必要なすべてのものをこのような軽量の回転翼機に詰め込んだことは、プロジェクトの名に恥じない技術的快挙でした。
IngenuityのプロジェクトリーダーであるMiMi Aung氏は、Making Spaceポッドキャストにおいて次のように述べています。
「私たちは工学分野のあらゆる限界に挑戦しました。全員の協力が不可欠で、1グラム減らすだけでも大変でした」
Ingenuityの開発チームは、従業員数6,000人のJPLよりもはるかに大規模です。この4ポンドのヘリコプターの開発には、AeroVironment、Lockheed Martin、Qualcommなどの有名な企業も参加していました。また、広範囲にわたるソフトウェアの開発には、世界中の数千人のオープンソース開発者が参加していましたが、自分たちの貢献の重大性には気付いていませんでした。
Ingenuityは、ナビゲーションコンピューターに組み込まれたLinuxディストリビューションを実行します。そのソフトウェアの大部分はC++で記述されており、JPLのオープンソース飛行制御フレームワークF Prime(F´)を使用しています。一方、地上管制からフライトモデリング、データ処理までのあらゆる機能において、Pythonエコシステムが重要な役割を果たしました。
広範囲にわたるソフトウェアの開発には、世界中の数千人のオープンソース開発者が参加していましたが、自分たちの貢献の重大性には気付いていませんでした。
12,000人近くの人々がオープンソースソフトウェアのコーディング、ドキュメンテーション、グラフィックデザインなどに貢献しました。こうした貢献があってこそ、Ingenuityの飛行が実現したのです。GitHubは、オープンソースの歴史的瞬間を祝うために、これらのコントリビュータのプロフィールに新しいバッジを追加しました。
昨年、数百万のGitHubプロフィールに追加されたArctic Code Vaultコントリビュータバッジと同様に、この新しいバッジは、人類を前進させるコードに貢献した人々を称賛するものです。
GitHubの開発者リレーション担当シニアディレクターであるMartin Woodwardは、次のように述べています。
「バッジが追加された人々の多くは、おそらく、自分が開発したソフトウェアが別の惑星でヘリコプターを飛ばすために使用されていることを知らないでしょう。私たちは、彼らがこの驚くべき人類の偉業に貢献したことを全員に知ってもらいたいと考えています」
Woodwardが言う「全員」とは、まさに全員です。そこで、JPLからGitHubに、Ingenuityに関連するすべてのオープンソースプロジェクトの全バージョンのリストを提供していただきました。GitHubはそのリストから、それらのプロジェクトとその依存関係を実現可能にしたコントリビュータ全員を特定することができました。
Woodwardは次のように述べています。
「依存関係には階層が存在することがわかりました。1つのプロジェクトの依存関係は10個以下かもしれませんが、それらの依存関係がそこから広がって、それぞれが別のものに依存するようになるのです。気が付けば、信じられないほど多くの人がプロジェクトに貢献していたのです」
現在販売されているほとんどすべてのソフトウェアシステムにも同じことが言えます。つまり、99%のソフトウェアシステムがオープンソースコンポーネントに依存しているのです。Pythonの中心的なコントリビュータであるCarol Willing氏は次のように述べています。
「池に小石を落としたときと同じように、小さな貢献が広がって、やがて非常に大きなインパクトになります。これはオープンソースの長所の1つです。あなたのすばらしい成果を他のだれかが引き継いで、さらに強力で有意義なものにすることができるのです」
「私たちは、彼らがこの驚くべき人類の偉業に貢献したことを全員に知ってもらいたいと考えています。」
オープンソースのパワーに光を当てる
Linux FoundationのエグゼクティブディレクターであるJim Zemlin氏は次のように述べています。
「このようなプロジェクトには、集団のプライドが間違いなく存在します。Linuxは趣味のオペレーティングシステムとして始まりましたが、今では、モバイルコンピューティング、クラウドコンピューティング、自動車などの事実上のプラットフォームとなっています。さらに、惑星間で動作するオペレーティングシステムにもなっています」
今回の偉業は、Linuxだけでなくオープンソース全般にとっても重要な瞬間になりました。Willing氏は次のように述べています。
「一歩引いて、『これは、だれかが現実世界の問題を解決するのに役に立った』と考えることは、謙虚な考え方です。プロジェクトがもたらしたインパクトや、プロジェクトでだれかが実現したことを知ることなどないかもしれないのです」
これらのプロジェクトに対する貢献は、単なるコード以上の形でもたらされました。Pythonの中心的なチームメンバーであるMariatta Wijaya氏は、コミュニティ管理、ドキュメンテーション、およびPythonチームがさまざまなプロセスを自動化するのに役立つワークフローツールの作成に重点を置いています。これらはすべて、オープンソースプロジェクトを機能させ、コードの有用性を維持するうえで欠かせない任務です。彼女は次のように述べています。
「Pull Requestを作成するだけでは不十分です。それに加えて、コードのレビューや変更の文書化を行ったり、コミュニティと共同で何をどのように作成するかを決めたりする必要があります」
多くのコントリビュータにとって、ニッチで抽象的な成果物が実体のあるものに変わったことを見ることができるのは貴重なことです。Pythonのもう1人の中心的なメンテナーであり、Pythonの互換性ライブラリーSixの作成者でもあるBenjamin Peterson氏は、次のように述べています。
「バグ修正とメンテナンスに膨大な時間を費やした後、Pythonによって実現されたすばらしいことを聞けば、元気が回復します。想像もしていなかったあらゆるものに対してPythonが使用されているのです」
NASAは米国の政府機関ですが、Ingenuityの舞台裏で行われていた活動は実際は国際的なものであり、JPLの通常の貢献範囲をはるかに超える人々が参加していました。たとえばAndrew Nelson氏は、Australian Nuclear Science and Technology Organisationに勤務している科学者です。彼は、JPL内でIngenuityのミッションなどに広く使用されている科学計算パッケージであるSciPyのメンテナーでもあります。Nelson氏は次のように述べています。
「私たちがしてきたことが最終的にこのようなすばらしいプロジェクトに貢献していたことを知り、とてもうれしく思っています。これこそが、私が科学者になった理由の1つなのです」
このような国境を越えたコラボレーションは、未来のさまざまな人類の試みにとって欠かせないものになるでしょう。Zemlin氏は次のように述べています。
「これは、共同作業のほうが常に良い結果をもたらすことを示しています。遠くにある惑星に航空機を配備したり、スマートグリッドや効率性の高いエネルギーを使ってゼロ炭素経済を生み出したりするには、きわめて多くのソフトウェアを記述する必要があります。しかし、どのような個人、企業、国家でも、そのすべてを単独で記述することはできません」
オープンソースは、あらゆる背景を持つ人々が、世界中のどこにいても自分のスキルを活用してこうした重要な課題を解決するための方法を提供します。Willing氏は次のように述べています。
「多様なコントリビュータを受け入れたり、奨励したりすればするほど、効果は高くなります。最も複雑な問題を解決するためには、さまざまな視点が必要なのです」
「このような国境を越えたコラボレーションは、未来のさまざまな人類の試みにとって欠かせないものになるでしょう。」
オープンソースに貢献する
オープンソースコントリビュータは、さまざまな方法で宇宙探査プロジェクトにかかわることができます。
JPLの主任データサイエンティスト兼最高技術/イノベーション責任者であるChris Mattmann氏は、次のように述べています。
「私たちは長年にわたり、JPLのプロジェクトやミッションでオープンソースソフトウェアを使用し、またオープンソースソフトウェアに貢献してきました。これには、オペレーティングシステムからデスクトップ生産性ツールまで、あらゆるものが含まれます」
しかし、JPLの小規模なフライトソフトウェアグループのスーパーバイザーであるJeff Levison氏は、JPLがフライトソフトウェアをオープンソース化したのはF´が初めてだと述べています。その主な理由は、以前はJPLのフライトソフトウェアに対応したアプリケーションがNASAの外部にほとんどなかったためです。Levison氏は次のように説明しています。
「JPLのソフトウェアはカスタムハードウェアと非常に密接に組み合わされていたため、オープンソース化することは、以前はたいした意味がありませんでした。ソフトウェアを公開する必要性やメリットがあまりなかったのです」
JPLはF´の最初のバージョンを2013年に開発しました。このアイデアは、ほぼすべてのハードウェア、目的、目的地に適応できる再利用可能なソフトウェアフレームワークをさまざまな宇宙飛行プロジェクト用に作成するためのものでした。
JPLの火星探査ヘリコプターのオペレーションリードであるTimothy Canham氏は、F´はJPLの取り組み方を一変させたと述べています。これまでのJPLのソフトウェアは再利用することが困難でした。多くの場合、コンテキスト固有の機能がコードの奥深くに組み込まれていたのです。F´を広く再利用できるようにするには、オーダーメイドではなくモジュラー型にする必要がありました。たとえば、そのフレームワークは、エンジニアが特定のブランドのオンボードカメラを使用することを前提としていません(つまり、任意のカメラを使用できます)。たとえば、写真を撮る必要がある場合、特定のコンポーネントと機能を必要に応じて追加または削除することができます。センサーやハードウェア機器についても同様です。
Canham氏は、F´は宇宙船システムとしてまとめられたものではないと述べています。むしろスターターキットに近いものです。コマンドをデバイスに送信するための地上管制システム、それらのコマンドを実行するためのシーケンサー、地上管制に応答を返信するためのコンポーネントがあります。コンポーネントの標準ライブラリーはありますが、独自のさまざまなソフトウェアを記述する必要があります。
F´がJPLの内部だけでなく外部でも再利用できないことが明らかになるまで時間はかかりませんでした。CubeSat(通常、低地球軌道に配置される、既製の商用ハードウェアで作られた小型衛星)は、さまざまな学術機関や民間企業で使用されています。Canham氏は次のように述べています。
「私たちは、F´に関する話し合いを何度も行ってきました。また、カーネギーメロン大学やその他の組織には、独自のCubeSatプロジェクトでF´を使用したいと考えている教授やスタッフがいました。最終的には、ソフトウェアのライセンス供与に関する非常に長いプロセスを経るよりも、F´をオープンソース化するほうが簡単なことに気付きました」
チームはコードを綿密にチェックして、国際条約で規制されている企業秘密やテクノロジーが含まれていないことを確認し、2017年7月にApacheライセンスの下でコードを公開しました。
オープンソースのエキスパートであるKarl Fogel氏は、次のように述べています。
「オープンソースは、政府機関や業界が煩雑な手続きを回避するための優れた方法です。通常は、こうした手続きのせいでコラボレーションを行うことができません。また、長期間の協議や覚書は必要ありません」
2017年以来、コントリビュータはバグ修正やドライバーなどを通じてシステムを改善してきました。Ingenuityでは外部のコントリビューションを一切使用していませんが(JPLは数年前にコードを凍結しました)、これらは今後、F´や宇宙探査が新たな領域に到達するのに役立つでしょう。
F´に貢献することは、宇宙飛行に参加するための1つの方法にすぎません。Ingenuityやその他の宇宙探査プロジェクトは、多数のオープンソースソフトウェアに支えられています。既に身に付けているスキルを人類の進歩のために活用する機会は、数えきれないほどあります。自分で作成したコードによって、別の星の地表の探査、気候変動のモデリング、医療危機の解決が可能になるかもしれません。
Willing氏は、オープンソースに興味を持っているすべての人に対し、思い切って自分でできることに貢献することを勧めています。彼女は次のように述べています。
「とにかくやってみましょう。コントリビュータを必要としているプロジェクトは多数あります。コミュニティ管理、ドキュメンテーション、コーディングなど、だれにでも出発点は必ずあります」