拡張機能

拡張機能

新機能を簡単にテストできるようにするため、またデベロッパーが GTFS リアルタイム フィードに情報を追加できるようにするため、この仕様ではプロトコル バッファの拡張機能を利用しています。この拡張機能では、プロトコル バッファのメッセージに名前空間を定義して、元のプロトコル定義を変更することなくサードパーティ デベロッパーが追加のフィールドを定義できるようになっています。

デベロッパーが GTFS リアルタイム仕様を拡張しようとする場合、GTFS リアルタイム メーリング リストに問い合わせる必要があります。デベロッパーには次に利用可能な拡張 ID が割り当てられます。この ID は、1000 から始まり 1 ずつ増える数のリスト(この後の「拡張の登録」セクションに掲載)から選択されます。

こうして割り当てられる拡張 ID は、GTFS リアルタイムの個々のメッセージ定義で使用する extension 名前空間で利用できるタグ ID に対応します。拡張 ID が割り当てられたデベロッパーは、GTFS リアルタイムのどのメッセージを拡張するときもその ID を使用します。1 つのメッセージだけを拡張しようとする場合でも、割り当てられた拡張 ID はすべてのメッセージに対して使用できます。

デベロッパーが仕様を拡張する場合、拡張 ID を使って stringint32 のようなフィールドを 1 つ追加する代わりに推奨される方法があります。それは、新しいメッセージ(たとえば MyTripDescriptorExtension)を定義し、基になる GTFS リアルタイム メッセージをその新しいメッセージで拡張して、新しいフィールドをすべてそこに加えるというものです。この方法は、メインのリストから新しい ID を確保する必要がなく、必要に応じて拡張したメッセージの中で複数のフィールドを管理することができるという便利な特性を持っています。

message MyTripDescriptorExtension {
  optional string some_string = 1;
  optional bool some_bool = 2;
  ...
}
extend transit_realtime.TripDescriptor {
  optional MyTripDescriptorExtension my_trip_descriptor = YOUR_EXTENSION_ID;
}

拡張の登録

拡張 ID デベロッパー 連絡先 詳細
1000 OneBusAway onebusaway-developers https://github.com/OneBusAway/onebusaway/wiki/GTFS-Realtime-Resources
1001 ニューヨーク市 MTA mtadeveloperresources http://mta.info/developers/
1002 Google transit-realtime-partner-support@google.com Google マップのリアルタイムの運行情報
1003 OVapi gtfs-rt at ovapi.nl http://gtfs.ovapi.nl
1004 Metra William Ashbaugh w.l.ashbaugh@gmail.com
1005 Metro-North Railroad John Larsen
1006 realCity David Varga http://realcity.io
1007 NSW TrainLink Gregory Nicholls Google グループ ディスカッション
1008 SEPTA - 南東ペンシルベニア交通局 Gregory Apessos https://github.com/septadev
1009 Swiftly mike@goswift.ly Google グループ ディスカッション
1010 IBI Group Ritesh Warade GitHub のサービス アラートの新しいタイムスタンプに関する提案