Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Fairy DevicesでのRust活用
Search
Satoshi Yoshikawa
April 17, 2025
Technology
610
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
Transcript
29 slides
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
More Decks by Satoshi Yoshikawa
See All by Satoshi Yoshikawa
Fairy DevicesがRustを採用して 5年が経ちました
emergent
0
320
ONNX推論クレートの比較と実装奮闘記
emergent
1
1.3k
フェアリーデバイセズがRustを 採用して3年が過ぎました
emergent
1
1.2k
Other Decks in Technology
See All in Technology
令和の今、あらためて IAM を考える。アクセスキーを「無くせない現実」との向き合い方
kazzpapa3
0
640
少ない人手 限られた予算 それでも守る 消せない・見つける・戻れる オールハザード型BCP on AWS / 20261107 Mitsutoshi Matsuo
shift_evolve
PRO
0
360
[dbts2026]数十PBの超巨大データ×AI活用を支えるSnowflakeの実力〜大規模環境におけるアーキテクチャと運用のリアル〜
y_matsubara
0
130
小さなエージェントから始めてみよう!実践コンテキストエンジニアリング
iwamot
PRO
0
110
AWS構成から考えるWebセキュリティ ― WordPressの構築経験から考える公開範囲と更新運用【JAWS FESTA 2026 in AKITA】
cscengineer
PRO
2
410
Active Directory と Entra ID のむむむな関係
murachiakira
PRO
4
1.8k
Kiro IDE 入門 (画面の各部から、頼み方、任せ方、戻し方まで) | 目指せ Kiro マスター 02
inariku
PRO
4
210
Kiro 入門 (1 つのエージェントを、どの画面からでも) | 目指せ Kiro マスター 01
inariku
PRO
6
1.6k
Context != Context: One window, many lifecycles (AI Native DevCon, Nov 2026)
birgitta410
0
110
長い仕事を任せる (Workflows、クラウドセッション、Kiro Web) | 目指せ Kiro マスター 10
inariku
PRO
3
180
AIエージェントの監視、思考を見るか行動を見るか / Monitoring AI Agents: Thoughts or Actions
yusukeshimizu
2
190
Kiro Crew 入門 (手を離しても進む仕事) | 目指せ Kiro マスター 11
inariku
PRO
4
700
Featured
See All Featured
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
620
For a Future-Friendly Web
brad_frost
184
11k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
600
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
680
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
23k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
610
YesSQL, Process and Tooling at Scale
rocio
174
15k
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
280