46
43

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

駅すぱあとAPIを使ってみた

Last updated at Posted at 2018-04-22

駅すぱあとは、無料で利用できる乗り換え案内webサービスです。

そんな駅すぱあとですが、駅情報に関するデータを取得できるAPIを提供しています。
公式HP: https://ekiworld.net/service/sier/webservice/free_provision.html
によると、「経路探索」や「駅情報」を利用できるフリープランと、「バスデータ」や「時刻表情報」などが取得できるスタンダードプランがあるようです。

今回はフリープランのAPIを使って、「駅名」を入力すると「県名」を出力する簡単なスクリプトをRCurlを使って実装してみました。

APIの利用申請

駅すぱあとAPIは、フリープランでも利用申請が必要となります。
利用申請は、このページから行うことが出来ます。
申請を行うと、申請したメールアドレス宛に、APIの説明とアクセスキーが記されたメールが届きます。APIの利用にはこのアクセスキーが必要です。
今のところフリープランの利用には期間制限が無いようなので、一度申請すれば何日でも使用する事ができます。

APIの仕様

APIの仕様書は、http://docs.ekispert.com/v1/le/ で公開されています。

今回は「駅名」から「県名」を特定するのが目的なので、駅情報APIを使用しようと思います。

駅情報APIは

http://api.ekispert.jp//v1/xml/station/ + "ACCESS_KEY"

で使用することが出来ます。

http://api.ekispert.jp//v1/json/station/ + "ACCESS_KEY"

の形式で使用すると、jsonでデータを取得することが出来ます。

APIの末尾に「&name=(文字列)」を追加することで、その文字列を含む駅を検索することが出来ます。
例えば、「&name=神奈川」としてAPIを打ってみると

<ResultSet apiVersion="1.27.0.0" engineVersion="201804_02a">
 <Point>
  <Station code="23111">
   <Name>神奈川</Name>
   <Type>train</Type>
   <Yomi>かながわ</Yomi>
  </Station>
  <Prefecture code="14">
   <Name>神奈川県</Name>
  </Prefecture>
 </Point>
 <Point>
  <Station code="23112">
   <Name>神奈川新町</Name>
   <Type>train</Type>
   <Yomi>かながわしんまち</Yomi>
  </Station>
  <Prefecture code="14">
   <Name>神奈川県</Name>
  </Prefecture>
 </Point>
</ResultSet>

というxmlが得られました。
「神奈川」駅のみならず、"神奈川"という文字列を含む「神奈川新町」駅もデータに含まれていますので、注意が必要です。

# 実装
「駅名」を入力すると「県名」が出力するスクリプトをRCurlで実装してみました。

ekiscr.R
library("jsonlite")
library("RCurl")

# ここに検索したい駅名を入力
station = "駅名"

# ここにアクセスキーを入力
Access_key = "駅すぱあとから送られたアクセスキー"

# API
BaseAPI <- paste("http://api.ekispert.jp//v1/json/station/light?key=", Access_key, sep = "")

# BaseAPI+station
API <- paste(BaseAPI, "&name=", station, sep = "")

# get JSON
data <- getURL(API)
data <- fromJSON(data)

# get Prefecture name
if(length(data$ResultSet$Point$Station$Name)==1){
  output <- data$ResultSet$Point$Prefecture$Name
}else{
  output <- data$ResultSet$Point$Prefecture[data$ResultSet$Point$Station$Name==station,]$Name
}

print(output)

結果

# station = "川崎"の場合
> source('~~/ekiscr.R', encoding = 'UTF-8')
[1] "神奈川県"

# station = "荻窪"の場合
> source('~~/ekiscr.R', encoding = 'UTF-8')
[1] "東京都"

まとめ

駅名から県名を取得するスクリプトを簡単に実装する事が出来ました!
個人的にはjsonliteが使いやすいと思っているので、取得形式はxmlよりjsonの方がオススメです。
今回は県名抽出のみ行いましたが、このAPIから取得できる駅コードを用いれば、乗換情報なども取得する事が出来ます。
様々なwebサービスに応用できると思うので、ご参考までに。

46
43
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
46
43

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?