先日、こだまグリーン早得について書いた時に、「のぞみやひかりを使った時との時間差を求めてみたら」と書いた。実際にこれをやるには様々な区間で乗換案内を何度も実行する必要がある。
こういう時に、Webサービスというのは不便だ。一つ一つマウスで選択して、駅名や時刻を入力する必要がある。

というわけで、以下のページにあるVBAを使ってみた。VBAはVisual Basic for Applicationsの略で、主にExcelを制御するために使われている。

複数経路の時間を一括で調べるExcelVBA
http://officevba.info/norikaevba2/

yahoo乗換は条件(出発駅、到着駅、指定時刻など)を全部URLに書きこんで送信する。条件を入力するページで検索ボタンを押すと、設定された条件に基づくURLが生成される。サーバーはこれを読んで結果ページを返す。

このVBAは手入力の代わりにExcelのデータからURLを生成して、結果のページを入手し、必要な部分を取り出すというものだ。
元のVBAの出力では、1セルに結果が「09:00発→10:00着 1000円」などと入って後で利用するのに不便だ。改造して、出発時間、到着時間、金額を切り出すようにした。こうしておけば、所要時間もすぐに計算できる。

これで各駅間の(最速の)所要時間を一気に求めることができる。比較対象はこだまに乗り続けた場合だが、乗換案内でそんな検索はできないので時刻表から拾うしかない(乗り換えせずに乗り続けるだけなので簡単だ※)。
 

とりあえず、新大阪発でやってみる。所要時間と言うが、出発時刻か到着時刻を決める必要がある。のぞみに乗る区間なら何時を指定しても結果は大して変わらないのだが、ひかりやこだまは本数が少ない。さらにひかりは停車駅のパターンが複数あり、出発時刻によって結果が大きく異なる。今回は10月1日、8:50新大阪発のこだま642号を基準にした。こだまに一番有利になるように、乗換案内の出発時刻はこだまの発車時刻の1分後(8:51)に設定した。

 

結果を以下に示す。


 

到着時刻をグラフ化してみる。

 

名古屋~新横浜間はこだまに乗り続けても同じという拍子抜けする結果になった。名古屋まで後発ののぞみに乗って、名古屋で調査対象のこだまに乗り換えるのが最速になっている※※。時間をずらすと結果は変わるかもしれない。

 

厳密にやるには、ランダムな時間に出発駅をスタートすると仮定して、
・出発時刻を指定
・一番早い列車の出発時刻を求める
・上の時刻に1分足した時刻を出発時刻に指定して次の列車の出発時刻を求める
ということを繰り返して、駅での平均待ち時間と所要時間を足して平均所要時間を求める必要がある。
面白そうだが、これは次の課題にする。
 

※こだまは通過待ちをするので、到着時刻と発車時刻が異なる場合が多い(駅によっては10分以上違う)。紙の時刻表には発車時刻しかないが、Web上の時刻表には到着時刻もあるので特に問題はない。

※※乗換案内は到着時刻が同じであれば、出発時刻が遅い(=所要時間が短い)経路を最適として出力する。

関連 乗換案内のアルゴリズムを推測する