MoTLab -GO Inc. Engineering Blog-MoTLab -GO Inc. Engineering Blog-

IoT/クラウドでRust言語をフル活用!AIドラレコの裏側を紹介 #mot_tech_talk

techtalkRust
November 17, 2021

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に興味はあるんだけど業務として使えるのかなぁ・・」といった不安や懸念を抱えている方はぜひご覧ください。

またこちらのツイートのスレッドで当日の様子や雰囲気を感じていただけると思います。

登壇者紹介

今回はこちらのメンバーが登壇しました。

  • 亀澤 諒亮
  • 大西 健太(@ken_jimmy)
  • 廣安 聖知

気軽に始めるサーバーサイドRust開発

技術的負債化してしまっていたPythonで実装されたサーバサイド処理の一部をRustにリプレースした事例を紹介しました。

リリース後も安定運用できており、コストも1/4になるなど優位な成果を挙げることができた取り組みでしたが、リプレースの背景やRustを選定した理由、Rust活用にあたって採用したアーキテクチャやライブラリ、そして新しい言語を導入するにあたって気をつけたポイントなどを紹介しています。

An image from Notion

動画(9:53〜)

ドラレコアプリ開発でRustを使う

次にエッジデバイス上でのRust開発について事例を紹介しました。

DRIVE CHARTでは多くのAI機能を独自開発しており、社内のMLエンジニアがPythonベースで実装したモデルをドライブレコーダー上で動作するようにC++へ移植する運用を行っていたのですが、 この移植コストが課題となりAI機能のアップデートが頻繁には行いづらい状況でした。

それを解決すべく、C++ではなくRustに移植してデバイス上で動作させるという選択を行いました。こちらでもRustを選定した理由や、組み込みならではの制約事項、移行後の成果、開発に役立ったツールやライブラリについて紹介していますのでぜひご覧ください。

An image from Notion

動画(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

An image from Notion

動画(37:50〜)

開催履歴・開催予定

MoT Online Tech Talk は不定期開催しています。過去の開催レポートは こちら にもありますので、ぜひご覧ください!

MoTの最新技術情報は公式Twitterアカウント @mot_techtalk で随時発信していきますので、ぜひフォローして続報をお待ちください!

We're Hiring!

MoT では多くの専門領域でエンジニアを大募集しています。興味のある方は 採用情報ページ まで!

特に今回紹介したエッジAIエンジニアのポジションはこちらのページで紹介していますので、ご興味持っていただけた方はぜひご覧ください!