0
BigDataの集め方              RubyでTwitter Streaming APIを使ってみた                           @Mahito12年7月30日月曜日
自己紹介      {              名前 : まひと              ID   : @Mahito              仕事 : [仮想化, NoSQL, BigData]              コミュニティ ...
本日のお話              簡単なBigDataの集め方と              して、Twitterからのデー              タ収集方法と利用サンプル              のご紹介12年7月30日月曜日
BigData時代到来!          富、名声、力、この世のすべてを手に入れた          男、海賊王ゴールド・D・ロジャー。彼の死に際          に放った一言は、人々をデータの海へ駆り立て          た。     ...
            |i                   \      |.|                             長いので一言で                    ト\   /| ト              ...
そもそもBigDataって?              BigData自体の定義は曖昧               データの大きさ               データの種類               データ構造が半構造や非構造        ...
どうやって集めるの?              そこでTwitterですよ!12年7月30日月曜日
ご存知とは思いますが                 Twitter12年7月30日月曜日
Twitter               5億ユーザ(アクティブユーザは1.4億)               1日あたり4.9億 tweet(日本5970万 tweet)               1秒辺り7000 tweet(日本140...
先週の状況              サマーウォーズ12年7月30日月曜日
REST APIでデータ収集              Twitterにはデータ取得用のREST APIが存在              Requestに応じてJSON形式でデータ取得可能              それらをWrappingした...
REST APIでデータ収集?               REST APIでデータ収集できないことはない               ただし制限として350 request / hour               Public Time L...
そこでStreaming APIですよ              APIを利用するとTwitter側からデータが自動              的に送られてくる(Push式)              APIの使用制限がない          ...
Public Stream              Public Streamにも3つの種類が存在               filter(フィルタリングしたPublic TL)               sample(Public TL...
ブラウザでお試し              以下のURLにアクセス               https://stream.twitter.com/1/statuses/sample.json              自分のTwitterI...
Rubyでお試し              OAuthの設定               Twitter Developersのサイトで実施                 https://dev.twitter.com/           ...
Rubyでお試し              Rubyのライブラリ”TweetStream”を利用               https://github.com/intridea/tweetstream/              “gem ...
サンプルコード(sample)          1   require tweetstream          2   require yaml          3          4   CONF = YAML::load(open(...
サンプルコード(filter)          1   require tweetstream          2   require yaml          3          4   CONF = YAML::load(open(...
取得データ(1件)              {"in_reply_to_user_id_str"=>"455267413", "place"=>nil, "text"=>"@AsantiWheels keep a look out for "...
まとめ              Twitter Streaming APIは簡単に利用できる              Twitter Streaming APIを利用することで、だ              れでも簡単にBigDataを入手...
完12年7月30日月曜日
Upcoming SlideShare
Loading in...5
×

BigDataの集め方

2,854

Published on

とある場所でLTしてきたのでその内容をあげておきます。

内容はBigDataの集める方法の一つとして、Twitterが提供しているStreaming APIをRubyで扱う方法についての軽い紹介になります。

Published in: Technology

Transcript of "BigDataの集め方"

  1. 1. BigDataの集め方 RubyでTwitter Streaming APIを使ってみた @Mahito12年7月30日月曜日
  2. 2. 自己紹介 { 名前 : まひと ID : @Mahito 仕事 : [仮想化, NoSQL, BigData] コミュニティ : [Ruby, MongoDB] 趣味 : [釣り, 熱帯魚, 温泉, 勉強会] }12年7月30日月曜日
  3. 3. 本日のお話 簡単なBigDataの集め方と して、Twitterからのデー タ収集方法と利用サンプル のご紹介12年7月30日月曜日
  4. 4. BigData時代到来! 富、名声、力、この世のすべてを手に入れた 男、海賊王ゴールド・D・ロジャー。彼の死に際 に放った一言は、人々をデータの海へ駆り立て た。 「オレの利益か?欲しけりゃくれてやる。探せ! この世のすべてをそこへ置いてきた!!」 男たちは会社の利益を目指し、様々なデータを追 い続ける。 世はまさに、BigData時代!!12年7月30日月曜日
  5. 5.             |i      \      |.| 長いので一言で       ト\   /| ト       | トヽ   / | | ト       | | トヽ\/| | | ト    /       | | | ト\≧三ミゞ=イ/      ム彡´ ̄ ̄    ̄ ヽ{__..     /             V´     ノ  __          ,  ,. == y ̄, __、\_        )  |i  }-| ゝ二 |/ ̄ ̄  /ニ,l  ヽ__ノ/ヾ _ ノ       > }} 世界的ですもんね   / >≦__        し /    Vて二オカ       (_,/}    Yこ二ノ!!|          } 乗るしかない     Y͡ 从        ∠)     从从从トミ   _.ィニ二 ̄丶      ミ三三彡  ´      \ \ このビッグデータに         /           \ヽ       /            ミ;,. , ,        |   _  _ __    \,.,       ノ!   | V7\ ´/      / l /_ゝ| ト >__/ /      |   ヽン ´  ヽー     i|                l     |:! ヽ              |12年7月30日月曜日     | ト、 `ミ,            l
  6. 6. そもそもBigDataって? BigData自体の定義は曖昧 データの大きさ データの種類 データ構造が半構造や非構造 ソーシャルサービスのデータやそれらの複数 の組み合わせが例にあげられる12年7月30日月曜日
  7. 7. どうやって集めるの? そこでTwitterですよ!12年7月30日月曜日
  8. 8. ご存知とは思いますが Twitter12年7月30日月曜日
  9. 9. Twitter 5億ユーザ(アクティブユーザは1.4億) 1日あたり4.9億 tweet(日本5970万 tweet) 1秒辺り7000 tweet(日本1400 tweet) 余談 2011年12月9日に放送された「天空の城ラピュ タ」の「バルス」の瞬間に25088 tweet/sで当時 の最高記録を樹立12年7月30日月曜日
  10. 10. 先週の状況 サマーウォーズ12年7月30日月曜日
  11. 11. REST APIでデータ収集 Twitterにはデータ取得用のREST APIが存在 Requestに応じてJSON形式でデータ取得可能 それらをWrappingしたライブラリも存在 Twitter4J(Java) Twitter(Ruby) Twitter4R(Ruby) TwitterクライアントのほとんどはREST APIで 実装されている(模様)12年7月30日月曜日
  12. 12. REST APIでデータ収集? REST APIでデータ収集できないことはない ただし制限として350 request / hour Public Time Lineの情報は20 tweet/request さらに60秒間キャッシュが効いているため、 1200 tweet / hourが限界12年7月30日月曜日
  13. 13. そこでStreaming APIですよ APIを利用するとTwitter側からデータが自動 的に送られてくる(Push式) APIの使用制限がない Streaming APIの種類は3つ Public Stream(Public Time Line) User Stream(特定のユーザ対象) Site Stream(Webサイト向け)12年7月30日月曜日
  14. 14. Public Stream Public Streamにも3つの種類が存在 filter(フィルタリングしたPublic TL) sample(Public TLの一部) firehose(一部企業向け)12年7月30日月曜日
  15. 15. ブラウザでお試し 以下のURLにアクセス https://stream.twitter.com/1/statuses/sample.json 自分のTwitterIDとパスワードを入力 (Basic認証) DLが開始される (終わらないので満足したら止めること!)12年7月30日月曜日
  16. 16. Rubyでお試し OAuthの設定 Twitter Developersのサイトで実施 https://dev.twitter.com/ サインイン My Application Create a new Application 入力フォームを埋めて各種Keyを入手12年7月30日月曜日
  17. 17. Rubyでお試し Rubyのライブラリ”TweetStream”を利用 https://github.com/intridea/tweetstream/ “gem install tweetstream”でインストール TweetStreamのサンプルにそってコーディング12年7月30日月曜日
  18. 18. サンプルコード(sample) 1 require tweetstream 2 require yaml 3 4 CONF = YAML::load(open("conf.yaml")) 5 6 TweetStream.configure do |config| 7 config.consumer_key = CONF["consumer_key"] 8 config.consumer_secret = CONF["consumer_secret"] 9 config.oauth_token = CONF["token"] 10 config.oauth_token_secret = CONF["token_secret"] 11 config.auth_method = :oauth 12 end 13 14 TweetStream::Client.new.sample do |status| 15 puts status.text 16 end12年7月30日月曜日
  19. 19. サンプルコード(filter) 1 require tweetstream 2 require yaml 3 4 CONF = YAML::load(open("conf.yaml")) 5 6 TweetStream.configure do |config| 7 config.consumer_key = CONF["consumer_key"] 8 config.consumer_secret = CONF["consumer_secret"] 9 config.oauth_token = CONF["token"] 10 config.oauth_token_secret = CONF["token_secret"] 11 config.auth_method = :oauth 12 end 13 14 TweetStream::Client.new.track(Ruby) do |status| 15 puts status.text 16 end12年7月30日月曜日
  20. 20. 取得データ(1件) {"in_reply_to_user_id_str"=>"455267413", "place"=>nil, "text"=>"@AsantiWheels keep a look out for "Ruby" @SEMASHOW this year http:/ /t.co/mDUGAJlR", "contributors"=>nil, "in_reply_to_user_id"=>455267413, "id_str"=>"227440608116097024", "coordinates"=>nil, "geo"=>nil, "favorited"=>false, "source"=>"<a href="http:/ / twitter.com/download/android" rel="nofollow">Twitter for Android</a>", "possibly_sensitive_editable"=>true, "created_at"=>"Mon Jul 23 16:30:42 +0000 2012", "in_reply_to_screen_name"=>"AsantiWheels", "in_reply_to_status_id"=>nil, "possibly_sensitive"=>false, "in_reply_to_status_id_str"=>nil, "user"=>{"is_translator"=>false, "notifications"=>nil, "profile_use_background_image"=>true, "profile_background_image_url_https"=>"https:/ / si0.twimg.com/images/themes/theme1/bg.png", "time_zone"=>nil, "profile_text_color"=>"333333", "profile_image_url_https"=>"https:/ /si0.twimg.com/profile_images/2386225418/549WvyXy_normal", "following"=>nil, "verified"=>false, "profile_background_image_url"=>"http:/ /a0.twimg.com/images/themes/theme1/bg.png", "default_profile_image"=>false, "profile_link_color"=>"0084B4", "description"=>"car crazy Arizona guy, dodge parts monkey, Severed Ties O.G. member, owner of Chain Reaction ", "id_str"=>"576656522", "contributors_enabled"=>false, "geo_enabled"=>false, "favourites_count"=>0, "followers_count"=>26, "profile_image_url"=>"http:/ /a0.twimg.com/ profile_images/2386225418/549WvyXy_normal", "follow_request_sent"=>nil, "created_at"=>"Thu May 10 23:21:38 +0000 2012", "profile_background_color"=>"C0DEED", "profile_background_tile"=>false, "friends_count"=>184, "url"=>nil, "show_all_inline_media"=>false, "statuses_count"=>99, "profile_sidebar_fill_color"=>"DDEEF6", "protected"=>false, "screen_name"=>"Severed_Joe", "listed_count"=>0, "name"=>"J.M.", "profile_sidebar_border_color"=>"C0DEED", "location"=>"Phx, AZ", "id"=>576656522, "default_profile"=>true, "lang"=>"en", "utc_offset"=>nil}, "retweet_count"=>0, "id"=>227440608116097024, "entities"=>{"user_mentions"=>[{"indices"=>[0, 13], "id_str"=>"455267413", "screen_name"=>"AsantiWheels", "name"=>"Asanti Wheels", "id"=>455267413}, {"indices"=>[41, 50], "id_str"=>"21902226", "screen_name"=>"SEMASHOW", "name"=>"SEMA Show", "id"=>21902226}], "media"=>[{"type"=>"photo", "indices"=>[61, 81], "display_url"=>"pic.twitter.com/mDUGAJlR", "media_url_https"=>"https:/ /p.twimg.com/AygIBy6CQAA2O3i.jpg", "id_str"=>"227440608120291328", "sizes"=>{"small"=>{"resize"=>"fit", "h"=>680, "w"=>284}, "medium"=>{"resize"=>"fit", "h"=>1172, "w"=>490}, "large"=>{"resize"=>"fit", "h"=>1172, "w"=>490}, "thumb"=>{"resize"=>"crop", "h"=>150, "w"=>150}}, "url"=>"http://t.co/mDUGAJlR", "expanded_url"=>"http:/ /twitter.com/Severed_Joe/status/227440608116097024/photo/1", "media_url"=>"http:/ /p.twimg.com/AygIBy6CQAA2O3i.jpg", "id"=>227440608120291328}], "hashtags"=>[], "urls"=>[]}, "retweeted"=>false, "truncated"=>false}12年7月30日月曜日
  21. 21. まとめ Twitter Streaming APIは簡単に利用できる Twitter Streaming APIを利用することで、だ れでも簡単にBigDataを入手することができる BigDataで勝ち残るポイントは データを蓄積すること 蓄積したデータを活かすかこと12年7月30日月曜日
  22. 22. 完12年7月30日月曜日
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×