コンテンツにスキップ

Ruby GTFS-realtime 言語バインディング

Gem Version

GTFS-realtime Protocol Buffer 仕様から生成された Ruby クラスを提供します。これらのクラスを使用することで、バイナリ形式の Protocol Buffer GTFS-realtime データフィードを Ruby オブジェクトに変換して解析することができます。

非推奨

2019年2月時点で、公式の google-protobuf Google protoc ツールは proto2 ファイルにおける 拡張機能をサポートしていません。サードパーティ製ツールである ruby-protocol-buffersgem install ruby-protocol-buffers でインストールすることは可能ですが、ユニットテストが失敗するため、既存の Ruby GTFS-rt バインディングの構造とは一致しないようです。その結果、Google の protocol buffer ツールで proto2 ファイルの公式サポートが実装されるまで、Ruby バインディングは非推奨とします。

依存関係の追加

自身のプロジェクトで gtfs-realtime-bindings クラスを使用するには、まず Ruby gem をインストールする必要があります。

gem install gtfs-realtime-bindings

コード例

以下のコードスニペットは、特定のURLからGTFS-realtimeデータフィードをダウンロードし、それをGTFS-realtimeスキーマのルート型であるFeedMessageとしてパースし、結果を反復処理する方法を示しています。

require 'protobuf'
require 'google/transit/gtfs-realtime.pb'
require 'net/http'
require 'uri'

data = Net::HTTP.get(URI.parse("URL OF YOUR GTFS-REALTIME SOURCE GOES HERE"))
feed = Transit_realtime::FeedMessage.decode(data)
for entity in feed.entity do
  if entity.field?(:trip_update)
    p entity.trip_update
  end
end

Rubyクラスの命名規則に関する詳細については、gtfs-realtime.proto から生成された gtfs-realtime.pb.rb ソースファイル を参照してください。