Suche senden
Hochladen
RustでWebSocketな自社APIを使う
•
0 gefällt mir
•
1,251 views
Satoshi Yoshikawa
Folgen
Shinjuku.rs #4 の発表資料です。
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 21
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
Hiroshi Tokumaru
No011-01-Suc3rum-20100225
No011-01-Suc3rum-20100225
Sukusuku Scrum
【de:code 2020】 レガシーシステムをデジタルの世界へ! Power Automate UI フロー入門
【de:code 2020】 レガシーシステムをデジタルの世界へ! Power Automate UI フロー入門
日本マイクロソフト株式会社
組み合わせテストの設計(PictMaster勉強会) 2008年7月17日
組み合わせテストの設計(PictMaster勉強会) 2008年7月17日
Keizo Tatsumi
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
Ito Takayuki
暗黒美夢王とEmacs
暗黒美夢王とEmacs
Shougo
Scc2014 :jQueryの仕組みを完璧に理解する
Scc2014 :jQueryの仕組みを完璧に理解する
Jun Futakawa
Empfohlen
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
Hiroshi Tokumaru
No011-01-Suc3rum-20100225
No011-01-Suc3rum-20100225
Sukusuku Scrum
【de:code 2020】 レガシーシステムをデジタルの世界へ! Power Automate UI フロー入門
【de:code 2020】 レガシーシステムをデジタルの世界へ! Power Automate UI フロー入門
日本マイクロソフト株式会社
組み合わせテストの設計(PictMaster勉強会) 2008年7月17日
組み合わせテストの設計(PictMaster勉強会) 2008年7月17日
Keizo Tatsumi
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
Ito Takayuki
暗黒美夢王とEmacs
暗黒美夢王とEmacs
Shougo
Scc2014 :jQueryの仕組みを完璧に理解する
Scc2014 :jQueryの仕組みを完璧に理解する
Jun Futakawa
それは本当にAutomate? 改めて考えるPower Automate
それは本当にAutomate? 改めて考えるPower Automate
Tomoyuki Obi
NLP2019 松田寛 - GiNZA
NLP2019 松田寛 - GiNZA
Megagon Labs
Power Automateで電子帳簿保存法に対応してみた。
Power Automateで電子帳簿保存法に対応してみた。
Tatsuya Kobayashi
ちょっと明日のテストの話をしよう
ちょっと明日のテストの話をしよう
Yasuharu Nishi
ドキュメントを作りたくなってしまう魔法のツールSphinx
ドキュメントを作りたくなってしまう魔法のツールSphinx
Takayuki Shimizukawa
STAC2023 テストケースの自動生成に生成AI導入を検討してみた STAC2023
STAC2023 テストケースの自動生成に生成AI導入を検討してみた STAC2023
Satoshi Sakashita
なぜOpenID Connectが必要となったのか、その歴史的背景
なぜOpenID Connectが必要となったのか、その歴史的背景
Tatsuo Kudo
Proxy War
Proxy War
zaki4649
イマドキのExcelスクショの撮り方
イマドキのExcelスクショの撮り方
Yoshitaka Kawashima
Hatena::Letの式年遷宮
Hatena::Letの式年遷宮
Takafumi ONAKA
UTP(UML Testing Profile)概要紹介
UTP(UML Testing Profile)概要紹介
Noriyuki Mizuno
ITコミュニティと情報発信に共通する成長と貢献の要素
ITコミュニティと情報発信に共通する成長と貢献の要素
NISHIHARA Shota
10分でわかるOpenAPI V3
10分でわかるOpenAPI V3
Kazuchika Sekiya
毎日が越境だ!
毎日が越境だ!
増田 亨
形式手法と AWS のおいしい関係。- モデル検査器 Alloy によるインフラ設計技法 #jawsfesta
形式手法と AWS のおいしい関係。- モデル検査器 Alloy によるインフラ設計技法 #jawsfesta
y_taka_23
Flutterアプリ開発におけるモジュール分割戦略
Flutterアプリ開発におけるモジュール分割戦略
Yamashita Takeshi
ブラウザにやさしいHTML/CSS
ブラウザにやさしいHTML/CSS
Takeharu Igari
越境する開発
越境する開発
toshihiro ichitani
TDD のこころ
TDD のこころ
Takuto Wada
事業成長にコミットするエンジニア組織への道のり
事業成長にコミットするエンジニア組織への道のり
Recruit Lifestyle Co., Ltd.
Robotium を使った UI テスト
Robotium を使った UI テスト
健一 辰濱
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
DIVE INTO CODE Corp.
Weitere ähnliche Inhalte
Was ist angesagt?
それは本当にAutomate? 改めて考えるPower Automate
それは本当にAutomate? 改めて考えるPower Automate
Tomoyuki Obi
NLP2019 松田寛 - GiNZA
NLP2019 松田寛 - GiNZA
Megagon Labs
Power Automateで電子帳簿保存法に対応してみた。
Power Automateで電子帳簿保存法に対応してみた。
Tatsuya Kobayashi
ちょっと明日のテストの話をしよう
ちょっと明日のテストの話をしよう
Yasuharu Nishi
ドキュメントを作りたくなってしまう魔法のツールSphinx
ドキュメントを作りたくなってしまう魔法のツールSphinx
Takayuki Shimizukawa
STAC2023 テストケースの自動生成に生成AI導入を検討してみた STAC2023
STAC2023 テストケースの自動生成に生成AI導入を検討してみた STAC2023
Satoshi Sakashita
なぜOpenID Connectが必要となったのか、その歴史的背景
なぜOpenID Connectが必要となったのか、その歴史的背景
Tatsuo Kudo
Proxy War
Proxy War
zaki4649
イマドキのExcelスクショの撮り方
イマドキのExcelスクショの撮り方
Yoshitaka Kawashima
Hatena::Letの式年遷宮
Hatena::Letの式年遷宮
Takafumi ONAKA
UTP(UML Testing Profile)概要紹介
UTP(UML Testing Profile)概要紹介
Noriyuki Mizuno
ITコミュニティと情報発信に共通する成長と貢献の要素
ITコミュニティと情報発信に共通する成長と貢献の要素
NISHIHARA Shota
10分でわかるOpenAPI V3
10分でわかるOpenAPI V3
Kazuchika Sekiya
毎日が越境だ!
毎日が越境だ!
増田 亨
形式手法と AWS のおいしい関係。- モデル検査器 Alloy によるインフラ設計技法 #jawsfesta
形式手法と AWS のおいしい関係。- モデル検査器 Alloy によるインフラ設計技法 #jawsfesta
y_taka_23
Flutterアプリ開発におけるモジュール分割戦略
Flutterアプリ開発におけるモジュール分割戦略
Yamashita Takeshi
ブラウザにやさしいHTML/CSS
ブラウザにやさしいHTML/CSS
Takeharu Igari
越境する開発
越境する開発
toshihiro ichitani
TDD のこころ
TDD のこころ
Takuto Wada
事業成長にコミットするエンジニア組織への道のり
事業成長にコミットするエンジニア組織への道のり
Recruit Lifestyle Co., Ltd.
Was ist angesagt?
(20)
それは本当にAutomate? 改めて考えるPower Automate
それは本当にAutomate? 改めて考えるPower Automate
NLP2019 松田寛 - GiNZA
NLP2019 松田寛 - GiNZA
Power Automateで電子帳簿保存法に対応してみた。
Power Automateで電子帳簿保存法に対応してみた。
ちょっと明日のテストの話をしよう
ちょっと明日のテストの話をしよう
ドキュメントを作りたくなってしまう魔法のツールSphinx
ドキュメントを作りたくなってしまう魔法のツールSphinx
STAC2023 テストケースの自動生成に生成AI導入を検討してみた STAC2023
STAC2023 テストケースの自動生成に生成AI導入を検討してみた STAC2023
なぜOpenID Connectが必要となったのか、その歴史的背景
なぜOpenID Connectが必要となったのか、その歴史的背景
Proxy War
Proxy War
イマドキのExcelスクショの撮り方
イマドキのExcelスクショの撮り方
Hatena::Letの式年遷宮
Hatena::Letの式年遷宮
UTP(UML Testing Profile)概要紹介
UTP(UML Testing Profile)概要紹介
ITコミュニティと情報発信に共通する成長と貢献の要素
ITコミュニティと情報発信に共通する成長と貢献の要素
10分でわかるOpenAPI V3
10分でわかるOpenAPI V3
毎日が越境だ!
毎日が越境だ!
形式手法と AWS のおいしい関係。- モデル検査器 Alloy によるインフラ設計技法 #jawsfesta
形式手法と AWS のおいしい関係。- モデル検査器 Alloy によるインフラ設計技法 #jawsfesta
Flutterアプリ開発におけるモジュール分割戦略
Flutterアプリ開発におけるモジュール分割戦略
ブラウザにやさしいHTML/CSS
ブラウザにやさしいHTML/CSS
越境する開発
越境する開発
TDD のこころ
TDD のこころ
事業成長にコミットするエンジニア組織への道のり
事業成長にコミットするエンジニア組織への道のり
Ähnlich wie RustでWebSocketな自社APIを使う
Robotium を使った UI テスト
Robotium を使った UI テスト
健一 辰濱
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
DIVE INTO CODE Corp.
Webの仕組みとプログラミング言語
Webの仕組みとプログラミング言語
Yossy Taka
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
Fumihito Yokoyama
Android 開発, 運用時に使いたいライブラリやサービスの紹介
Android 開発, 運用時に使いたいライブラリやサービスの紹介
健一 辰濱
Voicepic@FukuiMASeminar
Voicepic@FukuiMASeminar
Manabu Shimobe
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
健一 辰濱
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
Toru Yamaguchi
SoftLayer API で資産管理をお手伝い!
SoftLayer API で資産管理をお手伝い!
Kazumi IWANAGA
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo!デベロッパーネットワーク
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
terurou
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らす
Shunsuke Maeda
ハッカソンに使うSwift & Swift 3.0のGCD
ハッカソンに使うSwift & Swift 3.0のGCD
翔新 史
Spring I/O 2015 報告
Spring I/O 2015 報告
Takuya Iwatsuka
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
Study Group by SciencePark Corp.
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話
Tokoroten Nakayama
Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話
Drecom Co., Ltd.
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
You&I
iOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進める
Shunsuke Maeda
ALMツールたべくらべ
ALMツールたべくらべ
Kaoru NAKAMURA
Ähnlich wie RustでWebSocketな自社APIを使う
(20)
Robotium を使った UI テスト
Robotium を使った UI テスト
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
Webの仕組みとプログラミング言語
Webの仕組みとプログラミング言語
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
Android 開発, 運用時に使いたいライブラリやサービスの紹介
Android 開発, 運用時に使いたいライブラリやサービスの紹介
Voicepic@FukuiMASeminar
Voicepic@FukuiMASeminar
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
SoftLayer API で資産管理をお手伝い!
SoftLayer API で資産管理をお手伝い!
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らす
ハッカソンに使うSwift & Swift 3.0のGCD
ハッカソンに使うSwift & Swift 3.0のGCD
Spring I/O 2015 報告
Spring I/O 2015 報告
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
iOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進める
ALMツールたべくらべ
ALMツールたべくらべ
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.
ありがとうございました
Jetzt herunterladen