オンデマンドの移動

このドキュメントでは、Fleet Engine のオンデマンド走行サービスについて説明します。ここでは、Fleet Engine とはを読み、必要な Fleet Engine サービス機能を把握していることを前提としています。

このドキュメントを読む際は、次の点に注意してください。

  • ルートと、そのルートを完了したドライバーとの間の現実世界の関連付けをモデル化するために、ルートを車両に割り当てます。Fleet Engine における車両の仕組みについて詳しくは、車両の概要をご覧ください。
  • このドキュメントでは、オンデマンドのルートにのみ適用される車両の要素についても説明します。
  • オンデマンドルート用の Fleet Engine は、TripVehicle の 2 つのリソースを使用します。Fleet Engine は、gRPC サービスと REST インターフェースの両方を提供します。
    • TripService: gRPCREST
    • VehicleService: gRPCREST
    • わかりやすくするため、このマニュアルでは gRPC の例を使用しています。

オンデマンド旅行とは何ですか?

Fleet Engine におけるルートは、さまざまな輸送の目標を達成できるオンデマンドの旅程を表します。次に例を示します。

  • : 1 人以上の人を乗車場所から持ち込み場所まで輸送します。
  • 食品、商品: 特定のビジネス拠点で料理の注文を受け取り、その注文を 1 人以上の受取人に受け取ります。

ルートの要素

次の図は、ルートの基本要素(割り当てられた車両 ID、ルートのステータス、ルートの地点)を示しています。地点の種類は、乗車、中間、降車などの段階によって異なります。どのルートでも、中間の目的地や地点は省略可能です。この画像の例では 車両が乗車場所に到着し

ルートのデータモデル

バックエンドは車両にルートを割り当てる際に、その車両にスケジュールされている他のルートも把握する必要があります。そのため、次の図では、Trip リソースのデータモデルと、関連する Vehicle リソースの図を示します。以下の点に注意して、両方の図を確認することで 2 つのリソースの関係を確認できます。

  • ルートは ID によって車両に割り当てられます
  • ルートと車両の関連付けが多対 1 である。つまり、特定のルートが車両を運航している唯一のルートである場合もあれば、多数のルートの一つである場合もあります。
  • ルート オブジェクトにはルートの地点の 2 つのリストが含まれています。1 つはルート自体用、もう 1 つは割り当てられている車両用です。これについては、このドキュメントで詳しく説明します。
  • オンデマンド車両にはルートの地点のリストもあります。詳しくは、このドキュメントをご覧ください。

ルートデータモデル

車両データモデル

旅行のタイプ

サービスでルートを作成するときに、tripType フィールドを EXCLUSIVE または SHARED のいずれかに設定できます。

限定旅行

排他的なルートとは、他のルートと重複しないルートと、車両が運航スケジュールの他のルートよりも前または後に完結するルートのことです。つまり、システムが排他的なルートを割り当てる際、一度にではなく、順番に完了する車両にのみ割り当てることができます。たとえば、次のような特徴を持つ排他的なルートを作成するとします。

  • 1 つの車両を 1 回の乗車と 1 回の降車で運行し、他の運行スケジュールにない。
  • 特定の車両を乗車、中間地点、降車地点とするルートで、他のルートは運行スケジュールにまったく登録されていないもの。
  • 車両のスケジュール設定済みのルートの最後に、乗車場所と降車場所が追加されているルート。この場合、各ルートは互いに排他的になりますが、ルートは連続して並べられます。また、そのようなルートには、必要に応じて中間目的地を含めることができます。

共有したルート

共有ルートとは、そのルートが他のルート案内と重複する可能性のあるルートのことです。このようなルートタイプについては、インターリーブの目的地と同時に発生するようにシステムを割り当てることができます。たとえば、あるルートで降車が、別のルートの乗車後に発生する場合があります。また、共有ルートでは中間地点を使用できません。

一般的には、移動シナリオセクションに示す共有プールのシナリオのいずれかで、共有ルートを使用します。

ルートの地点

Google マップの場合、ウェイポイントとは経路上の場所を指し、通常は緯度と経度の座標によって定義されます。オンデマンドルートの場合、地点は TripWaypoint オブジェクトで表されます。このオブジェクトには、次のような追加情報が含まれます。

  • ルート ID
  • WaypointType(乗車、中継、降車のいずれか)
  • 前のルートの地点と現在の地点間の経路と距離の情報
  • 地点までの経路の交通状況
  • 地点までの移動時間と到着予定時刻

以下のリファレンスをご覧ください。

ルートの地点の種類

ルートの地点は、車両の移動の一般的なライフサイクルに基づいて定義されます。

  • 乗車地点 - ルートの出発地または始点に使用されます。たとえば、ドライバーが配達のために注文した料理を受け取る場合や、後の配達のために人を集荷する場合などです。
  • 中間地点 - さまざまな目的に使用できる中間の目的地です。たとえば、ドライバーが同じ予約客 1 人で降りて、より多くの乗客が残っているため、ルート自体は完了していない場合などです。この地点は省略可能で、独占的なルートでのみ使用できます。
  • 降車地点 - 旅程の最終的な場所(残りの乗客が車両を降りるときなど)に使用されます。

ルートの地点のリスト

Trip エンティティには 2 つの地点のリストが含まれます。各地点は TripWaypoint 型の繰り返しフィールドです。1 つはルート自体に必要なフィールドを記述し、もう 1 つはルートに関連付けられた車両に残っているすべてのウェイポイントを記述するリストです。これにより、移動から車両での移動全体に至るまで、ジャーニーのすべての要素の全体像を把握できます。

  • 車両の残りのウェイポイント - vehicle_waypoints というフィールド。これには、車両に割り当てられているすべてのルートの残りのすべての地点が含まれます。
  • ルートの残りの地点 - remaining_waypoints という名前のフィールド。ルートの最終降車地点の前に車両が順番に移動する必要がある地点が含まれています。移動のシナリオのシナリオを参照してください。
    • 車両に割り当てられ、運行スケジュールに他のルートがない車両が 1 つの目的地のルートの場合、車両が乗車地点から離れていないと仮定すると、これには乗車と降車場所のみが含まれます。
    • 車両が他のルートもスケジュールされている場合、そのルートの残りのウェイポイントには、そのルートの降車地点に到着する前に通過する必要がある他のルートのすべての地点が含まれます。たとえば、車両をルート A の降車地点とする連続したルートの場合、ルート B の残りの地点には、ルート A の降車地点が含まれます。Fleet Engine は、vehicle_waypoints フィールドを使用してこの情報を計算します。

Trip エンティティのリファレンス(gRPC または REST)をご覧ください。

移動のシナリオ

次の図は、サポートされるさまざまなルートのシナリオを示しています。これらのシナリオでは、共有プールルートのみのタイプが SHARED で、他はすべて EXCLUSIVE です。この図には、ルートのステータスと、ルートを実行する車両の残りの地点も示されています。コンセプトについては、このガイドで後述します。

1 つの目的地を含むルート

1 つの目的地を含むルートとは、乗車場所と降車場所がそれぞれ 1 か所ずつある EXCLUSIVE の旅です。たとえば、ドライバーがある場所から乗客を迎えに来て別の場所に移動させたり、ドライバーがレストランからフード デリバリーの注文を取り出して顧客に届ける場合などです。

複数の目的地の旅行

複数の目的地を含むルートとは、乗車場所と降車場所の間の 1 つ以上の中間目的地を含む EXCLUSIVE ルートのことです。たとえば、ライドシェアを利用する 3 人の顧客が、1 人の電話から一緒に配車を予約しますが、目的地はそれぞれ異なります。

連続したルート

連続したルートとは、連続して発生する一連の独立したルートを含む EXCLUSIVE のルートのことです。チェーン内の各ルートは、1 つの目的地または複数の目的地を指定できます。このシナリオでは、ドライバーは現在のルートを完了する前に別の顧客を迎えに行くことを約束します。

これらのルートは、連続したスケジュールが可能な車両にのみ割り当てることができます。Vehicle RESTgRPC リファレンスをご覧ください。

共有プール旅行

共有プール旅行は、他の旅行タイプとは異なります。まず、EXCLUSIVE ではなく SHARED のルートである必要があります。この場合、車両はルートを排他的なルートのように順番に実行するのではなく、複数のルートを同時に実行します。共通のプール旅行は、移動を他のルートと共有しますが、乗車場所と降車場所がルート間で共有されることはありません。各ルートは排他的な予約であるため、1 つのルートを予約したエンドユーザーは、そのルート以外のルートの乗車場所または目的地の情報を見ることはできません。次に例を示します。

  • 空港送迎サービスは、さまざまな顧客を自宅に迎え入れ、ルート上のさまざまな空港ターミナルに預けます。ユーザー 2 はコンシューマー アプリを使用してルートの進捗状況を追跡しますが、ユーザー 1 が乗車場所や降車する場所ではなく、ジャーニーの一部が重なっていたとしても、ユーザー 1 はユーザー ジャーニーの一部のみを表示します。
  • フード デリバリーのドライバーが、同じレストランから 3 件の料理の注文を受け取り、別の顧客の自宅に配達します。ユーザー 3 は、ユーザーアプリを使用して、食品が受け取られた場所と日時、およびドライバーのルートを確認できますが、1 人と 2 の人の食品の持ち込み場所は確認できません。

ルートの状況とライフサイクル

このセクションでは、走行状況と車両への影響、およびオンデマンドの配車を割り当てて管理する際に遭遇するさまざまなシナリオについて説明します。

通常、ルートは作成から完了まで、さまざまな状態になります。大まかに言うと、ルートはステータスに応じてアクティブまたは非アクティブになります。ルート状況は、Fleet Engine を使用したさまざまなユースケース シナリオだけでなく、旅程の車両の進行状況を特定する機能にも影響を与えます。このドキュメントの残りの部分では、これらのシナリオについて説明します。

次の表に、有効な種類と無効な種類ごとにルートのステータスを示します。

有効なルートのステータス 無効なルートのステータス
NEW
UNKNOWN_TRIP_STATUS
ENROUTE_TO_PICKUP
ARRIVED_AT_PICKUP
ENROUTE_TO_INTERMEDIATE_DESTINATION
ARRIVED_AT_INTERMEDIATE_DESTINATION
ENROUTE_TO_DROPOFF
COMPLETE
CANCELED

移動状況と残りの車両ウェイポイント

すでにルートを実行している車両に追加のルートを割り当てる場合は、その車両の残りのウェイポイントとの関係と、ルートステータスが残りのウェイポイントにどのように影響するかを理解する必要があります。

たとえば、限定ルートのみをサポートしている車両に新しいライドシェア リクエストを割り当て、移動を完了しているとします。この場合、連続したルートとしてルートを設定します。そのようなルートを割り当てる際は、新しいルートのウェイポイントが、進行中のルートのウェイポイントより後に来るようにする必要があります。

車両の移動中、Fleet Engine は車両が次の目的地に向かっている、または完了していると報告した場合にのみ、車両の残りのウェイポイントのリストから前のルートの地点を削除します。つまり、次のいずれかになります。

  • ENROUTE_TO_INTERMEDIATE_DESTINATION
  • ENROUTE_TO_DROPOFF
  • COMPLETED

ルート ステータスが COMPLETED に変わると、Fleet Engine は車両の残りのウェイポイント リストからルートの最終地点を削除します。

一方、ウェイポイントへの到着を示すステータスの変更は、通常、車両の残りのウェイポイントのリストには影響しません。

  • ARRIVED_AT_PICKUP
  • ARRIVED_AT_INTERMEDIATE_DESTINATION
  • ARRIVED_AT_DROPOFF

オンデマンド配車の例で説明します。ドライバーが自宅から顧客を迎えに来る場合、顧客がタスクを完了するのを待つ場所に移動した後、顧客を自宅に戻します。最初に作成されたルートには、PICKUPINTERMEDIATEDROPOFF の 3 つの地点があります。次の表は、行程のさまざまな状態にある残りの地点を照会した結果を示しています。

ルートの状況 残りのウェイポイント
ARRIVED_AT_PICKUP PICKUP
INTERMEDIATE
DROPOFF
ENROUTE_TO_INTERMEDIATE_DESTINATION PICKUP
INTERMEDIATE
DROPOFF
ARRIVED_AT_INTERMEDIATE_DESTINATION PICKUP
INTERMEDIATE
DROPOFF
ENROUTE_TO_DROPOFF PICKUP
INTERMEDIATE
DROPOFF
ARRIVED_AT_DROPOFF PICKUP
INTERMEDIATE
DROPOFF
COMPLETE PICKUP
INTERMEDIATE
DROPOFF

再割り当てまたはキャンセルされたルートのステータス要件

次の操作を行う前に、ルートのステータスを NEW または CANCELED に設定する必要があります。

  • ルートの車両割り当てを変更する場合たとえば、ドライバーがルートの車両割り当てを拒否し、別の車両に再割り当てする必要がある場合です。
  • ルートの車両割り当てをクリアする場合。たとえば、ドライバーがルート上のルートをキャンセルし、車両の割り当てをクリアする場合、ステータスは NEW または CANCELED である必要があります。

ルート状況に基づく検索結果

特定の車両で SearchTrips サービスを使用すると、SearchTripsResponse にアクティブなルートのリストが返されます。アクティブなルートは Vehicle エンティティの active_trips フィールドにも表示されます。詳細については、SearchTripsResponse リファレンス(gRPC または REST)をご覧ください。

そのため、ステータスが有効なルートはすべて active_trips フィールドに表示されますが、完了またはキャンセルされたルートは表示されません。

次のステップ