hi, hikaru

『駅すぱあと』でお馴染みヴァル研究所で、テクニカルエバンジェリストとして働いている丸山が綴るブログです。

定期券を利用した運賃計算がより便利に! #駅すぱあとWebサービス

こんにちは。 駅すぱあとWebサービスにて、定期券を利用した運賃計算が便利になる機能が追加されました!

f:id:hiiiiiiihikaru:20171213134324p:plain

駅すぱあとWebサービスとは

国内初の乗換案内ソフト駅すぱあとがもつ様々な情報をWebAPIで提供しているサービスです。

ekiworld.net

経路探索はもちろん、駅データや時刻表などの情報を取得できます。 無料で使えるフリープランを用意しており、企業にかぎらず個人でも利用できます。

最近 facebookページ を立ち上げて、駅すぱあとWebサービスの最新情報をお知らせしています。 このページが良いと思ったらいいね!を押してもらえると嬉しいです。よろしくお願いします!

定期券を利用した運賃計算?

乗りたい電車を調べる時に、自分の定期券を使ったらいくらで行けるのか、勝手に算出してくれたら嬉しいですよね。

f:id:hiiiiiiihikaru:20180726120000p:plain

みなさんご存知でしたか?駅すぱあとアプリでは「鉄道定期券を登録」ボタンを押すと表示されている経路を定期経路として保存してくれるのでまだ使ってない方はぜひ使ってみてください♩

f:id:hiiiiiiihikaru:20180726115730p:plain

個人ユーズでももちろんですが、経費精算の場面では特に重要な機能となっております。

駅すぱあとWebサービスでも定期券を利用した運賃計算には対応していましたが、今回のアップデートでさらに便利になりました!

どう便利になったのか?

今回のアップデートは大きく分けて2つあります。 どう便利になったのかを説明するには、まず今までどのように実現していたのかを説明させてください。

今までの定期割り当ての方法

1. 定期経路文字列を作成する

経路探索APIにて、平均待ち時間による探索の結果のレスポンスから、駅の名称、路線名、路線の方向を抜き出して定期経路文字列を作ります。

※searchTypeパラメータにplainを指定することで平均待ち時間による探索が行えます!

$ curl "https://api.ekispert.jp/v1/json/search/course/extreme?key=xxx&viaList=三鷹:新宿&searchType=plain"

レスポンスから作成できる定期経路文字列: 三鷹:JR中央線快速:Up:新宿

2. 経路探索を行う

経路探索APIにて、assignDetailRouteパラメータに1で作成した定期経路文字列を指定します。

$ curl "https://api.ekispert.jp/v1/json/search/course/extreme?key=xxx&viaList=国分寺:四ツ谷&searchType=plain&assignDetailRoute=三鷹:JR中央線快速:Up:新宿"

という流れになるのですが、定期経路文字列をレスポンスから作るのって面倒臭いですよね?しかも、全ての経路が定期経路として利用できる訳ではないので、それも判別して欲しいですよね?

アップデート1つめ:定期経路文字列がレスポンスに付与されます

経路検索APIで平均待ち時間による探索を行った場合、レスポンスに定期経路文字列(DetailRoute要素)が付与されるようになりました。

$ curl "https://api.ekispert.jp/v1/json/search/course/extreme?key=xxx&viaList=三鷹:新宿&searchType=plain"
:
 <DetailRoute>三鷹:JR中央線快速:Up:新宿</DetailRoute>
:

それにより、assignDetailRouteパラメータに指定する定期経路文字列をアプリケーション側でごちゃごちゃやる必要が無くなります! さらに、定期として利用可能な場合のみレスポンスに付与されるので、定期として利用可能かどうかの判定も可能になりました!


とは言うものの、定期経路文字列は平均待ち時間による探索のレスポンスでしか付与されません。 ダイヤによる探索から定期経路を作りたい場合は実現不可能なのでしょうか?

アップデート2つめ:ダイヤによる探索でも定期券情報を作成できるようになりました

ダイヤによる探索のレスポンスに、定期経路シリアライズデータ(Teiki/SerializeData要素)が付与されるようになりました。

$ curl "https://api.ekispert.jp/v1/json/search/course/extreme?key=xxx&viaList=三鷹:新宿&searchType=departure"
:
<Teiki>
  <SerializeData>VkV4QaECp_rHAQEDpgEz7osEk8EBpViPwQGlWNXBAaVYuwWSwwEBA6RtBKVY1cQBAQIBA6RxBKVYuweRxQGlWI8CpVi7AwAEA...</SerializeData>
<Teiki>
:

定期経路シリアライズデータを用いて定期割り当てを行う際は、経路探索APIにてassignTeikiSerializeDataパラメータに定期経路シリアライズデータを指定します。

$ curl "https://api.ekispert.jp/v1/json/search/course/extreme?key=xxx&viaList=国分寺:四ツ谷&searchType=plain&assignTeikiSerializeData=VkV4QaECp_rHAQEDpgEz7osEk8EBpViPwQGlWNXBAaVYuwWSwwEBA6RtBKVY1cQBAQIBA6RxBKVYuweRxQGlWI8CpVi7AwAEA..."

今まで平均待ち時間による探索でしか定期券情報を作成できませんでしたが、 今回のアップデートでダイヤによる探索でも定期券情報を作成できるようになりました。アップデート1つめと同様、定期として利用可能かの判定も可能です。


つまり今回のアップデートで、定期を割り当てる方法が一つ増えて二つになりました。

  • 定期経路文字列を用いる方法
  • 定期経路シリアライズデータを用いる方法

これから駅すぱあとWebサービスを導入する、これから定期割り当て機能を実装する方は、定期経路シリアライズデータを利用することを推奨します。

詳しい内容はこちらをご確認ください!

終わりに

駅すぱあとWebサービスで定期券を利用した運賃計算がより便利になったよ、というお話でした。

このブログ読んでたら使ってみたくなった、という方、こちらからweb上でお申し込みができますので、お気軽に触ってみてください。 ではでは。