読者です 読者をやめる 読者になる 読者になる

踊るびあほりっく

―マイルとブラックカードに夢をみる。―

【実践編】光回線のスピードテスト!通信速度の定時自動測定とグラフ化をやってみよう。

システムエンジニアリング

光回線の通信速度を測定する際に役立つであろう以下のBNRスピードテスト。特別なソフトを入れなくてもブラウザさえあれば軽快に動作し、初心者でも簡単に速度測定を行えることから利用者数が非常に多く、便利なサイトです。

BNR スピードテスト 回線速度/通信速度 測定

f:id:mr-akogare:20170406114421j:plain

ただ。速度の測定は[測定開始]ボタンを押してから一回限りで行われるため、不便な点も少なからず存在します。例えばもし深夜の速度を測定したい場合には深夜に起きていなければならないし、24時間における速度の傾向を把握したい場合は24時間パソコンに向き合ってボタンを押し続けなければなりません。

今回のエントリーでは自動で通信速度の定時測定を行い、測定結果をグラフ化するまでの方法を紹介してみます。

 

速度測定用フォルダーの準備

まずは速度測定を行うためのフォルダーをパソコン上に用意しておきます。フォルダーはデスクトップ上に作っても良いのですが、ここではCドライブ直下に作成する手順としています。

Cドライブで右クリックし、マウスメニューから[新規作成]-[フォルダー]を選択する。

f:id:mr-akogare:20170406081528j:plain

 

"新しいフォルダー"を任意のフォルダー名(ここではspeedtest)に変更する。

f:id:mr-akogare:20170406082020j:plain

f:id:mr-akogare:20170406082345j:plain

 

これで準備は完了。

 

速度測定用ツール(wget)のダウンロード

速度測定用のツールをインターネット上からダウンロードします。今回使うのはwgetというシステムエンジニアにとってはある種おなじみのツールです。もちろん無償で利用が可能です。以下のリンクからダウンロードを行います。

 【wget 4.2.1】をダウンロード&zip解凍する。

http://downloads.sourceforge.net/gnuwin32/wget-1.11.4-1-bin.zip

→zipファイルを解凍し、binフォルダのwget.exeのファイル1つを速度測定用フォルダーにコピーする。

http://downloads.sourceforge.net/gnuwin32/wget-1.11.4-1-dep.zip

 →→zipファイルを解凍し、binフォルダのlibeay32.dll、libiconv2.dll、libintl3.dll、libssl32.dllのファイル4つを速度測定用フォルダーにコピーする。

 

f:id:mr-akogare:20170406084308j:plain

上記画像のように速度測定用フォルダーの中に以下のファイル5つが存在することが確認出来たらOKです。

  • wget.exe
  • libeay32.dll
  • libiconv2.dll
  • libintl3.dll
  • libssl32.dll

速度測定用ツール(バッチファイル)の作成

上記でダウンロードしたwgetのコマンドを呼び出すバッチファイル(簡単なプログラム)*1を作成します。

もしエクスプローラー上でファイル拡張子(.txtや.bat)が表示されていない場合は、こちらのサイトを参考にファイル拡張子の表示設定を先にしておきましょう。

 

速度測定用フォルダーで右クリックし、マウスメニューから[新規作成]-[テキスト ドキュメント]を選択する。

f:id:mr-akogare:20170406090051j:plain

 

"新しいテキスト ドキュメント.txt"を任意のバッチファイル名(ここではspeedtest.bat)に変更する。

 

【変更前ファイル名】新しいテキスト ドキュメント.txt

f:id:mr-akogare:20170406090401j:plain

 

【変更後ファイル名】speedtest.bat

f:id:mr-akogare:20170406090542j:plain

 

バッチファイルを右クリックし、マウスメニューから[編集]を選択する。

f:id:mr-akogare:20170406090926j:plain

 

以下のソースコード3行をコピペしてバッチファイルを保存する。

wget -O nul -a wget.log -T 20 -t 3 http://www.asahi-net.or.jp/~yh8n-wke/image/speed_imagec1.jpg
findstr ^\/s) wget.log >> %date:~0,4%-%date:~5,2%-%date:~8,2%.log
del wget.log

f:id:mr-akogare:20170406091458j:plain

ちなみにwgetコマンドのオプションの意味はそれぞれ以下の通りです。アクセス対象ファイルとタイムアウト設定値についてはカスタマイズの余地がありますが、*2こだわりがなければそのままで大丈夫です。

-O nul ダウンロードしたファイルを破棄する(ディスクに保存しない)
-a wget.log wget.logという実行結果のログファイルを作成する。
-T 20 ダウンロード処理のタイムアウト秒数は20秒とする
-t 3 タイムアウト後のリトライは3回行う
 

バッチファイルをダブルクリックして手動実行し、ログファイルが速度測定用フォルダーに出力されることを確認する。

f:id:mr-akogare:20170406092037j:plain

正常に動作すると、以下のような形式でログファイルが速度測定用フォルダーに出力されるはずです。

YYYY-MM-DD HH:mm:DD (xxx/s) - `nul' saved [xxxx/xxxx]

xxx/sの部分がダウンロード通信の実行速度を表していますが、bps(ビット単位)表記ではなくBps(バイト単位)表記なので注意が必要です。

 

速度測定の定刻タスクスケジューラ設定

作成したバッチファイルを10分おきに自動実行してくれるタスクスケジューラを設定します。

 

[windowsキー]+[R]のキー入力をして、ファイル名を指定して実行画面を表示する。

f:id:mr-akogare:20170406093837j:plain

△「このタスクは管理者特権で作成されます」は表示されていなくても大丈夫。

 

taskschd.mscと入力してOKボタンをクリックする。

f:id:mr-akogare:20170406094022j:plain

 

[タスクスケジューラライブラリ]を右クリックし、[基本タスクの作成]を選択する。

f:id:mr-akogare:20170406094300j:plain

 

任意の基本タスク名(ここではspeedtest)を入力する。[説明]は空白のまま[次へ]ボタンをクリックする。

f:id:mr-akogare:20170406094624j:plain

名前:任意(ここではspeedtest)
説明:空白

 

タスクトリガーのラジオボタンは[毎日]を選択し、[次へ]ボタンをクリックする。

f:id:mr-akogare:20170406094913j:plain

 

任意の開始時間(未来)を設定し[次へ]ボタンをクリックする。

f:id:mr-akogare:20170406095152j:plain

タイムゾーン間で同期:チェックボックスOFF
間隔:1日

 

タスク操作のラジオボタンは[プログラムの開始]を選択し、[次へ]ボタンをクリックする。

f:id:mr-akogare:20170406095328j:plain

プログラム/スクリプトには"cmd"を入力し、引数には速度測定用フォルダーやバッチファイルを指定して[次へ]ボタンをクリックする。

f:id:mr-akogare:20170406095712j:plain

プログラム/スクリプト:cmd
引数の追加:/c c:\speedtest\speedtest.bat
開始:c:\speedtest

[[完了]をクリックしたときに、このタスクのプロパティダイアログを開く]のチェックボックスをONにし、[完了]ボタンをクリックする。

f:id:mr-akogare:20170406100208j:plain

全般タブのユーザーが[ログオンしているかどうかにかかわらず実行する]を選択し、トリガータブをクリックする。

f:id:mr-akogare:20170406100301j:plain

トリガーの繰り返し間隔を[10分間]を、有効期限を任意の日付及び時刻に設定し[OK]ボタンをクリックする。

f:id:mr-akogare:20170406100954j:plain

遅延時間を指定する:チェックボックスOFF(デフォルト)

繰り返し間隔:チェックボックスON(10分間)

繰返継続時間:1日間(デフォルト)

繰り返し時間の最後に~:チェックボックスOFF(デフォルト)

停止するまでの時間:チェックボックスOFF(デフォルト)

有効期限:任意

有効:チェックボックスON(デフォルト)

f:id:mr-akogare:20170406101100j:plain

登録した速度測定のタスクスケジューラを右クリックのマウスメニューから実行し、正常に動作することを確認する。

f:id:mr-akogare:20170406101812j:plain

f:id:mr-akogare:20170406101859j:plain

 

これでタスクスケジューラの設定は完了です。画面による解説は長めですが所要時間はおよそ3分ほどで終わるでしょう。

速度測定後のグラフ化

後は出力されたログファイル(YYYY-MM-DD.log)をエクセルにコピー&ペーストし、煮るなり焼くなり好きにして通信速度の測定結果をグラフ化しましょう。テキストファイルウィザードを使用するとデータの加工が楽になります。

 

エクセルの[貼り付け]メニューから[テキストファイルウィザードを使用]を選択する。

f:id:mr-akogare:20170406112022j:plain

 

区切り文字は[スペース]のみを指定し、[完了]ボタンをクリックする

f:id:mr-akogare:20170406112125j:plain

 

コピー&ペーストしたデータに対してエクセルのVALUE関数やRIGHT関数等を駆使すると、文字列を数値化することが可能です。またログファイルにKB/sとMB/sが混在している場合やバイト表記をビット表記(Mbps)に直したい場合は、上記の文字列の数値化とはまた別途補正をしておく必要があります。

b(ビット)の8倍がB(バイト)でKBの1024倍がMBなので、それぞれ乗算することでMbps表記にすることが可能です。以下の数式や画像を参考にしてください。

【I2セル】=VALUE(RIGHT(C2,LEN(C2)-1))

f:id:mr-akogare:20170406110406j:plain

 

まとめ:完成したグラフはこちら

wgetコマンドとWindowsタスクスケジューラを組み合わせて通信速度の測定結果をグラフ化したものがこちらになります。

f:id:mr-akogare:20170406113534j:plain

なかなか良くないですか?これで時間帯ごとの速度傾向が見れそうです。

これまで回線の通信速度測定(ベンチマーク)についてはいちいちWebブラウザでBNR測定ページにアクセスする必要があり面倒くさかったのですが、これならパソコンさえ起動しておけば自動で速度を測定してくれるため楽ちんです。

*1:PowerShell使えばもっと多彩な事ができるのですが、セキュリティセットアップ等があって初心者向けではないため断念。

*2:一定時間内に処理が開始または完了しなかった場合にその処理を中止すること。