本記事はヴァル研究所の支援として作成された記事です
駅すぱあとはAPIを公開しており、駅情報や経路探索などをAPI経由で行えます。メソッドはすべてGETメソッドで、情報取得系のみです。レスポンスはJSONまたはXMLで返ってきます。
この駅すぱあと APIを利用しやすくするSDKを開発しはじめました。SDKはVBAで作っており、Excelなどから利用できます(Windowsのみ、macOSでは利用できません)。
今回は、スタンダードプランで提供されている経路情報の更新判定APIに対応しました。このAPIは、「駅すぱあと」のデータとして、名称が変更された、削除されたなどの更新状態を判定します。駅名が変わった際などは、その新旧駅名を取得できます。
具体的な利用シーンとしては、通勤費管理(定期代支給)です。通勤手当の支給の際には、従業員の通勤経路の情報を保持していますが、通勤経路の駅や路線の名前が変更になったり、駅や路線が廃止になったりした場合に、見つけることができる機能となります。
では、使い方を紹介します。
必要な情報
SDKを利用する際にはAPIキーが必要です。無料トライアルがあるので、こちらから取得してください。
注意点
- SDKはWindowsでのみ動作します
- SDKは非公式です。公式サポートへの問い合わせはご遠慮ください
ファイルのインポート
こちらのリポジトリにある *.cls
と *.bas
ファイルをすべてインポートします。これらは以下のライブラリを含んでいます。
初期化
先ほど取得したAPIキーを使ってSDKを初期化します。
Dim client As Ekispert
Set client = New Ekispert
client.ApiKey = "YOUR_API_KEY"
経路情報の更新判定の設定
経路情報の更新判定を行う際には、まず駅や路線、会社を指定して検索します。検索は ToolboxCourseUpdateQuery
にて行います。以下の条件は、経路情報の更新判定 - 駅すぱあと API Documents 駅データ・経路検索のWebAPIにある条件を再現するものです。
Dim Query As ToolboxCourseUpdateQuery
Set Query = Client.ToolboxCourseUpdateQuery()
Query.DateProp = DateSerial(2020, 4, 1)
Query.StationNameList(0) = "高円寺"
Query.StationNameList(1) = "羽田空港第2ビル(東京モノレール・ANA利用)"
Query.StationNameList(2) = "川平"
Query.StationNameList(3) = "古瀬"
Query.StationNameList(4) = "江差"
Query.RailNameList(0) = "JR中央線快速"
Query.RailNameList(1) = "近鉄奈良線快急"
Query.RailNameList(2) = "小田急小田原線急行(代々木上原-新百合ケ丘)"
Query.RailNameList(3) = "旅客船(丸亀港~手島港)"
Query.CorporationNameList(0) = "JR"
Query.CorporationNameList(1) = "東京急行電鉄"
Query.CorporationNameList(2) = "富山ライトレール"
Query.CorporationNameList(3) = "十和田観光電鉄"
Query.CorporationNameList(4) = "備讃フェリー"
検索の実行
検索条件を設定したら、検索処理を実行します。結果は 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.Updates
に更新情報の配列が入っています。そして、更新情報には路線(Line)、経路(Point)、会社(Corporation)の情報が入っています。
Dim i As Integer
Dim Update As Update
For i = 0 To UBound(Result.Updates)
Update = Result.Updates(i)
' 路線の更新情報
If (Not Not Update.Lines) <> 0 Then
Debug.Print Update.Lines(0).Status.Code
Debug.Print Update.Lines(0).Name
End If
' 駅の更新情報
If (Not Not Update.Points) <> 0 Then
Debug.Print Update.Points(0).Status.Code
Debug.Print Update.Points(0).Station.Name
End If
' 会社の更新情報
If (Not Not Update.Corporations) <> 0 Then
Debug.Print Update.Corporations(0).Status.Code
Debug.Print Update.Corporations(0).Name
End If
Next i
ソースコード
SDKのコードは以下のリポジトリにて公開しています。ライセンスはMIT Licenseです。
EkispertAPIMania/VBA-SDK: Excel VBAなどで動作する駅すぱあと VBA SDKです(Windowsのみ)
まとめ
経路情報の更新判定APIを使うことで、最新の路線・地点情報などに更新できます。変更前後の値も分かるので、データベースを更新したり、差分も取りやすくなります。
定期的に実行することで、情報を最新の状態に保持できます。ぜひ、システム開発に役立ててください。
何か不具合があれば、Issueにて連絡いただければ対応します(macOSでは動かないので注意してください)。
EkispertAPIMania/VBA-SDK: Excel VBAなどで動作する駅すぱあと VBA SDKです(Windowsのみ)