本記事はヴァル研究所の支援として作成された記事です
駅すぱあとはAPIを公開しており、駅情報や経路探索などをAPI経由で行えます。メソッドはすべてGETメソッドで、情報取得系のみです。レスポンスはJSONまたはXMLで返ってきます。
この駅すぱあと APIを利用しやすくするSDKを開発しはじめました。SDKはVBAで作っており、Excelなどから利用できます(Windowsのみ、macOSでは利用できません)。
今回は、スタンダードプランで提供されている平均待ち時間探索APIに対応したので、その使い方を解説します。
平均待ち時間探索とは
平均待ち時間探索は、時刻表を加味しないで目的地への色々な経路を探索します。平均待ち時間とは、1日に運行されている列車の本数などから割り出した、平均的に考えられる待ち時間になります。
詳細は平均待ち時間による探索 - 駅すぱあと API Documents 駅データ・経路検索のWebAPIを参照してください。
必要な情報
SDKを利用する際にはAPIキーが必要です。無料トライアルがあるので、こちらから取得してください。
注意点
- SDKはWindowsでのみ動作します
- SDKは非公式です。公式サポートへの問い合わせはご遠慮ください
ファイルのインポート
こちらのリポジトリにある *.cls
と *.bas
ファイルをすべてインポートします。これらは以下のライブラリを含んでいます。
初期化
先ほど取得したAPIキーを使ってSDKを初期化します。
Dim client As Ekispert
Set client = New Ekispert
client.ApiKey = "YOUR_API_KEY"
平均待ち時間の検索条件設定
平均待ち時間検索は CoursePlainQuery
を使います。このオブジェクトを取得し、検索条件を設定します。
Dim Query As CoursePlainQuery
Set Query = client.CoursePlainQuery()
' From/Toは必須
Query.FromProp = "吉祥寺" ' 出発地
Query.ToProp = "札幌" ' 目的地
' 日付の設定
Query.DateProp = Now
検索条件は 平均待ち時間探索 - 駅すぱあと API Documents 駅データ・経路検索のWebAPI にあるものを指定できます。
以下のプロパティは予約語が関係するため、名前を変更していますので注意してください。
検索条件 | プロパティ |
---|---|
date | DateProp |
from | FromProp |
to | ToProp |
検索の実行
検索条件を設定したら、検索処理を実行します。結果は ResultSet
クラスになります。検索がうまくいったかどうかは ResultSet.Success
の値で判定してください。
Dim Result As ResultSet
Result = Query.Find()
Debug.Print Result.Success ' True または False
エラーだった場合
もし検索がエラーだった場合は ResultSet.Error
の中にエラー情報があります(駅すぱあと APIからのエラーの場合)。
If Not Result.Success Then
MsgBox Result.Error.Message
Exit Sub
End If
成功した場合
処理が成功した場合、 ResultSet.Courses
の中に経路情報が入っています。各経路には Price
(金額情報) や Route
(経路) プロパティなどがあります。
Debug.Print Result.Courses(0).Route.Lines(1).stopStationCount ' 途中駅数 4など
ソースコード
SDKのコードは以下のリポジトリにて公開しています。ライセンスはMIT Licenseです。
EkispertAPIMania/VBA-SDK: Excel VBAなどで動作する駅すぱあと VBA SDKです(Windowsのみ)
まとめ
経路探索は今回紹介したものの他、前後のダイヤ探索や時刻表を加味した経路探索などさまざまな種類があります。今後のSDKのアップデートにて対応する予定なので、ぜひご利用ください。
何か不具合があれば、Issueにて連絡いただければ対応します(macOSでは動かないので注意してください)。
EkispertAPIMania/VBA-SDK: Excel VBAなどで動作する駅すぱあと VBA SDKです(Windowsのみ)