インターネットの速度が遅い時があります。インターネット速度にどのような傾向があるのかをモニタリングして原因を明らかにしたいと思いました
「ネットワーク速度テスト」アプリは、色々あるんですが、GUIを介して操作されるアプリです。 一日中、一時間ごとに、プログラムから呼び出して測定結果を残すことは出来ないようです。
では、自動的にインターネット速度を計測してその結果をファイルに残すにはどのようにすればよいのでしょうか?
コマンドラインからインターネット速度をテストするため有名なのは「speedtest-cli」だそうです。
「speedtest-cli」コマンドを使用するには、Python がインストールされている必要があります。
64ビットWindows版のPythonは、https://www.python.org/ftp/python/3.11.4/python-3.11.4-amd64.exeからダウンロードしてインストールします。
インストールが完了したら、pip.exeのインストール先を環境変数のPATHに追加します。これは、コマンドラインのカレントディレクトリ(今実行しているディレクトリ)からコマンドを見つけて実行できるようにするためです。
環境変数を編集するためには、Windowsの検索ウィンドウで「環境変数」と入力します。すると下図のような「システムのプロパティ」ウィンドゥが表示されます。「環境変数」ボタンを押します。
ユーザ環境変数で「path」をクリックして「編集」ボタンを押します。
「新規」ボタンを押して、「pip.exe」コマンドのあるディレクトリを指定します。「pip.exe」コマンドは、「C:¥Users¥(ユーザ)¥AppData¥Local¥Programs¥Python¥Python311¥Scripts」にインストールされますので、このディレクトリを設定します。
コマンドプロンプトを起動して「pip install speedtest-cli」を実行し、「speedtest-cli」コマンドをインストールします。
コマンドプロンプトから、「speedtest-cli」を実行すると、インターネット速度計測結果を表示します。
バッチファイル「SpeedTest.bat」とログファイル「NetSpeed.txt」をc:¥temp に作成します。
メモ帳で空の「NetSpeed.txt」をc:¥temp 作成しておきます。
バッチファイルは以下のようなファイルとします。ネットワーク速度計測に失敗することがあるので、失敗したらリトライします。
echo %date% %time% >> c:\temp\NetSpeed.txt
speedtest-cli >> c:\temp\NetSpeed.txt
if errorlevel 1 (
echo speedtest-cli failed! >> c:\temp\NetSpeed.txt
timeout /t 300 /nobreak
speedtest-cli >> c:\temp\NetSpeed.txt
)
echo. >> c:\temp\NetSpeed.txt
Windowsの検索ウィンドウに「タスク」と入力し「タスクスケジューラ」を起動します。
新しいタスクを作成します。
「トリガー」で毎日決まった時間にネットワーク速度計測を開始し、「1時間ごとに継続時間1日」繰り返すように設定します。
「操作」で、作成したバッチファイルを実行するように指定します。