そんな気の子。

たけのこ、たけのこ。

野球の聖地しらべ

 

野球が好きです。僕は横浜DeNAベイスターズのファンなのでよく横浜スタジアムに行きます。横浜市に住んでいるのでなかなか近いです。

 

さて、セリーグ6球団のうち、3球団が関東に籍を置いています。

 

 

地図で見るとこんな感じです。

 f:id:horicun:20170618190303p:plain

 

おおお。近い。

 

 

今回はこの3球場から等距離にある点を割り出し、そこを「関東3球団の聖地」としたいと思います。

 

さて、三角形の3頂点から等距離にある点とはつまり、外心のことです。

 

f:id:horicun:20170618190401j:plain

三角形の各辺に対する垂直二等分線は一点で交わります。その点が外心です。

なので先ほどの地図を印刷し、定規とコンパスで作図すればオッケーです。簡単ですね。

ところが僕の家にはプリンターもコンパスもないので、ここは大人の力を使います。

 

点A(x1, y1),B(x2, y2),C(x3, y3)に対し、三角形ABCの外心の座標は次のように計算できます。

 

 f:id:horicun:20170618190546p:plain

( 三角形の内心・外心・重心・垂心・傍心 より引用)

 

あとはグーグルマップで3球場の各座標をしらべ、この式に代入すればおっけー。

 

こんな感じで汚いコードをパパッと書いて

f:id:horicun:20170618190648p:plain

実行〜。

 

f:id:horicun:20170618190718p:plain

 

出ました!

 

この座標の場所をグーグルマップで調べると、、、

 

f:id:horicun:20170618190741p:plain

f:id:horicun:20170618190748p:plain

f:id:horicun:20170618193437p:plain

 

ここです!!東京湾!!!!

 

残念な結果になってしまいました。聖地は海に沈んでしまいました。

 

この手法の問題点は以下の通り

 

さてこのままでは終われません。

 

そもそも、東京は電車社会です。電車で等距離にある地点を聖地とします!電車で等距離とは、所要時間が同じということです。

 

というわけで、次のように条件を設定

  • セリーグ関東3球場に電車で行くときの所要時間のばらつきが最も少ない駅を聖地とする
  • 出発は平日の17時30分とする。(健全な会社の、健全な退社時間)
  • 球場の最寄駅から球場までの徒歩時間も所要時間に含める

 

さて、今回これを探すのに使うのはYahoo!路線情報(乗換案内、時刻表、運行情報 - Yahoo!路線情報)です。

 

例えばYahoo!路線情報で横浜スタジアムと入力すると、、、

f:id:horicun:20170618191134p:plain

 

f:id:horicun:20170618191210p:plain

 こんな感じで駅から球場への所要時間が表示されます。

 ちなみに、Yahoo路線情報はURLで検索できるのも便利です。例えば、先ほどの検索はURLに

https://transit.yahoo.co.jp/search/result?flatlon=&from=日吉&tlatlon=&to=横浜スタジアム&via=&via=&via=&y=2017&m=06&d=08&hh=17&m2=0&m1=3&type=1&ticket=ic&al=1&shin=1&ex=1&hb=1&lb=1&sr=1&s=0&expkind=1&ws=3

 

このように入力するだけです。このURLの駅名の部分を変えるだけで、同じ条件で他の駅からの所要時間を計算することができます。

 さて、こんな感じで関東の駅を片っ端から計算し、3球場への所要時間が揃った駅を聖地とします!

ところが関東には3兆個の駅があるため、真面目に入力していると8万年かかってしまいます。

 

そこで今回は処理を自動化してみます。

 

仕組みはこんな感じです。

f:id:horicun:20170618191442j:plain

 全然伝わらない概念図。

 

 

用意するもの

  • 全国駅名リスト
  • Selenium WebDriver

全国駅名リストはこんな感じです。

f:id:horicun:20170618191843p:plain

駅の名前だけでなく、住所や緯度経度の情報も含まれています。

路線API | 駅データ 無料ダウンロード 『駅データ.jp』で無料会員登録することで入手可能です。 

 

Selenium WebDriverとは自動でWebサイトを操作してくれるすごいツールです。(Selenium WebDriver)

今回はJavaで動かすのでJava用のSeleniumをダウンロードします。

 

さて、手順は次の通りです

  1. Javaプログラムで駅名リストを読み込み、Yahoo路線情報の検索用URLを作ります。
    (緯度経度の情報を元に、3球場から明らかに遠い駅はフィルタリングしています)
  2. Seleniumを使って実際にYahoo路線情報のページを表示させ、ソースコードを取得します。

  3. スクレイピングという技術を用いて所要時間の部分だけ抜き出します。

  4. この処理を  ( 駅数×球場数 )回行い、結果をCSVファイルに出力します。

 

難しそうなことを言ってますが、Selenium Javaだとそうでもないです。とても簡単。

 

プログラムをパパッと書きます。

 

f:id:horicun:20170618194722p:plain

 

めちゃくちゃ汚いコードだけどオッケー!!

 

今回はChrome Driverを利用しましたが、本当は実行画面を表示しないHtml Unit Driverの方が圧倒的に速いです。でも今回はうまくいかなかったので断念。

 

さて、 実行開始してから約一時間。

 

f:id:horicun:20170618192434p:plain

 

出ました!

ちょいちょいエラー吐いてるけどまぁオッケー!

(時間を分に直す処理を忘れていたので、このあと追加で処理を行いました。)

 

 さて、出力されたCSVをエクセルで開いて、エクセルでデータを加工します。

 

 

f:id:horicun:20170618192507p:plain

 

でました!

 

鮫洲駅です!!

44分、44分、45分です。

 

地図で見るとこの辺。

 

 f:id:horicun:20170618194121p:plain

 

なるほど、確かに真ん中な気がする。

 

あと下明神駅戸越公園駅も同率で聖地ですが、

聖地が3つもあると良くないので所要時間が短い鮫洲駅を聖地とします!

 

それにしても僕は鮫洲駅のことを全く知らなったので、調べてみました。

 

駅西方にはマンションが立ち並び、東方には古い民家と低いビルの混在する雑然とした町並みが広がっている。東方100メートルほどの所に旧東海道があり、立会川駅とともに土佐藩屋敷があった周辺として歴史上の史跡もいくつか存在するが、品川宿として整備されている青物横丁以北ほどは未だ整備されていない。また当駅のすぐ北の地下をりんかい線が交差するが、りんかい線側に駅は設けられていない。

(鮫洲駅 - Wikipedia より引用)

 

なんかそんなに都会じゃなさそうですね。 

京急本線なので品川、横浜へのアクセスがよさそうです。住みよい。

 

 

 

ちなみに、3球場への平均所要時間で並べ替えるとこうなります。

 

f:id:horicun:20170618192710p:plain

 

 

渋谷、赤坂見附、四ツ谷!

ヤクルトファンは渋谷に住めばといいと思います。

 

以上、結論

 

関東セリーグ3球団の聖地は鮫洲駅!!

 

鮫洲駅周辺に住んでいる人はどの球団のファンが多いのか気になりますね。