Submit Search
RustでWebSocketな自社APIを使う
0 likes
1,272 views
Satoshi Yoshikawa
Shinjuku.rs #4 の発表資料です。
Technology
Read more
1 of 21
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
More Related Content
ODT
Interception de signal avec dump de la pile d'appel
Thierry Gayet
PDF
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
Takateru Yamagishi
PDF
دورة تعلم بسهوله PHP
abdelkrim abdellaoui
PDF
DockerとPodmanの比較
Akihiro Suda
PDF
BYOP: Custom Processor Development with Apache NiFi
DataWorks Summit
PDF
OpenFOAMのDEM解析のpatchInteractionModelクラスの解読
takuyayamamoto1800
PPTX
エンジニアライクにドキュメントを作成してみた件
Mass310
PDF
Introduction to the Qt Quick Scene Graph
ICS
Interception de signal avec dump de la pile d'appel
Thierry Gayet
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
Takateru Yamagishi
دورة تعلم بسهوله PHP
abdelkrim abdellaoui
DockerとPodmanの比較
Akihiro Suda
BYOP: Custom Processor Development with Apache NiFi
DataWorks Summit
OpenFOAMのDEM解析のpatchInteractionModelクラスの解読
takuyayamamoto1800
エンジニアライクにドキュメントを作成してみた件
Mass310
Introduction to the Qt Quick Scene Graph
ICS
What's hot
(20)
KEY
Web application development with Django framework
flapiello
PPTX
Wpfと非同期
yone64
PPTX
Apache BookKeeper State Store: A Durable Key-Value Store - Pulsar Summit NA 2021
StreamNative
PDF
Integrating Applications: the Reactive Way
Nicola Ferraro
PDF
RNAscope® アッセイ概要
removed_76de688259b1d349764e5216b72529b3
PDF
How to create a real time chat application using socket.io, golang, and vue js-
Katy Slemon
PPTX
Pycairo を使ってみる その1
ryos36
PDF
Turbulence Models in OpenFOAM
Fumiya Nozaki
PDF
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
kiki utagawa
PPTX
Gaucheでマクロを書こう
Hideaki Nagamine
PDF
morris Compression couplings dealer vardhman bearings
vardhmanbearings2015
PDF
ARM CPUにおけるSIMDを用いた高速計算入門
Fixstars Corporation
PDF
OpenFOAMの壁関数
Fumiya Nozaki
PDF
HBase at LINE
Shun Nakamura
PPTX
Excel でパケット分析 - グラフ化
彰 村地
KEY
Vyatta 改造入門
Masakazu Asama
PDF
フレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃう
株式会社オプト 仙台ラボラトリ
PDF
PyKinect: Body Iteration Application Development Using Python
pycontw
PDF
サーバPUSHざっくりまとめ
Yasuhiro Mawarimichi
PDF
Physical Plans in Spark SQL
Databricks
Web application development with Django framework
flapiello
Wpfと非同期
yone64
Apache BookKeeper State Store: A Durable Key-Value Store - Pulsar Summit NA 2021
StreamNative
Integrating Applications: the Reactive Way
Nicola Ferraro
RNAscope® アッセイ概要
removed_76de688259b1d349764e5216b72529b3
How to create a real time chat application using socket.io, golang, and vue js-
Katy Slemon
Pycairo を使ってみる その1
ryos36
Turbulence Models in OpenFOAM
Fumiya Nozaki
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
kiki utagawa
Gaucheでマクロを書こう
Hideaki Nagamine
morris Compression couplings dealer vardhman bearings
vardhmanbearings2015
ARM CPUにおけるSIMDを用いた高速計算入門
Fixstars Corporation
OpenFOAMの壁関数
Fumiya Nozaki
HBase at LINE
Shun Nakamura
Excel でパケット分析 - グラフ化
彰 村地
Vyatta 改造入門
Masakazu Asama
フレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃう
株式会社オプト 仙台ラボラトリ
PyKinect: Body Iteration Application Development Using Python
pycontw
サーバPUSHざっくりまとめ
Yasuhiro Mawarimichi
Physical Plans in Spark SQL
Databricks
Ad
Similar to RustでWebSocketな自社APIを使う
(20)
PPTX
JavaプログラマのためのWebSocket概要
Shumpei Shiraishi
PDF
HTML5-pronama-study
Naoya Inada
PDF
Html5, Web Applications 2
totty jp
PDF
UnicastWS vol.1
Unicast Inc.
PDF
HTML5と WebSocket / WebRTC / Web Audio API / WebGL 技術解説
You_Kinjoh
PDF
実践 WebRTC 〜最新事例と開発ノウハウの紹介〜
Yusuke Naka
PPTX
WebSocketでリアルタイム通信 (第13回学生LT資料)
stmkza
PDF
HttpとTelnetをつなぐ何か
ShigekiYamada
PDF
Rails と Rack と HTTP と通信の話
Progate, Inc.
PDF
WebSocket + Node.jsでつくるチャットアプリ
Kohei Kadowaki
PDF
AndroidでWebSocket
Kohei Kadowaki
PDF
RustでWebAssembly
ceres-inc
PDF
Firefox os勉強会 2nd WEB屋さんがWEBアプリを作ってみた
Nobuhiro Ueda
PPTX
Ratchetでweb socketを使ってみたよ.d0131.pub
t Dash
PDF
20130216
komarineko
PDF
WebSocket Protocol と Plack::Middleware::WebSocket
Yu Nobuoka
PDF
C言語なWebSocketの遊び方。
Masahiko Hashimoto
PDF
PythonによるOPC-UAの利用
Kioto Hirahara
PDF
ネットワークAPI のあれこれ (ENOG37)
Kentaro Ebisawa
PPTX
JavaOne2014報告会資料
Mitsuyasu Tsuhako
JavaプログラマのためのWebSocket概要
Shumpei Shiraishi
HTML5-pronama-study
Naoya Inada
Html5, Web Applications 2
totty jp
UnicastWS vol.1
Unicast Inc.
HTML5と WebSocket / WebRTC / Web Audio API / WebGL 技術解説
You_Kinjoh
実践 WebRTC 〜最新事例と開発ノウハウの紹介〜
Yusuke Naka
WebSocketでリアルタイム通信 (第13回学生LT資料)
stmkza
HttpとTelnetをつなぐ何か
ShigekiYamada
Rails と Rack と HTTP と通信の話
Progate, Inc.
WebSocket + Node.jsでつくるチャットアプリ
Kohei Kadowaki
AndroidでWebSocket
Kohei Kadowaki
RustでWebAssembly
ceres-inc
Firefox os勉強会 2nd WEB屋さんがWEBアプリを作ってみた
Nobuhiro Ueda
Ratchetでweb socketを使ってみたよ.d0131.pub
t Dash
20130216
komarineko
WebSocket Protocol と Plack::Middleware::WebSocket
Yu Nobuoka
C言語なWebSocketの遊び方。
Masahiko Hashimoto
PythonによるOPC-UAの利用
Kioto Hirahara
ネットワークAPI のあれこれ (ENOG37)
Kentaro Ebisawa
JavaOne2014報告会資料
Mitsuyasu Tsuhako
Ad
RustでWebSocketな自社APIを使う
1.
RustでWebSocketな ⾃社APIを使う Satoshi Yoshikawa @emergent
2.
⾃⼰紹介 • フェアリーデバイセズ株式会社 • ソフトウェアエンジニア歴9ヶ⽉ •
10年ぶり2回⽬ • Rust歴半年 • ねこ⼤好き
3.
現所属会社について • ⾳声APIとデバイスの会社 • http://www.fairydevices.jp/ •
使⽤⾔語 • サーバー:C++とPython • クライアントライブラリ:C++
4.
現所属会社について • ⾳声APIとデバイスの会社 • http://www.fairydevices.jp/ •
使⽤⾔語 • サーバー:C++とPython • クライアントライブラリ:C++ Rustにしたらよくない? ⼤義名分 ・安全性 → 品質レベルの底上げ ・わりと速い → まずは⾃分でやってみよう C++ぜんぜんわからない… 既存コードにも結構メモリ系バグある
5.
Rust学び始め期 • Rust by
Example写経 • Project EulerをRustで解く • 競プロ過去問をRustで解く ↓ • 途中から数学&アルゴリズム⼒のたたかいに • Rustの⾔語仕様のうち、触れないままのものも • エラー処理とか、並列処理とか、ライフタイムとか…
6.
実装チャレンジ • libmimiioでできることをRustでやってみる • WebSocketで弊社の⾳声認識APIを利⽤するライブラリ •
⼤元のC++版はオープンソースで公開 • https://github.com/FairyDevicesRD/libmimiio
7.
やること 1. WebSocket接続を確⽴し、 2. ⾳声データをチャンクで送信し、 3.
⾳声認識結果(JSON)を五⽉⾬で受け取る
8.
https://mimi.readme.io/docs/mimi-websocket-api-spec
9.
とりあえず動いたもの • https://github.com/emergent/rust-mimiio • 決め打ち部分で動かしてる部分は結構多い •
送受信スレッドの中にいろんな処理を押し込めているので いろいろださい
10.
ぶつかった壁 •Future •コールバック 絶賛ぶつかり中
11.
Future • websocketクレートのサンプルコード抜粋(client.rs=Futureなし版) https://github.com/websockets-rs/rust-websocket/blob/master/examples/client.rs … … … クライアントを作って接続確⽴(わかる) 接続をsenderとreceiverに分割(わかる) senderとreceiver間の通信⽤channel(わかる) Sender使って送信ループ(わかる) Receiver使って受信ループ(わかる)
12.
Future • websocketクレートのサンプルコード抜粋(async-client.rs=Futureあり版) … … … runtimeというものが作られている (わからない) ユーザーの⼊⼒を受け付けるchannelが作られている (まあわかる) async_connect_insecure()で接続確⽴(まあわかる) Stream?? Sink??
Select?? Forward?? (混乱) https://github.com/websockets-rs/rust-websocket/blob/master/examples/async-client.rs
13.
Future • サーバーとの接続がセキュアな(wss://〜)場合 • client
は splittable ではない → sender / receiver へ分割不可能 • ⾃社APIは wss://〜 のみしか受け付けない → わからないなりにFutureを使う必要あり https://github.com/websockets-rs/rust-websocket/blob/master/examples/ssl-client.rs
14.
この辺はサンプルコードのまま streamが受信したデータは、 filter_map()に流れてくる →⾳声認識結果の受信時の処理を記述 Noneを返さないと、 sinkに流れていってしまう 送信データは別スレッドから channel経由で受け取り、 sinkにぶちこむ
15.
コールバック • 今は送信スレッドにファイル読み込み処理を書いているが、 これを外に出したい mimiio ライブラリ サーバー ファイルから 分割送信 マイクデバイスから 直接データ送信 ⼊⼒⽅法は利⽤者次第
16.
コールバック こんなふうに呼び側から渡して、
17.
コールバック こんなふうに使いたい …
18.
コールバック コンパイラさんから、いろんな怒られが発⽣ Impl_callback ブランチに、試⾏錯誤の途中状況をpush 済み →わかる⽅アドバイスください!!!
19.
まとめ • ⾃社WebSocket APIのクライアントプログラムを Rustで実装してみました •
⼀応動いたものの、汎⽤的に使えるものにするには、 もっと⾔語仕様・ライブラリへの深い理解が必要… • 勉強ネタは尽きないのでいいですね
20.
採⽤活動中 • 弊社では⼀緒に働いてくれるエンジニアを募集中です! • ⾳声の取り扱いに興味がある/得意な⽅ •
サーバーアプリケーション開発・クラウド運⽤に興味がある⽅ • クライアントアプリケーションも作るぜという⽅ • ゆくゆくはRustをプロダクトに使うぜという野望のある⽅
21.
ありがとうございました
Download