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
Rubyで作るネット回線の自動速度測定ツール / Automatic network band...
Search
Ryo Nakano
November 30, 2019
Technology
1.8k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rubyで作るネット回線の自動速度測定ツール / Automatic network bandwidth measurement tool built with Ruby
Ryo Nakano
November 30, 2019
Other Decks in Technology
See All in Technology
M5Stackで作る BLEマウス GPSログの世界
tomokusaba
0
430
Refining Active Record
shugo
0
160
Gemini Intelligence 入門 ― AppFunctions と Gemini Nano
takuroabe
0
270
サブエージェントと Claude Mods で作る独自 Advisor ツールの話
kenichiodo
2
160
古い指輪から広がった JAVA コミュニティ とのつながり
yamad
0
120
V8のArray.prototype.flatを最大約20倍速くするまでと、巨大OSSへの大規模コミットの道のり
riyaamemiya
0
300
Kiro Crewをはじめよう
kizawa2020
1
160
ウォンテッドリーの最近のプロダクトと技術の紹介
stomk
0
100
AIにシークレットを見せない、WSL2で安全な開発環境
yazm
0
300
10年後、Engineering 行為を剥奪されるとして、わたしたちは、どう、何を創ればいいだろうか。 / If Engineering Is Taken Away in 10 Years, How and What Should We Create?
bitkey
PRO
1
200
WasmをRustにする
sansantech
PRO
0
250
DGX Spark でどこまでハッキングができるのか?
kash1064
3
1.3k
Featured
See All Featured
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1.1k
Making Projects Easy
brettharned
120
6.8k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
550
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Google's AI Overviews - The New Search
badams
0
1.6k
Embracing the Ebb and Flow
colly
88
5.2k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
570
Crafting Experiences
bethany
1
380
[SF Ruby Conf 2025] Rails X
palkan
3
1.5k
Exploring anti-patterns in Rails
aemeredith
4
540
Paper Plane
katiecoart
PRO
5
54k
Transcript
"VUPNBUJDOFUXPSLCBOEXJEUI NFBTVSFNFOUUPPMCVJMUXJUI3VCZ தཾ גࣜձࣾγφϓε ࣛࣇౡ3VCZձٞ
TFMG w தཾ ͳ͔ͷΓΐ͏ w !SZPOLO w 3VCZ͖ͳωοτϫʔΫΤϯδχΞ w
גࣜձࣾγφϓε w ۀ w ࣛࣇౡͷΠϯλʔωοταʔϏε ϓϩόΠμ *41
ޫͷ͞ ඵ N ඵສLN ඵؒʹٿΛप
ඵສLN ඵؒʹٿΛप ޫͷ͞ ඵ N ޫຊʹ͍
*41ͷར༻ऀ͔Βͷ
ޫ͕͍Ͱ͢
None
ޫϑΝΠόΛ༻͍ͨΠϯ λʔωοτଓαʔϏεʹ ͓͍ͯɺ̋̋ͱͷ௨৴Ͱر ͍ͯ͠Δ௨৴͕ग़ͳ ͍ͯ͘Ͱ͢
*41ʹͱͬͯ࠷େͳ͜ͱ
௨৴
Ͱɺͦͷ௨৴Λ ਖ਼֬ʹѲ͢Δͷ͍͠
Πϯλʔωοτ 1$ "1 ϧʔλ ϧʔλ ϧʔλ ϧʔλ ϧʔλ ϧʔλ εΠον
αʔό αʔό αʔό *41 $41 2ϘτϧωοΫͷՄೳੑͲ͜
Πϯλʔωοτ 1$ "1 ϧʔλ ϧʔλ ϧʔλ ϧʔλ ϧʔλ ϧʔλ εΠον
αʔό αʔό αʔό *41 $41 "શ෦
௨৴ΛѲ͢Δͷ͕͍͠ཧ༝ w ڥ͕·ͪ·ͪ w 1$ͷεϖοΫɺ04ɺ༗ઢWTແઢɺॴɺڑ w ࠶ݱੑʹ͍͠ w ͖͔͚ͬͬͨ͞Ͳɺࠓ͔ͬͨΓɾɾɾ w
ϘτϧωοΫՕॴ͕͔Βͳ͍ w 1$ɺ*41ɺΠϯλʔωοτɺαʔό
ͦΕͰɺ͋ΔఔѲ͍ͨ͠
࣮ݱ͍ͨ͜͠ͱ ✕ਖ਼֬ʹଌఆ ̋ར༻ऀʹ͍ۙڥͰଌఆ
࣮ݱ͍ͨ͜͠ͱ ✕ਖ਼֬ʹଌఆ ̋ར༻ऀʹ͍ۙঢ়گΛѲ
࣮ݱ͍ͨ͜͠ͱ ✕ਖ਼֬ʹଌఆ ̋ར༻ऀʹ͍ۙঢ়گΛѲ ⊗ IUUQTXXXTQFFEUFTUOFU
None
ࣗಈͰճઢ ΛଌΔπʔϧΛ࡞Δ 3VCZͰ
ࣗಈͰճઢ ΛଌΔπʔϧΛ࡞Δ 3VCZͰ
ڥ Πϯλʔωοτ γφϓε ଞࣾ ଌఆ Ϛγϯ TQFFEUFTUOFUͷ Ͳ͔ͬͷαʔό ճઢ" ճઢ#
ճઢ$ TQFFEUFTUOFUͷ Ͳ͔ͬͷαʔό TQFFEUFTUOFUͷ Ͳ͔ͬͷαʔό "NB[PO $MPVE8BUDI
"NB[PO $MPVE8BUDI ڥ Πϯλʔωοτ γφϓε ଞࣾ ଌఆ Ϛγϯ TQFFEUFTUOFUͷ Ͳ͔ͬͷαʔό
ճઢ" ճઢ# ճઢ$ TQFFEUFTUOFUͷ Ͳ͔ͬͷαʔό TQFFEUFTUOFUͷ Ͳ͔ͬͷαʔό ճઢ"Λͬͯγφϓεܦ༝Ͱɺࣗಈબ͞Εͨ TQFFEUFTUOFUͷͲ͔ͬͷαʔόͰଌఆ
"NB[PO $MPVE8BUDI ڥ Πϯλʔωοτ γφϓε ଞࣾ ଌఆ Ϛγϯ TQFFEUFTUOFUͷ Ͳ͔ͬͷαʔό
ճઢ" ճઢ# ճઢ$ TQFFEUFTUOFUͷ Ͳ͔ͬͷαʔό TQFFEUFTUOFUͷ Ͳ͔ͬͷαʔό ճઢ#Λͬͯγφϓεܦ༝Ͱɺࣗಈબ͞Εͨ TQFFEUFTUOFUͷͲ͔ͬͷαʔόͰଌఆ
ڥ Πϯλʔωοτ γφϓε ଞࣾ ଌఆ Ϛγϯ TQFFEUFTUOFUͷ Ͳ͔ͬͷαʔό ճઢ" ճઢ#
ճઢ$ TQFFEUFTUOFUͷ Ͳ͔ͬͷαʔό TQFFEUFTUOFUͷ Ͳ͔ͬͷαʔό ճઢ$Λͬͯଞࣾܦ༝Ͱɺࣗಈબ͞Εͨ TQFFEUFTUOFUͷͲ͔ͬͷαʔόͰଌఆ "NB[PO $MPVE8BUDI
ڥ Πϯλʔωοτ γφϓε ଞࣾ ଌఆ Ϛγϯ TQFFEUFTUOFUͷ Ͳ͔ͬͷαʔό ճઢ" ճઢ#
ճઢ$ TQFFEUFTUOFUͷ Ͳ͔ͬͷαʔό TQFFEUFTUOFUͷ Ͳ͔ͬͷαʔό ଌఆͷ݁ՌΛ$MPVE8BUDIʹૹ৴ "NB[PO $MPVE8BUDI
Ͳ͏ͬͯ௨৴Λܭࢉ͢Δ start_time = Time.now size = do_something elapsed_time = Time.now
- start_time bits_per_seconds = size / elapsed_time ௨৴ CQT సૹྔ CJUT సૹ࣌ؒ TFDPOET
Ͳ͏ͬͯ௨৴Λܭࢉ͢Δ start_time = Time.now size = do_something elapsed_time = Time.now
- start_time bits_per_seconds = size / elapsed_time ௨৴ CQT సૹྔ CJUT సૹ࣌ؒ TFDPOET ͜͜ͷॲཧ͕࣌ؒ ͍͜ͱ͕େࣄ
Ͳ͏ͬͯ௨৴Λܭࢉ͢Δ start_time = Time.now size = do_something elapsed_time = Time.now
- start_time bits_per_seconds = size / elapsed_time ௨৴ CQT సૹྔ CJUT సૹ࣌ؒ TFDPOET ͜͜ͷॲཧ͕࣌ؒ ͍͜ͱ͕େࣄ ͰɺͲͷ)551 ϥΠϒϥϦΛ͔ͭ͏ ͖
͔Βͳ͍ΜͩͬͨΒ ϕϯνϚʔΫ
ϕϯνϚʔΫڥ w .BD#PPL 3FUJOB JODI w NBD04$BUBMJOB
w 3VCZQSFWJFX w ରͷ)551ϥΠϒϥϦ w OFUIUUQ PQFOVSJ QFSTJTUFOU@IUUQ FYDPO DVSC UZQIPFVT IUUQBSUZ w ൺֱ༰ w .#ͷϑΝΠϧͷ ճμϯϩʔυʹ͔͔Δ࣌ؒ
ϕϯνϚʔΫ݁Ռ user system total real net/http 14.414228 28.327082 42.741310 (
77.200037) open-uri 15.608099 42.493993 58.102092 (115.153421) persistent_http 16.415132 19.942348 36.357480 (204.295474) excon 25.617961 35.878296 61.496257 ( 92.624589) curb 7.818012 10.445636 18.263648 ( 31.450269) typhoeus 16.514283 13.611175 30.125458 ( 43.214387) httparty 16.402169 27.036087 43.438256 ( 73.769290)
ϕϯνϚʔΫ݁Ռ ࣌ؒ ඵ OFUIUUQ PQFOVSJ
QFSTJTUFOU@IUUQ FYDPO DVSC UZQIPFVT IUUQBSUZ VTFS TZTUFN
ϕϯνϚʔΫ݁Ռ ࣌ؒ ඵ OFUIUUQ PQFOVSJ
QFSTJTUFOU@IUUQ FYDPO DVSC UZQIPFVT IUUQBSUZ VTFS TZTUFN ࠾༻
͍ͭͰʹ(FNԽ
None
ॲཧ֓ཁ module SpeedtestNet def self.run config = SpeedtestNet::Config.fetch server =
SpeedtestNet::Server.best_server download_results = SpeedtestNet::Download.measure(server) upload_results = SpeedtestNet::Upload.measure(server) SpeedtestNet::Config.clear_cache SpeedtestNet::Result.new(config.client, server, download_results, upload_results) end end
ॲཧ֓ཁ module SpeedtestNet def self.run config = SpeedtestNet::Config.fetch server =
SpeedtestNet::Server.best_server download_results = SpeedtestNet::Download.measure(server) upload_results = SpeedtestNet::Upload.measure(server) SpeedtestNet::Config.clear_cache SpeedtestNet::Result.new(config.client, server, download_results, upload_results) end end TQFFEUFTUOFUΑΓɺࣗ ͷύϒϦοΫ*1ɺͦͷ *1ͷҢɾܦΛऔಘ
ॲཧ֓ཁ module SpeedtestNet def self.run config = SpeedtestNet::Config.fetch server =
SpeedtestNet::Server.best_server download_results = SpeedtestNet::Download.measure(server) upload_results = SpeedtestNet::Upload.measure(server) SpeedtestNet::Config.clear_cache SpeedtestNet::Result.new(config.client, server, download_results, upload_results) end end TQFFEUFTUOFUΑΓɺଌఆ αʔόҰཡΛड৴ͯ͠ɺۙ͘ ͯԆͷগͳ͍αʔόΛબఆ
ॲཧ֓ཁ module SpeedtestNet def self.run config = SpeedtestNet::Config.fetch server =
SpeedtestNet::Server.best_server download_results = SpeedtestNet::Download.measure(server) upload_results = SpeedtestNet::Upload.measure(server) SpeedtestNet::Config.clear_cache SpeedtestNet::Result.new(config.client, server, download_results, upload_results) end end μϯϩʔυ ͷଌఆ
ॲཧ֓ཁ module SpeedtestNet def self.run config = SpeedtestNet::Config.fetch server =
SpeedtestNet::Server.best_server download_results = SpeedtestNet::Download.measure(server) upload_results = SpeedtestNet::Upload.measure(server) SpeedtestNet::Config.clear_cache SpeedtestNet::Result.new(config.client, server, download_results, upload_results) end end Ξοϓϩʔυ ͷଌఆ
ॲཧ֓ཁ module SpeedtestNet def self.run config = SpeedtestNet::Config.fetch server =
SpeedtestNet::Server.best_server download_results = SpeedtestNet::Download.measure(server) upload_results = SpeedtestNet::Upload.measure(server) SpeedtestNet::Config.clear_cache SpeedtestNet::Result.new(config.client, server, download_results, upload_results) end end ଌఆ݁ՌΛฦ͢
͍ํ irb(main):001:0> require 'speedtest_net' irb(main):002:0> result = SpeedtestNet.run irb(main):003:0> result.download
=> 511615528.0 irb(main):004:0> result.pretty_download => "511.62 Mbps” irb(main):005:0> result.upload => 647852285.33333334 irb(main):006:0> result.pretty_upload => "647.85 Mbps"
݁Ռ "NB[PO$MPVE8BUDI
None
·ͱΊ
·ͱΊ wޫࢥ͍ͬͯΔΑΓ͘ͳ͍ Β͍͠ w௨৴ΛѲ͢Δͷ͍͠ wϕϯνϚʔΫେࣄ w3VCZָ͍͠