第3回Twitter API勉強会 - ストリーミングAPI #twtr_hack

  • 18,251 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
18,251
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
121
Comments
0
Likes
45

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Transcript

  • 1. Streaming APIYusuke Yamamoto
  • 2. Twi$erAPI RESTAPI : API :Java,Objec8ve9C API StreamedTweets , Java,Python,PHP,Ruby,Objec8ve9C Web API WebIntents :Web @Anywhere :HTML,JavaScript Yusuke Yamamoto 2
  • 3. ストリーミングAPI• ツイート、DMなどを受信し続けられる• レートリミットがない • 利用出来る場面ではREST APIより優先的に利用• 技術 • 普通のHTTP • レスポンスに終わりがない • cometでもWebSocketでもない Copyright(c) Yusuke Yamamoto All rights reserved.
  • 4. デモ$ wget --output-document=- --user=*** --password=*** https://stream.twitter.com/1/statuses/sample.json Copyright(c) Yusuke Yamamoto All rights reserved.
  • 5. ストリーミングAPIの接続• 十分に帯域のある環境で利用 • 3G接続は推奨されない(モバイルアプリ不可)• 再接続アルゴリズムを正しく実装 • アグレッシブに再接続すると一時的に使えなく なる Copyright(c) Yusuke Yamamoto All rights reserved.
  • 6. 再接続アルゴリズム 1. 最初に接続切れを起こした場合 • 即座に再接続を試みる。 2. TCP/IPレベルのネットワークエラーが発生した場合 • 250ミリ秒から始め、最大16秒までエラー毎に250ミリ秒足してい くなど線形的に待ち時間を増やしていく。 3. HTTPエラー(ステータスコードが201以上)が返った場合 • 10秒から始め、失敗する毎に待ち時間を最大で240秒まで倍ずつ指 数関数的に増やしていく。 • HTTPエラーは認証情報の間違いやプロキシの不具合などアプリ ケーションの設定に起因する問題の可能性があるのでユーザーへ 通知することも考慮に入れる。参考: Twitter APIポケットリファレンス P265https://dev.twitter.com/docs/streaming-api/concepts#connecting Copyright(c) Yusuke Yamamoto All rights reserved.
  • 7. ストリーミングAPIの種類• Streamed Tweets • パブリックタイムラインを取得• User Stream • 単一ユーザーのタイムライン、イベントを取得• Site Stream • 複数ユーザーのタイムライン、イベントを取得 Copyright(c) Yusuke Yamamoto All rights reserved.
  • 8. Streamed Tweets• sample• filter• firehose• links• retweet Copyright(c) Yusuke Yamamoto All rights reserved.
  • 9. Streamed Tweets• sample• filter• firehose• links• retweet Copyright(c) Yusuke Yamamoto All rights reserved.
  • 10. sample• パブリックなツイートのうち1%を取得• エンドポイント(GET)‣ https://stream.twitter.com/1/statuses/sample.json• パラメータ‣ なし• レスポンス‣ statusオブジェクトのjson (REST APIと同じ) Copyright(c) Yusuke Yamamoto All rights reserved.
  • 11. sample• 使いどころ• ツイート分析 ‣ 言語 ‣ クライアント ‣ 流行の固有名詞抽出 • 等々 Copyright(c) Yusuke Yamamoto All rights reserved.
  • 12. FAQ• sample.jsonを複数接続すれば・・・・ • 同じツイートが返るので無意味。1%以上はとれない Copyright(c) Yusuke Yamamoto All rights reserved.
  • 13. filter• 指定した条件のツイートを取得• エンドポイント(POST)‣ https://stream.twitter.com/1/statuses/filter.json• パラメータ‣ 色々(次ページ)• レスポンス‣ statusオブジェクトのjson (REST APIと同じ) Copyright(c) Yusuke Yamamoto All rights reserved.
  • 14. filterのパラメータ• follow • 指定したユーザーIDのツイートを取得 follow=1235,5678• track • 指定したキーワードを含むツイートを取得 • 1キーワードは60文字まで • 日本語はトークナイズされない ‣ 日本語ハッシュタグは指定可能 track=%25twtr_hack,%25twtter4j Copyright(c) Yusuke Yamamoto All rights reserved.
  • 15. filterのパラメータ(続き) • locations • 区域を指定してツイートを取得 locations=138.927,35.500,139.932,35.795 南西 北東 139.932,35.795 経度・緯度順なのに注意138.927,35.500 Copyright(c) Yusuke Yamamoto All rights reserved.
  • 16. FAQ• 日本全体をカバーする区域を指定すれば・・• ヒットするツイートが多すぎる場合はその旨が通知される {"limit":{"track":1234}}• 大量の区域を指定したい場合は?• 要相談• プロテクトアカウントのツイートは?• 取得できない。User StreamかSite Streamを利用 Copyright(c) Yusuke Yamamoto All rights reserved.
  • 17. User Stream• 単一ユーザーのタイムライン、イベントを取得• 目的: デスクトップの通知ツールなど• タイムラインのツイート、DM、fav / follow等を受信• プロテクトアカウントのツイートも受信可能• 要OAuth( or XAuth) Copyright(c) Yusuke Yamamoto All rights reserved.
  • 18. User Stream• エンドポイント(POST)‣ https://userstream.twitter.com/2/user.json• レスポンス‣ statusオブジェクトのjson等 Copyright(c) Yusuke Yamamoto All rights reserved.
  • 19. Site Stream(beta)• 複数ユーザーのタイムライン、イベントを取得• 目的: Twitter連携するサービスなど • タイムラインのツイート、DM、fav / follow等を受信 • プロテクトアカウントのツイートも受信可能 • 要OAuth Copyright(c) Yusuke Yamamoto All rights reserved.
  • 20. Site Stream• エンドポイント(POST)‣ https://sitestream.twitter.com/2b/site.json• パラメータ‣ follow: 受信するユーザーIDをカンマ区切りで指定、100人まで follow=1234,5678,91023,45324....• レスポンス‣ statusオブジェクトのjson等 Copyright(c) Yusuke Yamamoto All rights reserved.
  • 21. Site Streamのコネクション管理• 接続時に指定できるユーザーは100人まで • 事前にOAuth認証しておく必要がある• コントロールストリームでユーザーの追 加、削除可能 • 1コネクションで最大1000人まで受信可能 Copyright(c) Yusuke Yamamoto All rights reserved.
  • 22. コントロールストリーム • Site Stream接続時にコントロール用エンドポ イントが返る {"control": { "control_uri":"/2b/site/c/1_1_54e345d655ee3e8d" }} • RESTでコントロール用エンドポイントを操作 https://sitestream.twitter.com/2b/site/c/1_1_54e345d655ee3e8d"https://dev.twitter.com/docs/streaming-api/control-streams Copyright(c) Yusuke Yamamoto All rights reserved.
  • 23. コントロールストリームのメソッド• ユーザーの追加 (POST)https://sitestream.twitter.com/2b/site/c/****/add_user.json" • パラメータ ‣ user_id: カンマ区切りのユーザーID(100人まで) Copyright(c) Yusuke Yamamoto All rights reserved.
  • 24. コントロールストリームのメソッド • ユーザーの削除(POST)https://sitestream.twitter.com/2b/site/c/****/remove_user.json" • パラメータ ‣ user_id: カンマ区切りのユーザーID(100人まで) Copyright(c) Yusuke Yamamoto All rights reserved.
  • 25. ベストプラクティス• とにかく使う • 参照系はレートリミット回避のためできるかぎりREST APIよりもStreaming APIを利用• gzipを使う • 帯域を節約• 接続ネットワークを確認 • 3G接続での利用は推奨されない。接続が切られることも Copyright(c) Yusuke Yamamoto All rights reserved.
  • 26. FAQ• ストリーミングAPIはJavaScriptから使える? • 使えない。サーバサイドの仕組みが必要• 1%以上のツイートにアクセスしたい • http://gnip.com/• firehoseは? • 一般に提供はされていない Copyright(c) Yusuke Yamamoto All rights reserved.
  • 27. Twitter API ポケットリファレンス• 好評発売中! http://amzn.to/twtr-ref Yusuke Yamamoto 27