🚉
路線・駅情報の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ぐらいで返ってきます。Wi-Fiを使っているので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