はじめまして、株式会社アークエッジ・スペース(以下、当社)の佐藤です。「Rustで動かす超小型衛星 ~ なぜ私たちは Rust を選んだのか? ~」というテーマで、今回はお話しさせていただきます。
アークエッジ・スペースについて
当社は、「衛星を通じて人々により安全で豊かな未来を」というミッションのもと、超小型衛星を用いたサービス・宇宙利用価値を創出し続ける「超小型衛星システム総合インテグレーター」を目指しています。
超小型 6U 衛星シリーズの外観
(出典:https://arkedgespace.com/our-satellites#01)
当社は、衛星を活用した新たなサービスにより多様な社会課題を解決するため、超小型衛星コンステレーション[1]の企画・設計から量産化、運用まで最適なソリューションを提供しています。 その中でもWeb バックエンドエンジニアは、衛星の設計製造や運用の効率化に資する、地上で使われる様々なシステム(以下、地上システムと略)開発に関わっています。
様々な社会課題の解決を目指した事業展開
(出典:https://arkedgespace.com/our-satellites)
技術スタック
地上システムの開発には、下図で示すように一般的な web 開発と大きく変わらない技術スタックを採用しています。
これにより新しい技術や開発、運用手法を取り入れ、素早く高品質なプロダクト開発を可能にするとともに、新しくジョインするエンジニアがキャッチアップしやすい環境になっています。
技術スタックの簡略化した例
以下では、地上システムの一つである衛星運用システムを例に説明をします。
衛星運用システムについて
衛星運用システムには、主に以下のような機能が要求されます。
- アンテナからの可視時間の列挙:アンテナと衛星が通信可能な時間帯を算出する
- 運用時間の予約・管理:複数の衛星運用が重ならないように、運用時間の予約と管理を行う
- アンテナや変復調器の制御:システムからコマンドを送りアンテナや変復調器を制御する
- 衛星へのコマンドの送信:必要なコマンドを衛星に送信する
- 衛星からのテレメトリの受信:衛星から送られてくるデータを受信する
- コマンドやテレメトリのログ収集・可視化:収集したログを保存し、可視化して運用状況の分析を可能にする
上記の機能要求を少し抽象化して眺めると、宇宙開発だからといって特殊ではない印象を持たれるかと思います。実際にこれらの機能が実現される技術スタックも先に示したような一般的な web 開発のそれです。変復調や衛星との無線通信は特殊ですが、これらは専用の変復調器やアンテナが行います。そして、それらとのやりとりは TCP/IP など一般的に web 開発でも使われるインターフェースを通じて行われます。
必要なドメイン知識こそ違いますが、技術としては web エンジニアの皆さんに馴染みのあるものだと感じられるのではないでしょうか?
衛星システムに Rust を採用した理由
当社では人工衛星の組み込みフライトソフトウェア、地上システムなど、さまざまなプロダクトの開発に全面的に Rust を採用しています。
優れた開発体験
2024 年現在 Rust は最も開発体験の良いプログラミング言語の一つです。
堅牢かつモダンな言語仕様、環境構築は rustup で容易に行え、スムーズに開発を進めることができます。cargo doc を使ってドキュメントの自動生成もできますし、LLVM のおかげで多種多様なアーキテクチャへのビルドが簡単に行えるため、異なるプラットフォーム間での開発も効率的に行うことができます。
OS のような低レイヤーから web システムまで一貫して開発が可能
当社では衛星運用システムの他、以下のプロダクトで Rust を採用して開発を進めています。
- 人工衛星の組み込みソフトウェア
- 衛星・環境シミュレータ
- 開発ツール
- 社内システム
このように人工衛星に組み込む低レイヤーのソフトウェアから地上システムに使われる web バックエンドまで、同じ言語で開発を統一することが可能であることは当社としては非常にメリットのあることです。
また、副産物として新しい技術に敏感な優れたエンジニアに当社に関心を持ってもらうことにも一役買っていると感じています。
Rust での開発
当社では OSS を積極的に活用しており、業界への貢献として OSS の公開も積極的に行なっています。
https://github.com/arkedge
Rust でどのようなプロダクトが作られているかを確認していただけます。
課題と今後の展望
課題
私たちは数十から数百機に及ぶ衛星コンステレーションを運用可能なシステムの設計・開発・保守運用体制の構築、という大きな課題に直面しています。
それに加えて多数の衛星に対して、一機に数人をつけて運用していては人がいくらいても足りず現実的ではありません。そのためシステムで衛星運用を自動化、効率化することも重要な課題となっています。
また、自社サービスでビジネスを展開するための PoC も実施しています。それらの web サービス開発はもちろん、それらで使われる基盤システムの開発体制構築も大きな課題です。
PoC 中のリモートセンシング事業
(出典:https://arkedgespace.com/projects/satellite-remote-sensing)
今後の展望
人工衛星と地上システムをクライアント・サーバーモデルに例えて考えるとインターネットがそうであったように今後、通信速度の向上や帯域幅が広がることにより、衛星と地上間の通信量は増加し、地上で扱うデータ量も飛躍的に増えていくでしょう。
その結果、地上のインターネットにアクセスする感覚で宇宙にアクセスできるようになることが予想されます。そのような状況を経験したことがある web エンジニアはある意味で未来を先取りしていると言えるかもしれません。膨大な衛星データを活用したビジネスアプリケーションが web アプリケーションとして提供される可能性は高く、Web バックエンドエンジニアの役割が一層重要になってくると考えます。
We are hiring!!
Rust や宇宙分野での業務経験がなくても、従来の web 開発の経験を宇宙開発に活かしたい方や Rust での開発に興味がある方とお話をしたいです。私たちと一緒に、未来の宇宙開発をリードしていきましょう。
興味を持たれた方は、ぜひご応募ください。[2]