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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Satoshi Yoshikawa
April 17, 2025
Technology
0
490
Fairy DevicesでのRust活用
2025-04-17 の Findy Job LT でお話したスライドです。
Satoshi Yoshikawa
April 17, 2025
Tweet
Share
More Decks by Satoshi Yoshikawa
See All by Satoshi Yoshikawa
Fairy DevicesがRustを採用して 5年が経ちました
emergent
0
260
ONNX推論クレートの比較と実装奮闘記
emergent
1
1k
フェアリーデバイセズがRustを 採用して3年が過ぎました
emergent
1
1k
Other Decks in Technology
See All in Technology
AIに視覚を与えモバイルアプリケーション開発をより円滑に行う
lycorptech_jp
PRO
1
790
クラウド時代における一時権限取得
krrrr38
1
160
ヘルシーSRE
tk3fftk
2
240
入門DBSC
ynojima
0
130
vLLM Community Meetup Tokyo #3 オープニングトーク
jpishikawa
0
110
生成AI活用によるPRレビュー改善の歩み
lycorptech_jp
PRO
5
2.1k
オンプレとGoogle Cloudを安全に繋ぐための、セキュア通信の勘所
waiwai2111
3
1.1k
LINE Messengerの次世代ストレージ選定
lycorptech_jp
PRO
19
7.4k
Digitization部 紹介資料
sansan33
PRO
1
7k
EMからVPoEを経てCTOへ:マネジメントキャリアパスにおける葛藤と成長
kakehashi
PRO
7
870
OpenClawで回す組織運営
jacopen
2
430
白金鉱業Meetup_Vol.22_Orbital Senseを支える衛星画像のマルチモーダルエンベディングと地理空間のあいまい検索技術
brainpadpr
2
210
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
269
14k
Paper Plane (Part 1)
katiecoart
PRO
0
5.1k
How STYLIGHT went responsive
nonsquared
100
6k
The agentic SEO stack - context over prompts
schlessera
0
680
Technical Leadership for Architectural Decision Making
baasie
3
270
From π to Pie charts
rasagy
0
140
GitHub's CSS Performance
jonrohan
1032
470k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.2k
Unsuck your backbone
ammeep
672
58k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
280
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
240
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