hi, hikaru

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

駅すぱあとwebサービスの "平均路線"と"運行路線"の話

こんにちは。 今回は駅すぱあとwebサービスでよくお問い合わせをいただきます、

"平均路線"と"運行路線"って何が違うの?

についてお話ししたいと思います。

f:id:hiiiiiiihikaru:20171213134324p:plain

平均路線とは

列車の停車パターンをベースにして設定された「路線」の概念で、平均待ち時間による探索で使用します。

一般的な「路線名」とは異なり、列車の停車パターンも平均路線として登録されている場合があります。

(例:〇〇線、〇〇線特急、〇〇線急行、等。ただし全停車パターンが登録されている訳ではありません)

平均路線 - 駅すぱあとWebサービス Documents 駅データ・路線検索のWebAPI より

駅すぱあとに、昔からある概念です。

運行路線とは

鉄道事業者の運行系統をベースにして区間分けされた「路線」の概念です。

基本的に、鉄道事業者が乗客向けに案内するときの取り扱いに近い区間分け・名称となっています。

運行路線 - 駅すぱあとWebサービス Documents 駅データ・路線検索のWebAPI より

駅すぱあとでは比較的新しい概念です。 駅すぱあとwebサービスでは、当初フリープランでのみテスト的に公開していました。 その後、運行路線の整備が進み、2016年以降、スタンダードプランでも利用できるようになりました。

平均路線と運行路線の比較

上の説明だけでは、何に何が向いていて何が向いていないのか分からないので、 よくあるユースケースを元に比較していきたいと思います。

長期的な利用に向いているのは運行路線

平均路線は、平日お昼の列車の運行パターンから作られています。 なので、ダイヤ改正があれば新しくできたり無くなったりします。

運行路線は、駅から駅までの線路の区分けから作られています。 例えば、〇〇駅から△△駅までの線路の区間を「JR中央線快速」とする、みたいな感じです。 線路の区間なので、ダイヤの変更に依存しません。基本的には固定です。

路線に紐付く駅を取りたいなら運行路線

平均路線にも、機能としてはあります。 以下のリクエストで取得することができます。

$ curl "https://api.ekispert.jp/v1/xml/station?key=アクセスキー&railName=JR京浜東北・根岸線快速"

上記のリクエストの場合、京浜東北線なので、有楽町駅が出てくるのが期待するところですよね?でも、有楽町駅は出てきません。

上で、平均路線は、お昼の列車の運行パターンから作られている、と説明しました。 お昼の時間帯、京浜東北線は快速しかありません。つまり、各停でしか止まらない有楽町駅は出てこないです。

路線に紐付く駅を取得したいなら、運行路線を利用することをオススメします。

運行路線に紐付く駅は以下のリクエストで取得することができます。

$ curl "https://api.ekispert.jp/v1/xml/station?key=アクセスキー&operationLineCode=115"   # JR京浜東北線の運行路線コードは115

コードで管理できるのは運行路線

駅にしろ路線にしろ、コードで扱えた方が便利ですね。 名称だと、名称変更があった時に面倒です。

平均路線は名称のみで、コードがありません。 運行路線は名称とコードが存在します。

経路探索時に路線固定したい場合は平均路線

駅すぱあとには、平均待ち時間探索 と言う、主に定期経路を探索する際に利用される探索方法があります。

平均待ち時間探索時に、経路を忠実に再現させるために、fixedRailListというパラメータを利用して、経路探索を行うことができます。 fixedRailListパラメータは、平均路線を列挙して値を作ります。

運行路線は対応していません。

経路探索時に不通路線固定したい場合は平均路線

上の逆ですね。 通りたくない路線を指定する際に、interruptRailListというパラメータを利用して経路探索を行うことができます。 interruptRailListパラメータは、平均路線を列挙して値を作ります。

運行路線は対応していません。

鉄道以外を扱いたい場合は平均路線

平均路線は、鉄道、バス、空路、航路、全ての交通種別に対応しています。

運行路線は、鉄道のみです。

定期控除を行う場合は平均路線

定期控除の方法は、こちらのページ( 定期券利用時の運賃計算 - 駅すぱあとWebサービス Documents 駅データ・路線検索のWebAPI) で詳しく説明しています。

見てもらうと分かりますが、運行路線ではなく平均路線が使われていますね。

路線を列挙したい場合はどっちかと言うと運行路線

不動産サイトや求人情報サイトなどでよく見る、「駅・路線から探す!」の機能で路線が列挙されていますよね。 その路線は、平均路線と運行路線、どちらから取るのが良いかと言われたら、回答としては「どっちかと言うと運行路線」となります。 それは、以下のリストを見ればお判りいただけるかと思います。

京王電鉄の場合(平均路線)

平均路線を京王電鉄で絞り込んだ結果は以下になります。

$ curl "https://api.ekispert.jp/v1/xml/rail?key=アクセスキー&corporationName=京王電鉄"
京王井の頭線
京王井の頭線急行
京王競馬場線
京王相模原線
京王相模原線準特急
京王新線
京王線
京王線快速
京王線急行
京王線区間急行
京王線準特急
京王線特急
京王線特急(新宿-橋本)
京王高尾線
京王動物園線

準特急、快速や急行などは、「駅・路線から探す!」にはいらないですよね。 なので平均路線は使えなさそうです。

京王電鉄の場合(運行路線)

運行路線を京王電鉄で絞り込んだ結果は以下になります。

$ curl "https://api.ekispert.jp/v1/xml/operationLine?key=アクセスキー&corporationName=京王電鉄"
京王線
京王新線
京王相模原線
京王競馬場線
京王動物園線
京王高尾線
京王井の頭線

平均路線と比較すると、かなりスッキリしました。 これくらいなら使えるかなーレベルには到達したように見えますが・・。

山手線の場合(運行路線)

運行路線でJR山手線で検索した結果は以下になります。

$ curl "https://api.ekispert.jp/v1/xml/operationLine?key=アクセスキー&name=JR山手線"
JR山手線内回り
JR山手線外回り

なんということでしょう。JR山手線一つでいいのに、内回り外回りでご丁寧に分かれてしまっています。

このように、「駅・路線から探す!」を実現したい場合には、運行路線でも今ひとつ・・という感じです。

まとめ

平均路線で出来ること 運行路線で出来ること
長期的な利用に向いている ×
路線に紐付く駅を取る ×
路線をコードで管理 ×
経路探索時に路線固定したい ×
経路探索時に不通路線固定したい ×
鉄道以外も扱う ×
定期控除を行う ×
路線を列挙したい ×

比較してみると、平均路線と運行路線は、同じくらいできることとできないことがあると言うことが分かりました。 なのでこの場合は平均路線、この場合は運行路線・・と、 場合によって使い分けしていただく形になります。

平均路線と運行路線の歴史

なんで、平均路線と運行路線が存在しているのか?

何が違うのか?

なんで二つあるのか?

それらを紐解くために、駅すぱあとの歴史をご紹介しながら解説していきます。


むかしむかし、駅すぱあとにまだ"ダイヤ探索"という概念すらない時代のころ。

経路探索時に内部でアクセスするコードとして、平均路線が誕生したのぢゃ。

長らく、探索時に内部で利用されていただけの平均路線だったが、のちに『路線から駅を引きたい』『路線を縛って探索したい』など・・・路線をコードとして利用するための値としても使われるようになったのぢゃ。

つまり、平均路線は、駅すぱあと内部コードでもあり、外部コードでもあるのぢゃ。

しかし時間が経つにつれ、内部コードと外部コードを兼用することが難しくなってきたのぢゃ。

やっぱり、外部コードとしての路線を、新しく定義した方が色々便利なんじゃないか?

平均路線から移行するのに時間はかかりそうだけど、もう平均路線だけでまかないきれないんじゃないか?

そこで誕生したのが運行路線なのぢゃ。

めでたし、めでたし。


色々デフォルメしましたが、歴史的背景から平均路線と運行路線が共存していることが、これでなんとなくお判りいただけたんじゃないでしょうか。

僅差で平均路線の方が出来ることが多い?でも今後は運行路線がメインに

平均路線は昔からあるので、定期券の控除、路線の固定、など・・様々な機能で使われています。

運行路線は、今の所、コードで扱うことができる、くらいしか利点はないです。 ですが、今後は運行路線でできることを増やしてく方針です。

例えば定期控除です。定期控除の方法は、こちらのページ( 定期券利用時の運賃計算 - 駅すぱあとWebサービス Documents 駅データ・路線検索のWebAPI) で紹介していますが、控除する経路を、駅名、平均路線名の羅列で表現するため、名称が変更されるたびに使えなくなってしまいますので、実装するアプリケーションで何らかの処理(毎回文字列を生成するとか、駅すぱあとのデータ更新の度に洗い替えたり)を組み込む必要があります。 運行路線を使用した新たな定期控除機能を提供することができれば、アプリケーション側の負担が減ることは確実です。

また、鉄道の運行情報に運行路線を紐づけることができれば、経路探索結果に運行情報を表示することや、駅すぱあと路線図と連携させて路線図上に運行情報を可視化させることができるようになります。

終わりに

今は平均路線と運行路線がどっちつかずの状態になっているのが現状です。 ゆくゆくは運行路線をベースにより便利な機能を提供できるようにしていく予定です。今後をお楽しみに😃