メインコンテンツまでスキップ

イベント仕様

ユーザー(例:乗客)および モビリティ(例:バス)ユニットの状態変化は、イベントとして記録されます。

すべてのイベントは JSON Lines 形式で出力され、**1 行が 1 つのイベント(JSON)**に対応します。
これらのイベントは、シミュレーションの時間軸に沿って時系列順に処理・記録されます。

共通イベント構造

すべてのイベントは、以下のフィールドを持ちます。

フィールド説明
eventTypestringイベントの種類
timenumberイベントが発生したシミュレーション時刻
sourcestring または nullイベントを生成したコンポーネント
detailsobjectイベント固有の追加情報

イベント種別

各イベントに含まれる eventType フィールドの値は、以下の 6 種類のいずれかでなければなりません。

種別説明
DEMANDユーザーが移動する需要が生成されたことを示します。
RESERVE需要に対して予約要求が行われたことを示します。
RESERVED予約要求が受理されたか、拒否されたかを示します。
DEPART出発が予定または確定したことを示します。
DEPARTEDユーザーまたはモビリティユニットが出発地を離れたことを示します。
ARRIVEDユーザーまたはモビリティユニットが目的地に到着したことを示します。

これらの種類のイベントを組み合わせることで、ユーザーとモビリティのライフサイクルを表現します。

Location オブジェクト

Location は、地理的な地点を表すためにイベント内で共通して使用されます。

フィールド説明
locationIdstringロケーション識別子
latnumber緯度
lngnumber経度

Trip オブジェクト

Trip は、予約された経路の一部であり、特定のモビリティサービスによる 単一の移動区間を表します。
1 つの経路は、1 つ以上の Trip オブジェクトから構成されます。

フィールド必須説明
orgLocation必須区間の出発地
dstLocation必須区間の到着地
deptnumber必須出発予定時刻
arrvnumber必須到着予定時刻
servicestring必須この区間に割り当てられたモビリティサービス

Demand イベント

DEMAND イベントは、ユーザーが出発地から目的地への移動要求を作成したことを示します。
要求されたスケジュールの種類に応じて、dept または arrvどちらか一方のみが null になります。

  • 出発時刻指定(Leave-at):dept が設定され、arrv は null
  • 到着時刻指定(Arrive-by):arrv が設定され、dept は null
フィールド必須説明
userIdstring必須移動需要を作成したユーザーの ID
demandIdstring必須この移動需要の ID
orgLocation必須出発地
dstLocation必須到着地
servicestring任意特定のサービスに需要を紐付けるために使用される値(ユーザーモデル用)
deptnumber または null任意希望出発時刻
arrvnumber または null任意希望到着時刻

Demand イベント例

{
"eventType": "DEMAND",
"time": 120.5,
"details": {
"userId": "user-001",
"demandId": "dmd-001",
"org": { "locationId": "A", "lat": 35.0, "lng": 135.0 },
"dst": { "locationId": "B", "lat": 35.1, "lng": 135.1 },
"dept": 130.0,
"arrv": null
}
}

このイベントは次のことを意味します。

シミュレーション時刻 120.5 に、ユーザー user-001 によって ID dmd-001 の移動需要が生成された。 ユーザーは地点 A から地点 B への移動を希望しており、出発希望時刻は 130.0 である。

Reserve Event

RESERVE イベントは、ユーザーが予約を要求したことを示します。 DEMAND イベントを受信した後、ユーザーモデルコンポーネントは候補となる移動プランを評価し、 その中から 1 つのプランを予約する意思を表すために RESERVE イベントを発行します。

RESERVE イベントは、モビリティサービスによって予約が受理されたことを保証するものではありません。 これはあくまでユーザー主導のリクエストを表すものであり、 実際に予約が確定するか否かは、サービスの空き状況などに応じて後続の処理で判断されます。

フィールド定義

Field / SubfieldTypeRequiredDescription
servicestringRequiredユーザーが予約を試みているモビリティサービスの名称
details.userIdstringRequired予約リクエストを行ったユーザーの ID
details.demandIdstringRequiredこの予約リクエストに対応する移動需要の ID
details.orgobjectRequired要求された移動の出発地
details.dstobjectRequired要求された移動の目的地
details.deptnumberRequired希望出発時刻
details.arrvnumberOptional希望到着時刻(到着時刻指定型の需要の場合)

Reserve Event Example

{
"eventType": "RESERVE",
"time": 121.0,
"service": "service-001",
"details": {
"userId": "user-001",
"demandId": "dmd-001",
"org": { "locationId": "A", "lat": 35.0, "lng": 135.0 },
"dst": { "locationId": "B", "lat": 35.1, "lng": 135.1 },
"dept": 130.0
}
}

このイベントは次のことを意味します。

シミュレーション時刻 121.0 に、ユーザー user-001 が モビリティサービス service-001 に対して、移動需要 dmd-001 の予約をリクエストした。 この移動は地点 A から地点 B へのもので、出発希望時刻は 130.0 である。

Reserved イベント

RESERVED イベントは、予約要求が成功したかどうかを表します。 予約が成功した場合は、割り当てられた経路を含みます。

フィールド定義

フィールド必須説明
successboolean必須予約が受理されたかどうかを示す
userIdstring必須予約リクエストを行ったユーザーの ID
demandIdstring必須この予約に対応する移動需要の ID
routeTrip の配列必須割り当てられた経路。各要素は、出発地・目的地・出発時刻・到着時刻・サービスを含む移動区間を表す

Reserved イベントの例(予約成功時)

{
"eventType": "RESERVED",
"time": 121.5,
"details": {
"success": true,
"userId": "user-001",
"demandId": "dmd-001",
"route": [
{
"org": { "locationId": "A", "lat": 35.0, "lng": 135.0 },
"dst": { "locationId": "B", "lat": 35.1, "lng": 135.1 },
"dept": 130.0,
"arrv": 150.0,
"service": "service-001"
}
]
}
}

このイベントは次のことを意味します。

シミュレーション時刻 121.5 に、ユーザー user-001 による移動需要 dmd-001 の予約リクエストが受理された。 割り当てられたルートでは、モビリティサービス service-001 を利用し、地点 A130.0 に出発し、地点 B150.0 に到着する。

Depart イベント

DEPART イベントは、すでに予約が受理されているユーザーが、実際に出発地点へ到着し、割り当てられたモビリティサービスを利用して移動できる状態になったことを示します。

予約が確定していても、ユーザーが必ず出発地点に現れるとは限りません。
遅延やキャンセルなどの要因により、ピックアップ地点に到達できない場合もあります。
そのため、DEPART イベントによってユーザーが出発地点に到着したことをモビリティサービスに伝える必要があります。

もし、ユーザーが出発地点に到着しなかった場合、DEPART イベントは生成されません。その場合の扱いは、各モビリティシミュレータに委ねられます。

フィールド定義

フィールド / サブフィールド必須説明
servicestring必須ユーザーが利用するモビリティサービスの ID
details.userIdstring必須出発準備が完了したユーザーの ID
details.demandIdstring必須この出発に対応する移動需要の ID

Depart イベントの例

{
"eventType": "DEPART",
"time": 130.0,
"service": "service-001",
"details": {
"userId": "user-001",
"demandId": "dmd-001"
}
}

このイベントは次のことを意味します。

シミュレーション時刻 130.0 に、ユーザー user-001 による移動需要 dmd-001 の出発が、 モビリティサービス service-001 上で可能となったことを示している。

Departed イベント

DEPARTED イベントは、ユーザーまたはモビリティユニットが、ある地点から出発したことを示します。

このイベントには次の 2 つのバリエーションがあります。

  • ユーザー出発:ユーザーユニットが出発地を離れたことを示す
  • モビリティ出発:モビリティユニットがある地点を出発したことを示す

フィールド定義

フィールド必須説明
locationLocation必須出発地点
userIdstring任意ユーザーの ID
demandIdstring任意移動需要の ID
mobilityIdstring任意モビリティユニットの ID

ユーザー出発イベントの例

{
"eventType": "DEPARTED",
"time": 130.0,
"details": {
"userId": "user-001",
"demandId": "dmd-001",
"location": { "locationId": "A", "lat": 35.0, "lng": 135.0 }
}
}

これは次のことを意味します。

シミュレーション時刻 130.0 に、ユーザー user-001 は移動需要 dmd-001 に基づき、地点 A から実際に出発した。

モビリティ出発イベントの例

{
"eventType": "DEPARTED",
"time": 128.0,
"details": {
"mobilityId": "mob-001",
"location": { "locationId": "A", "lat": 35.0, "lng": 135.0 }
}
}

これは次のことを意味します。

シミュレーション時刻 128.0 に、モビリティユニット mob-001 が地点 A から出発した。

Arrived イベント

ARRIVED イベントは、ユーザーまたはモビリティユニットが、ある地点に到着したことを示します。

このイベントには次の 2 つのバリエーションがあります。

  • ユーザー到着:ユーザーが目的地に到達したことを示す
  • モビリティ到着:モビリティユニットがある地点に到着したことを示す

フィールド定義

フィールド必須説明
locationLocation必須到着地点
userIdstring任意ユーザーの ID
demandIdstring任意移動需要の ID
mobilityIdstring任意モビリティユニットの ID

ユーザー到着イベントの例

{
"eventType": "ARRIVED",
"time": 150.0,
"details": {
"userId": "user-001",
"demandId": "dmd-001",
"location": { "locationId": "B", "lat": 35.1, "lng": 135.1 }
}
}

これは次のことを意味します。

シミュレーション時刻 150.0 に、ユーザー user-001 は移動需要 dmd-001 に基づき、地点 B に到着した。

モビリティ到着イベントの例

{
"eventType": "ARRIVED",
"time": 145.0,
"details": {
"mobilityId": "mob-001",
"location": { "locationId": "C", "lat": 35.2, "lng": 135.2 }
}
}

これは次のことを意味します。

シミュレーション時刻 145.0 に、モビリティユニット mob-001 が地点 C に到着した。