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
570
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
300
ONNX推論クレートの比較と実装奮闘記
emergent
1
1.2k
フェアリーデバイセズがRustを 採用して3年が過ぎました
emergent
1
1.2k
Other Decks in Technology
See All in Technology
Flutter × BLE Centralを自前Pluginで実装する設計パターン - MethodChannel / EventChannelで作る双方向ブリッジの実践 / Building Custom Flutter BLE Central Plugins: Bidirectional Bridging with Method & Event Channels
bitkey
PRO
0
220
ホームラボ紹介
y_sera15
0
230
AIに持続⼒を与える 判断の⻑期記憶設計
eiei114
1
620
tamachi.go 誕生の裏側
rymiyamoto
1
200
強化学習「理論」入門
enakai00
3
3.6k
小粒でもパワフルなJS Runtime Antjsについて
comamoca
0
120
20260817_生成AIの動向と中学校・高等学校での活用を考える_v1.00_公開用
doradora09
PRO
0
190
MulticaとPi Coding Agentで、小規模OSSを30本同時運用した流れ
eiei114
0
140
【Aiming】共通基盤なのに「共通化しない」課金・認証基盤「LINK」が選び取ったシングルテナント戦略と運用の秘訣
saikeda
0
120
2027年のMetricKit
kantacky
0
150
AIにブラウザを触らせて、E2EテストをPlaywrightで書く
koji_kawamura
0
340
RapidCopy2 Matrix I/Oエンジンによるファイルコピーソフトウェアの設計と実装
kengosawa2
1
270
Featured
See All Featured
Skip the Path - Find Your Career Trail
mkilby
1
190
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
390
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Become a Pro
speakerdeck
PRO
31
6.2k
Why Our Code Smells
bkeepers
PRO
340
58k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
500
Utilizing Notion as your number one productivity tool
mfonobong
4
550
KATA
mclloyd
PRO
35
15k
Context Engineering - Making Every Token Count
addyosmani
9
1.1k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Leo the Paperboy
mayatellez
8
2.2k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
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