🚉
路線・駅情報のREST API開発と公開
路線・駅情報のREST APIサービス開発と公開
はじめに
こんにちは。私は鉄道と技術が大好きなエンジニアです。
この2つの情熱を組み合わせてAPIサービスを開発しました。
サービス概要
「路線・駅情報のREST API」は以下のURLで公開しています:
このAPIは、以下の主な機能を提供します:
- 特定の路線の全停車駅リストの取得
- 路線の停車駅
- 特定の駅の詳細情報
技術スタック
このサービスは以下の技術スタックを使用して開発されています:
- バックエンド: Ruby on Rails
- データベース: MySQL 8.4
- ホスティング: 自宅サーバ + Cloudflare
API使用例
1. 山手線の全停車駅リストを取得する
❯ curl -s 'https://train.teraren.com/lines/11302/stations.json' | jq '.[].station_name'
"大崎"
"五反田"
"目黒"
"恵比寿"
"渋谷"
"原宿"
"代々木"
"新宿"
"新大久保"
"高田馬場"
"目白"
"池袋"
"大塚"
"巣鴨"
"駒込"
"田端"
"西日暮里"
"日暮里"
"鶯谷"
"上野"
"御徒町"
"秋葉原"
"神田"
"東京"
"有楽町"
"新橋"
"浜松町"
"田町"
"高輪ゲートウェイ"
"品川"
2. 東京タワーから近い駅を取得する
❯ curl -s 'https://train.teraren.com/stations/near_by_stations.json?lon=139.7454329&lat=35.6585805&limit=5' | jq
[
{
"station_cd": 9930122,
"station_name": "赤羽橋",
"station_g_cd": 9930122,
"distance": 0.42903606641634495
},
{
"station_cd": 2800317,
"station_name": "神谷町",
"station_g_cd": 2800317,
"distance": 0.49008364939314947
},
{
"station_cd": 9930306,
"station_name": "御成門",
"station_g_cd": 9930306,
"distance": 0.6242921448435772
},
{
"station_cd": 9930305,
"station_name": "芝公園",
"station_g_cd": 9930305,
"distance": 0.6391377203522578
},
{
"station_cd": 9930121,
"station_name": "大門",
"station_g_cd": 9930121,
"distance": 0.8572190503449685
}
]
検索速度
GETリクエストはCDNに入るのでリモートからベンチマークを取得するのが難しいです。
CDNにキャッシュされていない問い合わせで100msぐらいで返ってきます。WiFiを使っているので10ms程度はロスしていると思います。
❯ time curl -s 'https://train.teraren.com/stations/near_by_stations.json?lon=138.754&lat=35.68&limit=5' | jq
[
{
"station_cd": 1131124,
"station_name": "勝沼ぶどう郷",
"station_g_cd": 1131124,
"distance": 1.260601057731234
},
{
"station_cd": 1131125,
"station_name": "塩山",
"station_g_cd": 1131125,
"distance": 3.307396894029273
},
{
"station_cd": 1131126,
"station_name": "東山梨",
"station_g_cd": 1131126,
"distance": 4.871013008643865
},
{
"station_cd": 1131123,
"station_name": "甲斐大和",
"station_g_cd": 1131123,
"distance": 5.162276817888356
},
{
"station_cd": 1131127,
"station_name": "山梨市",
"station_g_cd": 1131127,
"distance": 6.436090680301475
}
]
________________________________________________________
Executed in 94.13 millis fish external
usr time 10.79 millis 0.12 millis 10.68 millis
sys time 7.64 millis 1.38 millis 6.26 millis
CDNに入っていれば60ms程度で返却されます。
おわりに
このAPIは、鉄道ファンの方々や、鉄道情報を利用したアプリケーションの開発者の方々に楽しんでいただけると嬉しいです。ぜひ使ってみてください!
フィードバックやご要望があれば、コメントやDiscordにお寄せください。みなさまのご意見を参考に、さらに便利なサービスに成長させていきたいと思います。
Discussion