2021年11月8日に「MoT TechTalk #8 IoT/クラウドでRust言語をフル活用!AIドラレコの裏側を紹介」(connpass)を開催しました。
本記事では当日の内容を簡単に紹介します。
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
今回はこちらのメンバーが登壇しました。
技術的負債化してしまっていたPythonで実装されたサーバサイド処理の一部をRustにリプレースした事例を紹介しました。
リリース後も安定運用できており、コストも1/4になるなど優位な成果を挙げることができた取り組みでしたが、リプレースの背景やRustを選定した理由、Rust活用にあたって採用したアーキテクチャやライブラリ、そして新しい言語を導入するにあたって気をつけたポイントなどを紹介しています。
次にエッジデバイス上でのRust開発について事例を紹介しました。
DRIVE CHARTでは多くのAI機能を独自開発しており、社内のMLエンジニアがPythonベースで実装したモデルをドライブレコーダー上で動作するようにC++へ移植する運用を行っていたのですが、 この移植コストが課題となりAI機能のアップデートが頻繁には行いづらい状況でした。
それを解決すべく、C++ではなくRustに移植してデバイス上で動作させるという選択を行いました。こちらでもRustを選定した理由や、組み込みならではの制約事項、移行後の成果、開発に役立ったツールやライブラリについて紹介していますのでぜひご覧ください。
さいごに先ほど紹介したエッジデバイス上でのRust開発を支えるCI/CDについてです。
エッジデバイス向けのCI/CDでは、以下のタスクをRust標準のビルドシステムであるCargoから実行しています。
それぞれのタスクについてどのように実現したかとその効果について、そしてCI/CDを運用する上で重要な高速化の手法や、Rust製タスクランナー cargo-make によるCI/CDタスクフロー記述について紹介しました。 特にスナップショットテストに関しては過去ブログでも取り上げていますのでぜひそちらもご覧ください。 参考:RustでのSnapshot Testing
MoT Online Tech Talk は不定期開催しています。過去の開催レポートは こちら にもありますので、ぜひご覧ください!
MoTの最新技術情報は公式Twitterアカウント @mot_techtalk で随時発信していきますので、ぜひフォローして続報をお待ちください!
MoT では多くの専門領域でエンジニアを大募集しています。興味のある方は 採用情報ページ まで!
特に今回紹介したエッジAIエンジニアのポジションはこちらのページで紹介していますので、ご興味持っていただけた方はぜひご覧ください!