Write and Run

it's a simple way, but the only way.

無職に飽きたので人工衛星のソフトウェアをRustで作っています

KOBA789 です。

今年2月末に前職を退職してからここ半年ほど無職をしていたのですが、いよいよもって無職に飽きてきたので人工衛星を作ることにしました。

実は9月頭から働いています。

株式会社アークエッジ・スペース

次の職場は株式会社アークエッジ・スペースです。東大の研究室発のスタートアップで、衛星バス開発を得意としている会社です。

衛星バスというのは、言ってしまえば人工衛星の OS に相当するものです。
OS に喩えましたが、もちろんそれは単なるソフトウェアではなく物理的な実体を伴うハードウェアとその中で動作するソフトウェアの集合体です。
ちなみにユーザーランドに相当する部分はミッション機器と呼ばれます。

まだまだ人数の少ない会社ですが、業界の土地勘や人脈に富んだ CEO や、人工衛星開発の経験があるエンジニアが揃っており、スタートアップとしては超実力派です。

ArkEdge Space Inc.

ソフトウェアエンジニアができること

私はソフトウェアエンジニアです。しかも一番得意なのはウェブ技術です。人工衛星開発の経験があるわけでもなければ、メカの設計ができるわけでも姿勢制御に詳しいわけでもありません。
(一応趣味レベルの電気電子の知識と回路設計の経験はありますが)

私もオファーを頂いたときは、まさか(ウェブ系の)ソフトウェアエンジニアが役に立てることがあるなんて、と思っていました。

しかし、面談のなかで現在の人工衛星開発の現場の課題について聞いていくと、ソフトウェア技術で解決できそうな問題が山ほどあることがわかりました。
ソフトウェアエンジニアばかりの職場・エコシステムでは解決されていて当然の課題が、ほぼそのまま転がっているのです。ウェブ系の会社ではありえないことです。
そして同時に、世間で "DX" がこれだけ注目されている理由を本当の意味で理解しました。ソフトウェアエンジニア中心の集団以外では、2021年になった現代でも計算機を十分に使い潰せていないのです。本当に。

私は計算機が好きです。そして特にソフトウェア技術の力を信じています。ソフトウェア技術を味方に付ければ、あらゆる人がもっと多くのことを成せるようになると確信しています。
人工衛星開発というエンジニアリングの最先端でソフトウェア技術を役立てられることを私は誇りに思いました。

具体的にやっていること・やること

とりあえず入社即 Kubernetes クラスタ構築 & ArgoCD で GitOps、AWS のリソースは全部 terraform で管理、という感じにしたりしました。
まぁ、これらについてはただの手癖ですし普通の仕事なので特段おもしろい話はありません。

また、Issue ベースでのコミュニケーションの方法の啓蒙をやったり、データベース勉強会を開いたりといった、「ソフトウェア業界から来た人」業をしています。
現代的な組織であれば、あらゆる人が SQL を書けてほしいし、あらゆる人が SQL を書くメリットを感じられるデータ基盤があるべきですよね、やっぱり。

より人工衛星っぽい仕事としては、オンボードコンピュータ(OBC)のハードウェアとソフトウェア両面の開発をしています。
OBC は名前の通り、人工衛星に搭載されているコンピュータで、接続されている各コンポーネントと通信しながら人工衛星の機能を維持します。 地上にテレメトリを送信したり、地上からのコマンドを解釈してコンポーネントを制御したりもします。
ウェブの技術でいうとまさに API サーバーみたいな感じです。

人工衛星では利用できる電力が限られています。空気の対流もないので放熱も一苦労です。というわけであまり潤沢な計算リソースは使えません。
また打ち上げたら最後、二度と人間の手の届かない場所にデプロイされてしまうため、バグって黙り込んでしまったりするとどうにもなりません。
しかも、たとえソフトウェアがバグっていなくても宇宙線でハードウェアが異常を起こしたりもするので始末に負えません。

そういうわけでかなり特殊なコンピュータが必要なので、ハードウェア・ソフトウェア両面から課題に取り組んでいます。
ソフトウェアのみならずコンピュータ全体が興味範囲の私としては、これほどエキサイティングな仕事は他にありません。

みなさん気になっているのはそのソフトウェアの開発言語だと思うんですが、Rust で開発しています。
実行効率と安全性と生産性に優れている Rust は人工衛星のフライトソフトウェアを書くのにぴったりです。 それに、やっぱり軌道上に Rust 製のソフトウェアをデプロイしてみたいですよね。 しかし Rust での組み込みソフトウェア開発は地上でもまだまだ例が少なく、エミュレータやデバッガなどの開発環境や、デバイスドライバをはじめとするハードウェア固有のコード資産などは C 言語ほど充実していません。
これらの課題をクリアしながら Rust で開発するメリットを最大限活かせるようになるにはたくさんのチャレンジが必要です。

気になる方はぜひ一緒に人工衛星を開発しましょう。