読者です 読者をやめる 読者になる 読者になる

Twiter のタイムラインを全件 Google BigQuery に放り込む

Twitter タイムラインの全件保存は人類共通の夢だと思う。

id:kksg さんの以下の記事を写経することによって夢を実現した。

BigQueryにTwitterのタイムラインを入れる [Ruby] - 9mのブログ

Twitter Application の作成 + Google BigQuery の初期設定を済ませて、以下の 2 箇所を埋めるだけで動いた。BigQuery の dataset は Google Developers Console から Project にクレカ情報を紐付けていないと立ちあげられない。

def client
  @client ||= Twitter::Streaming::Client.new do |config|
    config.consumer_key        = "YOUR_CONSUMER_KEY"
    config.consumer_secret     = "YOUR_CONSUMER_SECRET"
    config.access_token        = "YOUR_ACCESS_TOKEN"
    config.access_token_secret = "YOUR_ACCESS_SECRET"
  end
end
bq = BigQuery.new({
  client_id: '',
  service_email: '',
  key: '',
  project_id: '',
  dataset: '',
})

2014 年 10 月 23 日時点での注意事項としては、kksg さんのコードで使われているgoogle-api-clientという gem はretriableという gem に依存しているものの、当該 gem の最新版である2.0.0と互換性がない。何も考えずにgem install google-api-clientをしたらretriable2.0.0が入ってしまったので、以下をした。

$ gem uninstall retriable
$ gem install retriable --version '1.4.1' --no-ri --no-rdoc

Issue がすでに上がっていたので、近々解決するのかもしれない。

Issue 11390 - googleappengine - Datastore API for Ruby fails with "Unknown keyword: interval" error - Google App Engine - Google Project Hosting

ともかくこれで無事に動くようになった。BigQuery の画面でも確認できてうれしい。

f:id:alea12:20141023024412p:plain

当座は録画サーバで動かすことにした。

f:id:alea12:20140823024150j:plain

4 月から全くコードを書かない仕事を始めてて、こういう趣味のプログラミングっぽいことは VAIO type P を使ってわずかな通勤時間の間にするようになった。限られた時間だと焦りが生まれて、結果として以前より素早くこういうことをできるようになった気がする。今日に関しては昼休みに kksg さんの記事を見てやる気が出て、帰りの電車+帰宅後の数十分でやりたいことできた。

VAIO type P に関しては以下の記事をご覧ください。