2015/04/02 14:00

「はやぶさ2」は旅をしながら成長する ―JAXAのプログラマーに聞いた宇宙探査を支えるソフトウェアの作り方

プログラミング×[宇宙]で探査機を未知の天体へ導く【前編】

 小惑星を目指し、宇宙で一人旅を続ける小惑星探査機「はやぶさ2」。初代「はやぶさ」に続き、宇宙探査の新時代を切り開こうとしています。この重要なミッションをプログラミングの面からも支える、JAXAの佐伯孝尚さんにお話を聞きました。

  • このエントリーをはてなブックマークに追加
「はやぶさ2」とは

 小惑星イトカワから微粒子サンプルを持ち帰るという、人類初の偉業を成し遂げた初代「はやぶさ」の後継機として生まれた小惑星探査機。

 はやぶさ2の目的地は、小惑星1999 JU3。2014年12月に打ち上げられ、2015年11月~12月の地球スイングバイ(地球の重力を利用して探査機の軌道を変更すること)に向けて、順調に宇宙の旅を続けている。

 はやぶさ2のミッションは、はやぶさと同様に小惑星の物質を地球に持ち帰る、サンプルリターン。今回は地表の物質を採取するのに加えて、インパクター(衝突装置)を使って人工的なクレーターを作り、地下にある純度の高い物質を採取する。今回お話を聞く佐伯さんは、そのインパクターの開発責任者をしている。

はやぶさ2のミッション
はやぶさ2のミッション
はやぶさ2 1/10模型
はやぶさ2 1/10模型

「はやぶさ2」の声を聞き、小惑星への旅を見守る

―佐伯さんの担当であるインパクターが作動するのは、はやぶさ2が小惑星に接近する2019年頃だと聞きました。それまではどんなことをしているのでしょうか?

 今は、はやぶさ2のミッションを無事成功させるための運用に携わっています。

―探査機の運用とは、具体的にはどのようなことをするのでしょうか?

 探査機からは、「テレメトリ」という観測データが送られてきます。その中には、「今、太陽が右の方に見えるよ」「姿勢はこっちを向いているよ」「僕の体温はこれくらいだよ」というような、はやぶさ2の状態を知ることができるデータ(「ハウスキーピング・データ」と呼ばれる)が含まれていて、これを見ることにより探査機の健康状態を常に監視しています。

―探査機の状況を「健康状態」と呼んでいるのは、なんだか人間みたいですね。監視していないとどうなるのでしょうか。

 放っておいても完全に死んじゃうわけではありませんが、ときどき放射線の影響で、メモリのある部分が反転して(システム内のデータが書き換えられて)目を回しちゃうこともある。太陽との距離が変わってくると、機体の温度も変化する。機体の姿勢や温度などを頻繁に見てあげないといけません。

 ただ、見てあげるといっても、テレメトリはコンピュータにしか理解できないバイナリデータ(0と1の2進数で表されるデータ)なので、人間が読めるデータに変換する必要があります。今、私が作っているのは、そうした変換プログラムのほか、データを抜き出したり、それが変な値になっていないかチェックしたりするプログラムです。

佐伯孝尚氏
佐伯孝尚(さいき・たかなお)さん
 JAXA 宇宙科学研究所助教。東京大学工学部卒。東京大学大学院工学系研究科航空宇宙工学専攻博士課程修了。専門は宇宙航行力学、宇宙システム工学。学生時代に「はやぶさ」プロジェクトに関わり、現職でソーラー電力セイル実証機「IKAROS」や、小惑星探査機「はやぶさ2」の運用・開発に携わる。

予測つかない宇宙を飛んで行くからこそ、ゆるくてもうまくいく

―佐伯さんは、はやぶさ2の運用に関わるプログラマーとしても活躍しているのですね。

 探査機の運用には、結構ソフトウェアの部分も大きくてですね。はやぶさ2に関わるソフトウェアは、探査機に搭載されているものと、地上側のソフトウェアとに分けることができます。探査機搭載のソフトウェアは事前にしっかり検証されたものになっているのですが、一方、地上ではやぶさ2のデータを受け取って処理するシステム、これを地上系と呼びますが、実は非常に柔軟なものになっています。

 探査機を使って観測をしたいという研究者が多くいるのですが、何を観測するかは打ち上げる前には全部は決まらないんです。途中で「あれも撮影してくれ!」という研究者がいくらでも出てくる(笑)。

―なるほど、仕様が変わってくると(笑)。

 そのような要求の変化に柔軟に対応するために、打ち上げ前にあらかじめ決めておいたことだけじゃなくて、例えば「このカメラで何秒おきに撮る」という観測計画を、打ち上げ後に地上からはやぶさ2に伝えられるようになっています。

 一方で、私が主に担当している地上系のソフトウェアについても、運用のフェーズには「こう変えたほうがいい」ということが必ず出てくるんです。運用前に想像力を働かせるんですけど、やってみないとわからないところがあるので。しかし、メーカーさんにこういう機能が欲しいとお願いすると、仕様書を書いてお金の調整をして……とんでもない時間がかかってしまう。だから、このような要求の変化に、簡単でもいいから即応性があるようなものを、自分たちで保守し、自分たちの要求を反映できるようなソフトウェアを書くべきだろうと考えています。

―宇宙に関わるソフトウェアって、すべて要件定義からみっちり決まっているのかと思っていました。

 私が、はやぶさ2の前に担当した「IKAROS」という衛星、あれは予算がかなり限られていたんですよ。だから地上系ソフトウェアに関しては、最初からそういう作り方をせざるを得なくて、自分たちで作って、運用の中で育てていきましたね。

―Webサービスの開発に似ていますね。

 似ていると思いますね。Webサービスはスピードが命だと思いますが、探査機もそういうところがあります。先ほど言ったとおり、探査機に載せるソフトウェアは、ちゃんと検証ができてないといけないんですけど、地上系は臨機応変に、ある意味何をやってもかまいません。テレメトリをどう加工しようが、運用中にふらっと書き換えても、はやぶさ2には影響を与えません。

―柔軟に修正しながら成長させていく、まるでアジャイル開発のようですね。

 そのような側面は絶対にあります。最初から全部うまくいかないので、走りながら機能を追加していきます。ツールも、最初人間が手動でやっていた部分を少しずつ自動化する。「めんどくさいから、ここは自動立ち上げにしよう」と変わっていくわけです。充実してくると他の人も使いたがってきたり。ソフトウェアが小惑星に着くまでにどんどん成長していきます。

―それはおもしろいですね。サンプルリターンに成功して地球に近づいたときがはやぶさ2の一番かしこくなった状態で。

 そうですね。メーカーさんが作るはやぶさ2内部のソフトウェアだってアップデートされて、すごくいいものになるんです。プロジェクト全体が運用とともに習熟していいものになっていくというのはありますね。

―はやぶさ2は宇宙を旅しながら、成長しているんですね。

 そうです。ソフトウェアは進化させるものだと思っているので、「あとでなんとでもなる」という柔軟性をもたせておくことは、大事ですね。

JAXA相模原キャンパス
今回訪れたのはJAXA相模原キャンパス。佐伯さんたちは日々このキャンパスで研究している。敷地内には研究室のほか試験棟、食堂や展示室などもあり、一般の見学も受け付けている。

息の合ったチームだからできる、ジャズセッションのような開発

―ちなみにプログラム言語は何を使っているんですか?

 使っている言語は人それぞれで、なんでもいいんですよ。人が出力したデータを二次加工するのは、別の人が別の言語でやってもいいわけで。私個人としてはCやC++を使っています。

―地上系のソフトウェアは、チームで開発しているのでしょうか。

 特別な人を集めた集団というほどかっちりとは決まっていなくて、IKAROSに携わっていたメンバーを中心に、はやぶさ2の運用メンバーで自発的にやっています。誰が何を得意とするかもわかっているので、「こんな感じで作って」と言われたらできちゃうし、「じゃ運用の合間にやっておきます」みたいな感じで進められるんです。

IKAROS(イカロス)の模型
IKAROS 1/20模型
IKAROS(イカロス)

 IKAROSは、太陽の光の力をセイル(帆)に受けて進む、小型ソーラー電力セイル機。セイルに貼り付けられた薄膜の太陽電池で太陽光発電を行い、太陽の周りを約10か月で公転している。2015年3月現在は「冬眠中」で、公転周期10か月のうち7か月、太陽電池による発生電力が不足し、機器がシャットダウン状態になっている。佐伯さんが関わったのは、IKAROSのテレメトリを処理するソフトフェアの整備や、IKAROSの地上からの姿勢の制御。IKAROSチームの仲の良さは、佐伯さんが筆を執ったIKAROS Blogの記事からも伺える。

―メンバーそれぞれが好きなやり方で開発して大丈夫なのでしょうか?

 育てていく感じなんです。最初にかっちり大きなプログラムを作ろうと思うと、言語やインターフェイスを統一しないといけないですが、そんなことをしたら大変な作業になってしまいます。アウトプットが一緒だったらアプローチは何をやってもいいという方針です。たとえば、ファイルをインターフェイスにして、別のデータに変えていくようなやり方をしています。

―コマンドとコマンドをつないで大きな機能を作る、UNIXの世界のような感じなのでしょうか。

 イメージとしてはそうですね。あるツールが走ってファイルを出力します。別のツールは出力したファイルを監視してて、更新があったら今度はこういうデータを作ります、という具合です。一時処理としてはテレメトリを人間が読めるようにするプログラム。私はその部分を結構やってるんですけど。それに対して、今度は軌道情報を別のところから持ってきて、姿勢がどっち向いてるかを出す人もいますし、それにGUIをかぶせてもっと見やすい形にする人もいる。いろんな人がいろんな風に、必要なタイミングに合わせてやっています。

—これも今は緊急性がないから、それでいいということですね。

 そうですね。まずは運用が便利に、楽になるツールを作っていく必要があるので。そのうち、それがないと、プロジェクトの成功が危うくなるほど重要なものが生まれることもまれにあります。

プログラミング×[宇宙]の答え

―気楽に作っているソフトウェアでも、ミッションの成功には大変貢献するものなんですね。最後に、佐伯さんにとって宇宙に関わるプログラミングとは、どういうものでしょうか?

 宇宙では、探査機の打ち上げ前に、地上でシミュレーションを行うという作業も非常に重要です。今までお話したのは、探査機の運用に関するプログラミングでしたが、この、地上でのシミュレーションにもプログラミングは重要となってきます。宇宙のダイナミクスを模擬するシミュレーションを行うということは、自分では行くことができない宇宙を地上にいながら実感できるということだと思います。

***

 現在、はやぶさ2は安定航行中。想像以上に柔軟なやり方ではやぶさ2は運用され、チームは緊張感を保ちつつも、穏やかな時を過ごしています。一方、はやぶさ2が小惑星に近づくと、今まで以上の緊張の瞬間が続きます。「胃が痛くなりそう」というのは佐伯さん談。後編は、はやぶさ2が小惑星に近づき、ミッションを成功させるためのシステムに迫ります。

<< 後編に続く >>

著:野本纏花
写真:小倉亜沙子

他の記事も読む

プログラミング×[  ]で世界はできている BACKNUMBER