拡張機能
新機能を簡単にテストできるようにするため、またデベロッパーが GTFS リアルタイム フィードに情報を追加できるようにするため、この仕様ではプロトコル バッファの拡張機能を利用しています。この拡張機能では、プロトコル バッファのメッセージに名前空間を定義して、元のプロトコル定義を変更することなくサードパーティ デベロッパーが追加のフィールドを定義できるようになっています。
デベロッパーが GTFS リアルタイム仕様を拡張しようとする場合、GTFS リアルタイム メーリング リストに問い合わせる必要があります。デベロッパーには次に利用可能な拡張 ID が割り当てられます。この ID は、1000 から始まり 1 ずつ増える数のリスト(この後の「拡張の登録」セクションに掲載)から選択されます。
こうして割り当てられる拡張 ID は、GTFS リアルタイムの個々のメッセージ定義で使用する extension
名前空間で利用できるタグ ID に対応します。拡張 ID が割り当てられたデベロッパーは、GTFS リアルタイムのどのメッセージを拡張するときもその ID を使用します。1 つのメッセージだけを拡張しようとする場合でも、割り当てられた拡張 ID はすべてのメッセージに対して使用できます。
デベロッパーが仕様を拡張する場合、拡張 ID を使って string
や int32
のようなフィールドを 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 | 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 のサービス アラートの新しいタイムスタンプに関する提案 |