コードサンプルの概要

GTFS リアルタイムのデータは、プロトコル バッファを使用してエンコードとデコードを行います。プロトコル バッファは、構造化データをコンパクトなバイナリ表現に変換して、高速かつ効率的な処理を可能にするメカニズムです。この記事では、バイナリデータの生成およびパースの方法について説明し、参考となるコードサンプルを紹介します。

言語バインディング

GTFS リアルタイム データを扱うデベロッパーは、通常 gtfs-realtime.proto スキーマを使用して、任意のプログラミング言語でクラスを生成します。その後、その生成したクラスを使用して、GTFS リアルタイム データのモデル オブジェクトを構築し、バイナリデータとしてシリアル化します。あるいは逆に、バイナリデータをパースして、モデル オブジェクトに変換することもできます。

gtfs-realtime.proto スキーマから GTFS リアルタイム データのモデルクラスを生成する作業はそれほど複雑なものではありませんが、初めて行うデベロッパーは難しく感じる場合があります。そのため Google では、主なプログラミング言語の GTFS リアルタイム言語バインディングをあらかじめ生成し、オープンソースの gtfs-realtime-bindings プロジェクトで提供しています。

GTFS リアルタイム データのパースについては、各言語向けに提供されている詳細情報をご確認ください。

その他の言語

Google では、あるプログラミング言語の(a)デベロッパーが GTFS リアルタイムを使用したいと思っており、(b)コードを簡単に再利用できるパッケージングのメカニズムが存在する場合、その言語向けの言語バインディングを提供しています。

使用したいと思う言語のバインディングが提供されていない場合は、次のいずれかの方法をお選びください。

  1. gtfs-realtime-bindings プロジェクトのページでイシューを作成し、言語の追加をリクエストする
  2. 独自のプロトコル バッファ バインディングを生成する(サードパーティ製アドオンを使用するなど)