Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Fairy DevicesでのRust活用
Search
Satoshi Yoshikawa
April 17, 2025
Technology
540
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Fairy DevicesでのRust活用
2025-04-17 の Findy Job LT でお話したスライドです。
Satoshi Yoshikawa
April 17, 2025
More Decks by Satoshi Yoshikawa
See All by Satoshi Yoshikawa
Fairy DevicesがRustを採用して 5年が経ちました
emergent
0
290
ONNX推論クレートの比較と実装奮闘記
emergent
1
1.1k
フェアリーデバイセズがRustを 採用して3年が過ぎました
emergent
1
1.1k
Other Decks in Technology
See All in Technology
アラート調査向けAIエージェントの本番導入とその後/AI Agents for Alert Investigation: Production Deployment and After
taddy_919
0
100
コミットの「なぜ」を読む
ota1022
0
120
AWS Security Hub CSPMの成功・失敗体験
cmusudakeisuke
0
540
Oracle Cloud Infrastructure:2026年6月度サービス・アップデート
oracle4engineer
PRO
0
290
AI Agentをシステムに組み込む前にゆるく向き合ってみる
hayama17
0
130
AIが自律的に回る開発ループを設計してチーム開発に組み込む
nekorush14
0
120
千葉での単身赴任からAWSをやり続け、千葉に戻ってきた話
yama3133
1
120
AI時代のコスト管理を考えよう〜明日から使える実践AWSノウハウ~
yoshimi0227
0
860
Zenoh on Zephyr on LiteX
takasehideki
2
110
BPaaSで進むAIオペレーションの現在地 AI実装が効く領域とスケーラビリティの選定と実装
kentarofujii
0
150
FPGAの開発コンペでZephyrを使ってみた
iotengineer22
0
200
飲食店もAIで。レジ締めやハンディシステムをつくってる話 / Using AI for restaurant management
vtryo
0
160
Featured
See All Featured
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
220
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
210
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
250
Practical Orchestrator
shlominoach
191
11k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
Designing Experiences People Love
moore
143
24k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
170
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Transcript
Fairy DevicesでのRust活用 2024-04-17 Fairy Devices株式会社 プロダクト開発部 部長 吉川哲史 Findy Job
LT 1
本日のトピック 1. 自己紹介 2. 会社・プロダクト紹介 3. Fairy DevicesにおけるRust開発 4. 中長期での課題・今後の展望
2
自己紹介 • X (ex. Twitter)/GitHub: @emergent • Fairy Devices株式会社 プロダクト開発部
部長 • Publication ◦ 『実践Rustプログラミング入門』共著 ◦ WEB+DB PRESS No.129 インタビュー ◦ WEB+DB PRESS No.131 特集「Rust入門」 ◦ 『RustによるWebアプリケーション開発 設 計からリリース・運用まで』共著 Satoshi Yoshikawa / 吉川哲史 new! 3
4 会社紹介:Fairy Devices コーポレートサイト https://fairydevices.jp/
5 会社紹介:Fairy Devices × ウェアラブル デバイス AI コーポレートサイト https://fairydevices.jp/
Fairy Devicesが提供するサービス 6 音声テクノロジースタック ウェアラブルデバイスによる 遠隔業務支援サービス
7
8 ウェアラブルデバイス THINKLET
9
ウェアラブルデバイス THINKLET 10 https://mimi.fairydevices.jp/technology/device/thinklet/ Androidアプリが動作する カメラ マイク(計5個)
Fairy DevicesにおけるRust活用 • Rust技術選定理由 • 技術スタックの概観 11 Zennでもいろいろな技術情報を発信しています https://zenn.dev/p/fairydevices
(まだ事業がmimiだけだったころ) • プロダクト(サーバー、クライアントライブラリ等)にはC++で実装されたもの が多くあった • 音声処理はマルチスレッドでの非同期処理実装が必要なケースが多く、C++のま ま改善・改修を行うのは難しいと考えた • より安全に開発できるプログラミング言語を探した結果、Rustがフィットした Rust採用の経緯
12
技術スタックの概観 • mimi クラウドAIの構成概要 • LINKLETの構成概要 ◦ LINKLET関連のシステム • サービスごとの技術スタック
13
mimi クラウドAIの構成概要 14 音声入力 エンドポイント クライアント プログラム 中間サーバー (or エンジンのラッパープ
ログラム) 音声処理 エンジン WebSocket WebSocket エンジンごとに 異なる接続仕様 ⋮ ひとつの音声入力のストリー ムに対し、複数の音声処理を 同時にかけられるよう共通の メッセージング仕様で統一 音声ストリーム 音声処理結果(テキスト)
LINKLETの構成概要 15 フロント エンド バック エンド THINKLET 制御基盤 デバイス制御リクエスト デバイス制御リクエストへの応答
デバイス内のデータ ウェアラブルデバイス THINKLET リクエストごとの実行時間は デバイス依存なので、制御リ クエストはすべて非同期化 LINKLET
LINKLET関連のシステム 16 LINKLET 遠隔業務支援+デバイス管理 LINKLET管理Web(社内用) 映像解析システム(開発中) 顧客管理 映像活用
サービスごとの技術スタック バック エンド フロント エンド mimi THINKLET 制御基盤 運用ツール LINKLET
LINKLET管理Web (社内用) 17 映像解析システム (開発中)
エンジニアの業務(サーバーサイド) フロントエンド(TypeScript)・バックエンド(Rust)・インフラ(AWS/GCP)に対し 「一人二役(以上) 」のエンジニアのチーム構成 • 元々は大半のメンバーがバックエンドエンジニア ◦ フロントエンドは外部パートナーに委託することが多かった ◦ チーム能力的に不足している部分はパートナーの方で補いつつ自社内
エンジニアの能力拡大を図っている 18 バックエンド クラウド インフラ フロントエンド バックエンド クラウド インフラ フロントエンド デバイス デバイス
直近の機能開発内容(LINKLET) • Web画面からのBluetoothイヤホン設定機能 • 遠隔支援リクエストのUX改善 • デバイス追跡機能(位置情報表示) • その他、軽微なUI/UX改善、各種バージョン更新等多数 19
大きい機能追加をする時は、だいたいデバイスの ファームウェア改修も伴うので、関係メンバーとの密 なコミュニケーションやインタフェース設計が重要
業務にRustを採用してどうだったか • Rust採用当初〜現在まで ◦ C++より安心して開発できる ◦ 楽しい • 人材採用面 ◦
Rustでの仕事に興味を持って応募してくれる人が増えた • 今のエンジニアたちにとっては ◦ Rustがふつう ◦ TypeScriptの型システムがRustと違うので戸惑い… 20
Rustを採用して5年経った現在の課題 • プロダクトごとの使用クレートにばらつきが出ている ◦ その時のトレンド等でプロダクトに採用したクレートが異なる ▪ Webフレームワーク:Actix Web、axum、warp ▪ DB接続:Diesel、SQLx
◦ そもそもasync/awaitが言語機能に乗る前に作ったサーバーとか もいる • Rustやクレートの進化に追いつくのが大変 ◦ バージョンアップ追従などが結構たいへん ◦ Clippyで新しい警告が出るようになる ▪ 次のバージョンで出なくなることもある 21
Rustを採用して5年経った現在の課題 • プロダクトごとの使用クレートにばらつきが出ている ◦ その時のトレンド等でプロダクトに採用したクレートが異なる ▪ Webフレームワーク:Actix Web、axum、warp ▪ DB接続:Diesel、SQLx
◦ そもそもasync/awaitが言語機能に乗る前に作ったサーバーとか もいる • Rustやクレートの進化に追いつくのが大変 ◦ バージョンアップ追従などが結構たいへん ◦ Clippyで新しい警告が出るようになる ▪ 次のバージョンで出なくなることもある 22 特定のクレートに依存するコードが限定的になるよう、 レイヤードアーキテクチャなどを用いて設計をしっかりしよう! CI/CDを整備して、更新や非推奨化に対応しやすくしよう
Rustを採用して5年経った現在の課題 • プロダクトごとの使用クレートにばらつきが出ている ◦ その時のトレンド等でプロダクトに採用したクレートが異なる ▪ Webフレームワーク:Actix Web、axum、warp ▪ DB接続:Diesel、SQLx
◦ そもそもasync/awaitが言語機能に乗る前に作ったサーバーとか もいる • Rustやクレートの進化に追いつくのが大変 ◦ バージョンアップ追従などが結構たいへん ◦ Clippyで新しい警告が出るようになる ▪ 次のバージョンで出なくなることもある 23 特定のクレートに依存するコードが限定的になるよう、 レイヤードアーキテクチャなどを用いて設計をしっかりしよう! CI/CDを整備して、更新や非推奨化に対応しやすくしよう Rustでも 「Web開発で大事なこと」 は普通に大事
Rustを採用して5年経った現在の課題 • プロダクトごとの使用クレートにばらつきが出ている ◦ その時のトレンド等でプロダクトに採用したクレートが異なる ▪ Webフレームワーク:Actix Web、axum、warp ▪ DB接続:Diesel、SQLx
◦ そもそもasync/awaitが言語機能に乗る前に作ったサーバーとか もいる • Rustやクレートの進化に追いつくのが大変 ◦ バージョンアップ追従などが結構たいへん ◦ Clippyで新しい警告が出るようになる ▪ 次のバージョンで出なくなることもある 24 特定のクレートに依存するコードが限定的になるよう、 レイヤードアーキテクチャなどを用いて設計をしっかりしよう! CI/CDを整備して、更新や非推奨化に対応しやすくしよう Rustでも 「Web開発で大事なこと」 は普通に大事
Rustならではの課題(ビルド時間) 25 https://zenn.dev/fairydevices/articles/59cd718341da58
中長期での課題・チャレンジ • 既存プロダクトにおける生産性・保守性の向上 ◦ 使用クレート・ライブラリの共通化 ◦ AI系ツールの開発チームへの導入 • プロダクトの新規領域へのRustの導入と活用(の検討) ◦
Webフロントエンド(TypeScript) ◦ 音声処理ライブラリ(C++) ◦ Androidアプリ・ライブラリなど(Kotlin) 26 ただやればいいってわけではないので プロダクトへの適用は慎重に…
今後の展望 • 現在、会社は新しいフェーズに向けて進行中 • 開発チームの拡大に伴う組織づくりも悩みどころ 27
Fairy Devicesでは一緒に働く仲間を募集中です • Webアプリケーション ◦ バックエンド ◦ フロントエンド • クラウドエンジニア
• デバイスソフトウェア • Androidアプリ • QA(品質保証) etc 28 採用ページのQRコード Rustにこだわらず、多様なご経験者を歓迎します
ご清聴ありがとうございました 29