2021年11月8日に「MoT TechTalk #8 IoT/クラウドでRust言語をフル活用!AIドラレコの裏側を紹介」(connpass)を開催しました。
本記事では当日の内容を簡単に紹介します。
当日のスライド
MoT TechTalkとは?
MoT TechTalkは、Mobility Technologiesのエンジニアたちが、タクシーアプリGOをはじめとしたサービスやプロダクトを開発する中で得た技術的ナレッジを共有するイベントです。
8回目となる今回はAIドラレコを活用した交通事故削減支援サービス「DRIVE CHART」で2年以上活用してきた実績をもとに、プログラミング言語「Rust」について、サーバサイド、エッジデバイスそれぞれでのRust開発の知見、Rust開発を支えるCI/CD環境について紹介しました。 「Rustに興味はあるんだけど業務として使えるのかなぁ・・」といった不安や懸念を抱えている方はぜひご覧ください。
またこちらのツイートのスレッドで当日の様子や雰囲気を感じていただけると思います。
TechTalk #8 「IoT/クラウドでRust言語をフル活用!AIドラレコの裏側を紹介」はじまります!
— GO Inc. dev | タクシーアプリ『GO』 (@goinc_techtalk) November 8, 2021
YouTubeLive配信URL:https://t.co/iQoprkOklp
イベントページ:https://t.co/OhLXUpof5B#mot_tech_talk
登壇者紹介
今回はこちらのメンバーが登壇しました。
- 亀澤 諒亮
- 大西 健太(@ken_jimmy)
- 廣安 聖知
気軽に始めるサーバーサイドRust開発
技術的負債化してしまっていたPythonで実装されたサーバサイド処理の一部をRustにリプレースした事例を紹介しました。
リリース後も安定運用できており、コストも1/4になるなど優位な成果を挙げることができた取り組みでしたが、リプレースの背景やRustを選定した理由、Rust活用にあたって採用したアーキテクチャやライブラリ、そして新しい言語を導入するにあたって気をつけたポイントなどを紹介しています。
動画(9:53〜)
ドラレコアプリ開発でRustを使う
次にエッジデバイス上でのRust開発について事例を紹介しました。
DRIVE CHARTでは多くのAI機能を独自開発しており、社内のMLエンジニアがPythonベースで実装したモデルをドライブレコーダー上で動作するようにC++へ移植する運用を行っていたのですが、 この移植コストが課題となりAI機能のアップデートが頻繁には行いづらい状況でした。
それを解決すべく、C++ではなくRustに移植してデバイス上で動作させるという選択を行いました。こちらでもRustを選定した理由や、組み込みならではの制約事項、移行後の成果、開発に役立ったツールやライブラリについて紹介していますのでぜひご覧ください。
動画(23:15〜)
Rust開発を支えるCI/CD
さいごに先ほど紹介したエッジデバイス上でのRust開発を支えるCI/CDについてです。
エッジデバイス向けのCI/CDでは、以下のタスクをRust標準のビルドシステムであるCargoから実行しています。
- RustのFormatter/Linterによるチェック
- Edge AIライブラリのビルド/テスト
- 機能単位のテスト
- スナップショットテスト
- 不正メモリアクセスチェック
- カバレッジチェック
それぞれのタスクについてどのように実現したかとその効果について、そしてCI/CDを運用する上で重要な高速化の手法や、Rust製タスクランナー cargo-make によるCI/CDタスクフロー記述について紹介しました。 特にスナップショットテストに関しては過去ブログでも取り上げていますのでぜひそちらもご覧ください。 参考:RustでのSnapshot Testing
動画(37:50〜)
開催履歴・開催予定
MoT Online Tech Talk は不定期開催しています。過去の開催レポートは こちら にもありますので、ぜひご覧ください!
- Vol.1 No.1*タクシーアプリを支えるバックエンド (2021/2/5)
- Vol.2 車載Androidシステムの技術と開発チーム (2021/3/9)
- Vol.3 タクシー配車ならではの技術が盛りだくさん!iOSアプリの開発現場 (2021/4/8)
- Vol.4 Androidエンジニア必見!タクシーアプリGOのUXを高める工夫 (2021/5/27)
- Vol.5 Flutterで作るタクシーデリバリーアプリ「GO Dine」(2021/7/7)
- Vol.6 タクシーデリバリーアプリ「GO Dine」を支えるバックエンド (2021/8/25)
- Vol.7 技術書典頒布のタクシーアプリ『GO』アーキテクチャ図録を一挙解説 (2021/10/14)
- Vol.8 IoT/クラウドでRust言語をフル活用!AIドラレコの裏側を紹介 (2021/11/8)
MoTの最新技術情報は公式Twitterアカウント @mot_techtalk で随時発信していきますので、ぜひフォローして続報をお待ちください!