Rust × 組込みで前代未聞のInterfaceオフ会レポート

はじめに

昨日、2019年6月17日、巣鴨CQ出版社セミナールームにおいて記念すべき組込みRustのオフ会が開催されました! 今回のオフ会は、雑誌掲載前にオフ会を開催する、という前代未聞のオフ会、とのことでした。

inteface-meet-up.connpass.com

非常に盛り上がったオフ会になったので、そのレポートです。

プレゼン

さらに、LTとして2つの発表がありました。

組込みRustのすゝめ

まず、私から導入のお話をさせていただきました。

speakerdeck.com

最初に会場内でアンケートを取ったところ、

  1. まだRustをやったことがない、が半分ほど
  2. 入門はした、はまさの0人
  3. 組込み以外でRustをやっている、が2割弱
  4. 組込みRustをやっている、が3割弱

といった感じでした。 知らない人か、プロしかいない!という両極端な結果が印象的でした。

導入と言いつつ、所有権システムの説明を少し入れており、ここの部分はRust知らない方々にどの程度理解して頂けたか、が気になっています。

Rustでチョット気軽にセンサドライバ開発

@ryochack さんからホストPC上で組込みセンサドライバ開発を行う発表です。

speakerdeck.com

「いつまで僕らはC/C++を使い続けなければならないのか…」

全くその通りです!

発表内容は、下のデバイスを使って、PC上で直接Rustのセンサドライバを開発し、マイコンに持っていけるようにしよう!というものでした。

akizukidenshi.com

MPSSEのOSS実装、libmpsseからbindgenを使って、Rustバインディングを生成しています。 その時のラッパ作成の苦労話が、涙なしでは語れません。

デモされていたもののレポジトリは、こちらです。

github.com

Rustで始める自作組込みOS

@garasubo さんから、組込みOSを自作したお話しです。

speakerdeck.com

RustでOSを作る際の良かった話や、苦労話が生々しい発表でした! ライフタイムやテストフレームワークなど、良かった点もありますが、データ構造の実装が難しい、クレートが不足している、という課題もあります。

自作OSのレポジトリは、こちらです。

github.com

Nuttxでlibstdを動かす

杉野さんから、POSIX likeな組込みOSであるNuttxでlibstdを動かした発表です。 今のところ、資料公開はされていません。

茨の道をひたすら突き進むような発表を前に、参加者一同、「これはツラすぎないか…」みたいな空気になっていましたが、ある程度動くようになっていて、圧巻の内容でした!

Rustの安全性や利便性を最大限享受するためにlibstdを使いたい、というのは組込みRustやっている人が共通で持っている望みだと思います。 リンカのバグを踏んだり、OS側にAPIが不足していたり、OS側とRust側とで構造体のメンバが違ったり、と数々の難関をくぐり抜け、動いた先は--。

M5 StackをRustで動かすまで

@ciniml さんから、ESP32上でRustを動かすようにするまでに試したことの発表です。

www.slideshare.net

Rust (というかLLVM) は公式にXtensaに対応していないため、LLVMのforkを使ってrustcのXtensa対応を行われていました。 ESP-IDF側のmalloc/freeをGlobalAllocでラップして、libcoreの機能を使えるようにしていました。

@ryochackさんと同様に、bindgenを使用されており、その苦労話もありました。

embedded_graphicsクレートを使って、画像を描画することまでできていて、次はWi-Fiを動かしたい、とのことです!

docs.rs

Rustで書いたファームウェアが乗った自作キーボードのデモ

@KOBA789 さんからキーボード自作のインターン向けに作成したRustファームウェア搭載の自作キーボードについてデモがありました。

会社での無茶ぶり?から産まれたようです。 ステートマシン実装時、ステートが移るときにデータを引き継ぐところに苦労された、ということでした。

懇親会

組込みRustをやっている者同士のぶっちゃけトークが楽しかったです。 身代わりパターンめっちゃ使うよね〜、とかunsafe使いたくないんだけど、やりたいことができなくてツラい、などなど。 組込みRustでまだまだ不足している部分や、課題もありますが、やらないといつまで経っても使えるようにならないから、やる!という認識が共有されたのも、個人的には非常に嬉しかったです。

まだRustを触っていない方々から、実際のところどーなの?的な質問にも正直な回答をさせていただきました。

告知