GTFS(General Transit Feed Specification)データを使用して、バスの到着時刻を予測する RESTful API サービスです。
このプロジェクトは三重交通のバス運行データを参考にしています。GTFS データは三重交通の運行スケジュールに基づいて作成されています。
- 言語: TypeScript
- ランタイム: Node.js
- フレームワーク: Express.js
- データ形式:
- GTFS(静的データ)
- GTFS-Realtime(リアルタイムデータ)
- パッケージ:
csv-parse
: GTFS 静的データのパースgtfs-realtime-bindings
: GTFS-Realtime データのパースexpress
: Web API フレームワーク
- GTFS 静的データの読み込みと管理
- GTFS-Realtime データの定期的な取得と更新
- バス停ごとの到着予測
- リアルタイムの遅延情報の反映
- RESTful API による予測情報の提供
- ベース URL:
http://localhost:3000/api/v1
- レスポンス形式: JSON
- 文字コード: UTF-8
GET /stops/{stop_id}/arrivals
パラメータ名 | 型 | 必須 | 説明 |
---|---|---|---|
stop_id | string | 必須 | バス停 ID(例: "5803_1") |
パラメータ名 | 型 | 必須 | デフォルト値 | 説明 |
---|---|---|---|---|
limit | number | 任意 | 5 | 取得する予測件数(1 以上の整数) |
{
"stop_id": "5803_1",
"current_time": "2024-03-21T12:34:56.789Z",
"predictions": [
{
"route_name": "25",
"destination": "つつじが丘南八番町",
"scheduled_arrival_time": "12:40:00",
"predicted_arrival_time": "12:40:00",
"remaining_time": "あと5分",
"delay": 0,
"is_realtime": true,
"vehicle_id": "30"
}
]
}
フィールド名 | 型 | 説明 |
---|---|---|
stop_id | string | バス停 ID |
current_time | string | 現在時刻(ISO 8601 形式) |
predictions | array | 到着予測の配列 |
predictions[].route_name | string | 路線名 |
predictions[].destination | string | 行先 |
predictions[].scheduled_arrival_time | string | 予定到着時刻(HH:mm:ss 形式) |
predictions[].predicted_arrival_time | string | 予測到着時刻(HH:mm:ss 形式) |
predictions[].remaining_time | string | 残り時間(日本語表記) |
predictions[].delay | number | 遅延時間(秒) |
predictions[].is_realtime | boolean | リアルタイム情報の有無 |
predictions[].vehicle_id | string | 車両 ID(リアルタイム情報がある場合のみ) |
{
"error": "Not Found",
"message": "Bus stop ID 9999 does not exist"
}
コード | 説明 |
---|---|
200 | 成功 |
400 | 不正なリクエスト(パラメータエラー) |
404 | バス停が見つからない |
500 | サーバーエラー |
# 基本的なリクエスト
curl http://localhost:3000/api/v1/stops/5803_1/arrivals
# limitパラメータを指定
curl http://localhost:3000/api/v1/stops/5803_1/arrivals?limit=3
- リアルタイムデータは定期的に更新されます(現在は 30 秒間隔)
- 予測時刻は現在時刻から 24 時間以内の便のみを返します
- 遅延情報はリアルタイムデータが利用可能な場合のみ反映されます
- リポジトリのクローン
git clone [repository-url]
cd bus_time
- 依存パッケージのインストール
npm install
- 開発サーバーの起動
npx ts-node src/server.ts
src/
├── config/ # 設定ファイル
├── controllers/ # APIコントローラ
├── routes/ # ルーティング
├── services/ # ビジネスロジック
├── types/ # 型定義
└── test/ # テストコード