Slide 1

Slide 1 text

たのしくみんなのWifi速度を 収集する、しかもJSで! 株式会社DELTA 丹哲郎

Slide 2

Slide 2 text

主にインフラ領域の技術支援サービスやってます!

Slide 3

Slide 3 text

私は代表です! 2日ぶり人生2回目のLTです!よろしくお願いします!

Slide 4

Slide 4 text

(ところで)会場あります!@シブヤ

Slide 5

Slide 5 text

最近オフィスのWifiが遅い!(らしい)

Slide 6

Slide 6 text

こういうのは各自が好き勝手言うからファクトが欲しい 電子レンジ? 接続台数? 上りが遅い? 時間帯?

Slide 7

Slide 7 text

アーキテクチャ(妄想) 端末 データレイク 端末 端末 端末 グラフ化など インサイト

Slide 8

Slide 8 text

極端に遅いことの検知はクライアントでやりたい 端末 データレイク 端末 端末 端末 グラフ化など インサイト 低速になった時点で通信が不安定にな るので、「遅くなった」ことは クライアントが検知してほしい

Slide 9

Slide 9 text

でも各自のOSはバラバラ

Slide 10

Slide 10 text

Chrome拡張にしてバックグラウンド実行させてみよう でもNW速度をキャプチャできるAPIなんてあるの?

Slide 11

Slide 11 text

navigator.connection

Slide 12

Slide 12 text

でもなんか数値が小さい・・・?

Slide 13

Slide 13 text

丸めた値らしい(fingerprinting対策とのこと) https://stackoverflow.com/questions/5529718/how-to-detect-internet-speed-in-javascript/47511842#47511842

Slide 14

Slide 14 text

「遅いこと」がわかればOK

Slide 15

Slide 15 text

遅いときには通信しづらいので、復帰時にまとめて送付 実装はどうすればいいのかな? ● 定期的にチェック ● 遅くなったら低速モードに ● 高速に戻った時点でレポートを投げる ● チェック間隔は高速時と低速時で変えたいかも、、、?

Slide 16

Slide 16 text

setIntervalだと等間隔すぎる件 高速時が9割で、低速時にはこまめにチェックしたいという場合にsetIntervalだとどちら に合わせるか難しい

Slide 17

Slide 17 text

「さっきまで低速だった」という状態も管理したい 関数の外に状態を置いて更新したくないですよね、、、

Slide 18

Slide 18 text

setTimeoutと再起でシンプルに書けるかも?

Slide 19

Slide 19 text

setTimeoutと再起でシンプルに書けるかも? 状態 遅い間はどんどん積み重なる 速くなったらリセット catch-allなループ

Slide 20

Slide 20 text

setTimeoutと再起でシンプルに書けるかも? Exponential backoff 基本は30秒ごとにサンプリング

Slide 21

Slide 21 text

setTimeoutと再起でシンプルに書けるかも? いま遅い 遅かった それ以外

Slide 22

Slide 22 text

(今後の課題)テスタビリティは低そう これは外から渡したほうが良さそう ここはSpyする? これも外から渡したほうが良さそう?

Slide 23

Slide 23 text

[CM]AWSコストの無料診断やってます!

Slide 24

Slide 24 text

[CM]AWSコストの無料診断やってます! https://costcut.cloud

Slide 25

Slide 25 text

ありがとうございました!