Rust × 組込みで前代未聞のInterfaceオフ会レポート
はじめに
昨日、2019年6月17日、巣鴨のCQ出版社様セミナールームにおいて記念すべき組込みRustのオフ会が開催されました! 今回のオフ会は、雑誌掲載前にオフ会を開催する、という前代未聞のオフ会、とのことでした。
非常に盛り上がったオフ会になったので、そのレポートです。
プレゼン
1. 組込みRustのすゝめ
— 錆ありはぐれベアメタル (@LDScell) 2019年6月17日
2. PC上でRustドライバ開発
3. Rustで組込みOS自作
4. モダンマイコンOS Nuttxでlibstdを動かす#Ifcqmeetup
さらに、LTとして2つの発表がありました。
- M5StackでRust
- Rustファームウェア搭載の自作キーボード
組込みRustのすゝめ
まず、私から導入のお話をさせていただきました。
最初に会場内でアンケートを取ったところ、
- まだRustをやったことがない、が半分ほど
- 入門はした、はまさの0人
- 組込み以外でRustをやっている、が2割弱
- 組込みRustをやっている、が3割弱
といった感じでした。 知らない人か、プロしかいない!という両極端な結果が印象的でした。
導入と言いつつ、所有権システムの説明を少し入れており、ここの部分はRust知らない方々にどの程度理解して頂けたか、が気になっています。
Rustでチョット気軽にセンサドライバ開発
@ryochack さんからホストPC上で組込みセンサドライバ開発を行う発表です。
「いつまで僕らはC/C++を使い続けなければならないのか…」
全くその通りです!
発表内容は、下のデバイスを使って、PC上で直接Rustのセンサドライバを開発し、マイコンに持っていけるようにしよう!というものでした。
MPSSEのOSS実装、libmpsseからbindgenを使って、Rustバインディングを生成しています。 その時のラッパ作成の苦労話が、涙なしでは語れません。
お行儀の悪いCのコード!
— 錆ありはぐれベアメタル (@LDScell) 2019年6月17日
ちゃんとconstを付けないとbindingを作りにくので、Cのコードもちゃんと作ろう!#Ifcqmeetup
デモされていたもののレポジトリは、こちらです。
Rustで始める自作組込みOS
@garasubo さんから、組込みOSを自作したお話しです。
RustでOSを作る際の良かった話や、苦労話が生々しい発表でした! ライフタイムやテストフレームワークなど、良かった点もありますが、データ構造の実装が難しい、クレートが不足している、という課題もあります。
自作OSをRustで開発すべきか
— 錆ありはぐれベアメタル (@LDScell) 2019年6月17日
メリットは大きいが、発展途上なので、リスクも大きい。#Ifcqmeetup
自作OSのレポジトリは、こちらです。
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を動かしたい、とのことです!
Rustで書いたファームウェアが乗った自作キーボードのデモ
@KOBA789 さんからキーボード自作のインターン向けに作成したRustファームウェア搭載の自作キーボードについてデモがありました。
【オフ会】
— コンピュータ技術実験雑誌「Interface」(毎月25日発売) (@If_CQ) June 17, 2019
デモ:Rustで自作キーボードのデモ
クックパッド開発者ブログってところで
クックMyパッド的に紹介されているらしい#ifcqmeetup pic.twitter.com/q0ulROP6iI
会社での無茶ぶり?から産まれたようです。 ステートマシン実装時、ステートが移るときにデータを引き継ぐところに苦労された、ということでした。
懇親会
組込みRustをやっている者同士のぶっちゃけトークが楽しかったです。
身代わりパターンめっちゃ使うよね〜、とかunsafe
使いたくないんだけど、やりたいことができなくてツラい、などなど。
組込みRustでまだまだ不足している部分や、課題もありますが、やらないといつまで経っても使えるようにならないから、やる!という認識が共有されたのも、個人的には非常に嬉しかったです。
まだRustを触っていない方々から、実際のところどーなの?的な質問にも正直な回答をさせていただきました。
告知
まさかの記事やってないのに
— コンピュータ実験雑誌の編集ラームー (@if_CQ_naka) 2019年6月17日
「ポインタが使えるモダンC++風言語Rust×組み込みの研究」
のオフ会やっちゃったので
逆順で特集執筆者会議やります
興味がある方はご連絡ください
あと新たな試みなので至らないところがあったら許してください#ifcqmeetup pic.twitter.com/WjUsqKWYoM