自宅の回線の品質をpingで測る|PowerShellで損失率・ジッタ・95パーセンタイルを出す
光回線を選ぶ時、広告には「最大10ギガ」のような速度が並びます。けれど、MT5を自宅のPCで動かす、オンライン会議をする、ゲームをする、という用途で効くのは、往復の遅れ(ping)と、その揺れ(ジッタ)、取りこぼし(損失)です。この記事では、Windowsの標準の機能だけで、これらを100回測って統計を出すPowerShellのスクリプトを載せ、筆者の回線で実行した結果を紹介します。
(確認:筆者のWindows 11で、2026年10月21日の昼に実行。有線接続です。回線の会社名や契約内容は書きません。1回の結果であり、時間帯で変わります)
見る指標
- 損失率:送った回数のうち、返ってこなかった割合。0%が普通で、数%でも体感に影響します
- 平均・中央値:往復時間の目安。外れ値の影響を受けにくい中央値も見る(このスクリプトの中央値は、回数が偶数の時は、小さい方から数えて真ん中の2つのうち下側です)
- 95パーセンタイル:全体の95%がこの時間以内に返ってきた、という値。平均より「たまに遅い」を拾いやすい
- 最大:一番遅かった1回
- ジッタ:隣り合う往復時間の差の平均。値が大きいほど、遅れが不安定
スクリプト(Measure-Line.ps1)
# 回線の品質を、ping(ICMP)の往復時間で測る。損失率・平均・中央値・95パーセンタイル・最大・ジッタ(隣り合う往復時間の差の平均)を出す
# 日本語のコメントを入れるので、Windows PowerShell 5.1 で動かすには UTF-8(BOM付き)で保存する
param(
[string[]]$Targets = @("1.1.1.1", "8.8.8.8"),
[int]$Count = 100,
[int]$IntervalMs = 200,
[int]$TimeoutMs = 2000
)
$ping = New-Object System.Net.NetworkInformation.Ping
foreach ($t in $Targets) {
$rtts = New-Object System.Collections.Generic.List[double]
$lost = 0
for ($i = 0; $i -lt $Count; $i++) {
try {
$r = $ping.Send($t, $TimeoutMs)
if ($r.Status -eq [System.Net.NetworkInformation.IPStatus]::Success) { $rtts.Add([double]$r.RoundtripTime) } else { $lost++ }
} catch { $lost++ }
Start-Sleep -Milliseconds $IntervalMs
}
if ($rtts.Count -eq 0) { "{0}: 全て失敗" -f $t; continue }
$s = $rtts | Sort-Object
$median = $s[[math]::Floor(($s.Count - 1) / 2)]
$p95 = $s[[math]::Min($s.Count - 1, [math]::Ceiling($s.Count * 0.95) - 1)]
$diffs = for ($k = 1; $k -lt $rtts.Count; $k++) { [math]::Abs($rtts[$k] - $rtts[$k - 1]) }
$jitter = if ($diffs) { ($diffs | Measure-Object -Average).Average } else { 0 }
"{0}: 送信{1} 損失{2}({3:P1}) 平均{4:N1}ms 中央値{5}ms 95%{6}ms 最大{7}ms ジッタ{8:N1}ms" -f $t, $Count, $lost, ($lost / $Count), ($rtts | Measure-Object -Average).Average, $median, $p95, ($s | Select-Object -Last 1), $jitter
}
日本語のコメントを入れたファイルは、UTF-8(BOM付き)で保存してください。BOMがないと、Windows PowerShell 5.1では文字化けして動きません。標準の System.Net.NetworkInformation.Ping を使うので、追加のソフトは要りません。100回×0.2秒間隔なので、1つの宛先に約20秒かかります。
筆者の回線での結果
| 宛先 | 損失 | 平均 | 中央値 | 95% | 最大 | ジッタ |
|---|---|---|---|---|---|---|
| 1.1.1.1(Cloudflareの公開DNS) | 0% | 10.1ms | 10ms | 10ms | 16ms | 0.1ms |
| 8.8.8.8(Googleの公開DNS) | 0% | 7.7ms | 8ms | 8ms | 8ms | 0.4ms |
| 筆者のサイトのサーバー(国内) | 0% | 9.0ms | 9ms | 9ms | 9ms | 0.0ms |
どの宛先も、100回すべて返ってきて、ジッタは0.4ミリ秒以下でした。最大が16ミリ秒の1回だけ少し遅かったのが、唯一の揺れです。この結果から言えるのは、筆者の回線は、この時間帯、この宛先に対しては、遅れが小さく安定しているということだけです。夜の混む時間帯や、遠い宛先では、結果が変わります。同じ測定を、昼・夕方・夜の3回行うと、時間帯の差が分かります。
PowerShell 5.1と7の違い
同じスクリプトを、Windows PowerShell 5.1とPowerShell 7の両方で実行し、どちらも同じ形式の結果が出ました(5.1で20回に絞って確認:損失0・平均10.0ms)。
MT5・VPSの観点で見ると
- MT5を自宅のPCで動かす場合、証券会社のサーバーまでのpingとジッタが安定していれば、約定の遅れの原因の候補から、回線を外せます。測る宛先は、証券会社が案内するサーバーのホスト名にすると、より実際に近づきます
- VPSを使う場合、VPSから証券会社のサーバーまでの遅れが大事で、自宅の回線は関係が薄くなります(VPNの前後でpingを測る方法、MT5用Windows VPSの選び方)
- pingが安定していても、Wi-Fiで測ると揺れることがあります。有線とWi-Fiの両方で測って比べる
この記事で確かめていないこと
- 夜間・休日など、混雑する時間帯の結果
- ICMPを返さない宛先での測定(TCPの接続時間で測る別の方法が必要です)
- 回線の会社ごとの比較(筆者は1つの回線でしか測っていません)
光回線の料金の読み方はeo光の料金の読み方にまとめています。
まとめ
- 回線の品質は、速度(ギガ)ではなく、ping・ジッタ・損失率で見る。PowerShellの標準機能で、100回測って統計を出せる
- 筆者の回線は、有線・昼の時間帯で、損失0%・平均8〜10ms・ジッタ0.4ms以下だった(1回の測定)
- 時間帯と接続方法(有線・Wi-Fi)を変えて、複数回測って比べる
本記事は測定方法の説明であり、特定の回線や会社の優劣を示すものではありません。

