BLOG ブログ
Rust で開発したいエンジニアの Fukuda です🐣
2023-10-21(土)に開催された Rust.Tokyo 2023 の現地参加してきました!
Rust.Tokyo 2023 について
Rust.Tokyo は Rust コミュニティのカンファレンスです。
今回はオフラインとオンラインのハイブリット開催でした。
- オフライン:(株)メルカリ 六本木ヒルズ森タワー
- オンライン:Youtube
各セッションに参加してみて
オフライン参加でセッションを生で聞けたことはもちろん、
休憩時間に登壇者や運営の方々とも交流できて本当に良かったです🙌
Rust で開発したい自分にとっては、どれも有意義なセッションでした。

IoT プラットフォーム開発における Rust の活用
2017 年からデバイス側のファームウェアの実装言語として導入されていたとのことで、
Rust のエコシステムの変遷とその対応についての発表がありました。
- async/await の登場
- failure から anyhow/thiserror への移行
- サードパーティーライブラリの変遷
async/await を導入すること、 async/await が伝搬して書き換えが多く発生したことや
メンテナンス中止になったライブラリから別ライブラリへの移行について触れられていました。
開発を通して学んだ対策の共有もありました。
- テストを充実させる
- メトリクスの監視
- 定期的なリファクタリング
他の言語でも有効な対策は Rust でも効果的で、
Rust はバグが少ないと言われますが、やはり過信は禁物ですね!
小さなことですが、std と同じ名前の構造体が多いので、
結局フルパスで記載しちゃうのが楽かもという話は参考になりました。
例として、std::sync::Mutex
と tokio::sync::Mutex
が挙げられてました。
やはり、開発時の体験を聞けるのはありがたい…!
かにさんタワーバトル
Web フレームワークである Axum とそこで使われている Tower や Hyper について言及された発表でした。
Axum の採用を進めている自分にとっては興味のある内容でした。
Axum の内部実装について、 Live Reading というその場でコードを読み解こうという
参加型な発表にもなっていて面白かったです。
内部実装を確認して Axum を採用したものの Axum に依存しないようにも意識しているようで、
そのためにレイヤードアーキテクチャで実装しているとのことでした。
プレゼンテーション層を変更すれば、 Axum から他に引越しをできるように考えているそうです。
技術選定の際、ここまで内部実装まで深く見る必要があるんだと考えさせられました。
判断材料が Github のスター数やアップデート頻度だけではダメですね…
個人的には、「Rust を採用してみて、どうですか?」という質問に対して、
「みんな書きたいかなと思ったけど、そうではなかった。
でも、熱量のあるエンジニアが頑張っているから、みんなも続いてくれると思っている」
とおっしゃていたのが記憶に残っています。
新しい言語に挑戦するエンジニアの熱量も、組織における 2:6:2 の法則が当てはまるのだろうなと思いました。
他言語がメインの場合の Rust の活用法 – csbindgenによる C# x Rust FFI 実践事例
C# をメインで使用している中で、Rust の Foreign function interface(フォーリン・ファンクション・インターフェイス、FFI) を使って、C# から Rust や、C++ などのコードを利用する点についての発表でした。
元 C#er なので、懐かしいなと…
そして、「C# で全部やる」というのが基本スタンスで面白いなと思いつつ見ていました。
そして、Rust を第二言語としていて、
OSS も開発されているのがすごいなと率直に思いました。
日頃お世話になっている OSS はこういう方々によって、
開発・メンテナンスされているんだなぁと… 感謝しかないですね。
Rust と C# の境界は、unsafe を許容している点 は興味深かったです。
技術はなんでもトレードオフだと思うので、
妥協を許して上手く活用するみたいなスタンスは他でも見習いたいなと思いました。
素材メーカーが内製開発で Rust を使っている話
ほとんどが Rust 未経験者のエンジニアという状況で、社内で採用して使っているという発表でした。
Rust を使うと困りがちなビルドの高速化の Tips や
社内への Rust 布教の話は共感できる悩みなだけに非常に参考になりました。
型システムが強力でコンパイラが親切といったあるある話、 Clippy に助けられているという話もありました。
型ヒントを書いたり、変数を不変にしたりする習慣がついたとのことで、
メイン言語である Python での実装でも、品質向上に繋がっているというのも面白かったです!
布教では、特に Rust の本を大量に買って、巷では流行ってるんだぞ!感をまわりに植え付けるという作成を決行しているらしく、これは真似しようと思いました😘
リモードワークで働くエンジニアがほとんどなので、
Slackのチャンネルを活用して「今、Rust がキテます」運動したいと思います!!
Rust がユニークビジョンにもたらした恩恵と苦労 ~そしてお返しへ~
14 万件の CSV を扱うため、3倍の負荷に耐える要件を満たすためというシビアな要件を満たすために Rust を採用し、そこから得られた知見の共有でした。
パフォーマンス要件やデータ量で Rust を採用するケースが多いのかなと漠然と感じていましたが、やはりそうだよねという再確認ができたのが大きかったです。
コンパイラや cargo が優秀で、Clippy は先生だそうです!
やはり、 Clippy は積極的に活用すべきですね。
Rust の採用理由では、
面白そうな言語だから!書いていて楽しい言語だったから!
と言い切れるのはすごいなと思いました。
エンジニアって、本当はそういう生き物だよな…😏✨
(もちろん全員ではないだろうけど)
真面目なところで言うと、
14万件のCSVを扱う際には他の言語と比較して明らかに優位だったので、
採用理由としては十分だったとも言っていました。
Rust 恐るべし!!!
また、Rust をきっかけに入社する人が増えたという話もありました。
採用面でも恩恵があるのは、大きいですよね。
そして、業務で使った汎用的な機能はcrateとして公開しているというのも、すごいなと思いました。
OSS 活動に力を入れているエンジニアや企業には尊敬しかないです🙏
並行キャッシュライブラリの開発で得られた知見
caffeine というライブラリから着想を得た、
Rust の インメモリキャッシュライブラリ Moka についての話でした。
キャッシュポリシーである TinyLFU の話や、非同期処理をいかにキャンセルするかという話でした。
OSS 開発の裏側が聞けたり、わりとレイヤーが低めの技術によった話もあったので、
色々な知見が得られそうですし挑戦してみたいなと思いました。
こんなことできるようになりませんか?みたいな要望もあるようで、
OSS 開発の大変さも垣間見ることができました…
Rust 業務経験がない開発者で集まって汎用ツールを開発した話
Rust を採用して Roggol という汎用ツールを開発された話でした。
ES + CQRS という構成で、RMU(Read Model Updater)を汎用的に実装するというものでした。
Rust を運用してみて、コンテナのイメージサイズが小さいことや、
CPUやメモリ使用率が安定メトリクスの安定感など Rust のメリットがたくさん教授という話が聞けました。
失敗したことにも言及していて、unwrap
は良くないという話も…。
たまに面倒くさがって書きがちなので注意します!笑
Result 型と Option 型は便利な反面、ネストが深くなりがちなので上手く扱う方法を習得したいなと思います。
Ferrocene – Enabling Rust in Critical Environments
全編、英語セッションで自分はあまり聞き取れませんでした。
私の英語力のなさです…
申し訳ございません…🙇♂️🙇♂️🙇♂️
Ferrocene という、自動車・航空電子工学・宇宙・鉄道といったさまざまな規制市場のニーズをサポートすることを目的とした、安全性が認定された Rust ツールチェーンを開発しているという話でした。
安全性が求められる厳しい分野でも、Rust の需要を感じました。
Youtube に字幕付きのアーカイブがアップされる予定らしいので、
もう一度、拝聴したいと思います!
全体を通して
これから Rust を採用して開発を進めたいと考えている自分にとっては、非常に有意義な時間でした。
かなり前から採用している会社があること、
同じような課題や悩みがどの会社にもあるということを知ることができたことは大きかったです。
Rust でやっちゃえよ!って、背中を押してくれている気分です😎
また、Rust.Tokyo は Rust をもっと盛り上げたい、
Rust 好きな人をつなげていきたいという思いにあふれており、良いコミュニティだなと感じました。

P.S. 私の目標は「Rust.Tokyo 2024 に登壇する」です。