• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
第3回Twitter API勉強会 - ストリーミングAPI #twtr_hack
 

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

on

  • 17,459 views

 

Statistics

Views

Total Views
17,459
Views on SlideShare
16,372
Embed Views
1,087

Actions

Likes
41
Downloads
108
Comments
0

6 Embeds 1,087

http://samuraism.jp 976
https://twitter.com 83
http://a0.twimg.com 16
http://freerss.net 7
http://favtile.com 3
http://us-w1.rockmelt.com 2

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \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

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

  • Streaming APIYusuke Yamamoto
  • Twi$erAPI RESTAPI : API :Java,Objec8ve9C API StreamedTweets , Java,Python,PHP,Ruby,Objec8ve9C Web API WebIntents :Web @Anywhere :HTML,JavaScript Yusuke Yamamoto 2
  • ストリーミングAPI• ツイート、DMなどを受信し続けられる• レートリミットがない • 利用出来る場面ではREST APIより優先的に利用• 技術 • 普通のHTTP • レスポンスに終わりがない • cometでもWebSocketでもない Copyright(c) Yusuke Yamamoto All rights reserved.
  • デモ$ wget --output-document=- --user=*** --password=*** https://stream.twitter.com/1/statuses/sample.json Copyright(c) Yusuke Yamamoto All rights reserved.
  • ストリーミングAPIの接続• 十分に帯域のある環境で利用 • 3G接続は推奨されない(モバイルアプリ不可)• 再接続アルゴリズムを正しく実装 • アグレッシブに再接続すると一時的に使えなく なる Copyright(c) Yusuke Yamamoto All rights reserved.
  • 再接続アルゴリズム 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.
  • ストリーミングAPIの種類• Streamed Tweets • パブリックタイムラインを取得• User Stream • 単一ユーザーのタイムライン、イベントを取得• Site Stream • 複数ユーザーのタイムライン、イベントを取得 Copyright(c) Yusuke Yamamoto All rights reserved.
  • Streamed Tweets• sample• filter• firehose• links• retweet Copyright(c) Yusuke Yamamoto All rights reserved.
  • Streamed Tweets• sample• filter• firehose• links• retweet Copyright(c) Yusuke Yamamoto All rights reserved.
  • sample• パブリックなツイートのうち1%を取得• エンドポイント(GET)‣ https://stream.twitter.com/1/statuses/sample.json• パラメータ‣ なし• レスポンス‣ statusオブジェクトのjson (REST APIと同じ) Copyright(c) Yusuke Yamamoto All rights reserved.
  • sample• 使いどころ• ツイート分析 ‣ 言語 ‣ クライアント ‣ 流行の固有名詞抽出 • 等々 Copyright(c) Yusuke Yamamoto All rights reserved.
  • FAQ• sample.jsonを複数接続すれば・・・・ • 同じツイートが返るので無意味。1%以上はとれない Copyright(c) Yusuke Yamamoto All rights reserved.
  • filter• 指定した条件のツイートを取得• エンドポイント(POST)‣ https://stream.twitter.com/1/statuses/filter.json• パラメータ‣ 色々(次ページ)• レスポンス‣ statusオブジェクトのjson (REST APIと同じ) Copyright(c) Yusuke Yamamoto All rights reserved.
  • filterのパラメータ• follow • 指定したユーザーIDのツイートを取得 follow=1235,5678• track • 指定したキーワードを含むツイートを取得 • 1キーワードは60文字まで • 日本語はトークナイズされない ‣ 日本語ハッシュタグは指定可能 track=%25twtr_hack,%25twtter4j Copyright(c) Yusuke Yamamoto All rights reserved.
  • 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.
  • FAQ• 日本全体をカバーする区域を指定すれば・・• ヒットするツイートが多すぎる場合はその旨が通知される {"limit":{"track":1234}}• 大量の区域を指定したい場合は?• 要相談• プロテクトアカウントのツイートは?• 取得できない。User StreamかSite Streamを利用 Copyright(c) Yusuke Yamamoto All rights reserved.
  • User Stream• 単一ユーザーのタイムライン、イベントを取得• 目的: デスクトップの通知ツールなど• タイムラインのツイート、DM、fav / follow等を受信• プロテクトアカウントのツイートも受信可能• 要OAuth( or XAuth) Copyright(c) Yusuke Yamamoto All rights reserved.
  • User Stream• エンドポイント(POST)‣ https://userstream.twitter.com/2/user.json• レスポンス‣ statusオブジェクトのjson等 Copyright(c) Yusuke Yamamoto All rights reserved.
  • Site Stream(beta)• 複数ユーザーのタイムライン、イベントを取得• 目的: Twitter連携するサービスなど • タイムラインのツイート、DM、fav / follow等を受信 • プロテクトアカウントのツイートも受信可能 • 要OAuth Copyright(c) Yusuke Yamamoto All rights reserved.
  • 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.
  • Site Streamのコネクション管理• 接続時に指定できるユーザーは100人まで • 事前にOAuth認証しておく必要がある• コントロールストリームでユーザーの追 加、削除可能 • 1コネクションで最大1000人まで受信可能 Copyright(c) Yusuke Yamamoto All rights reserved.
  • コントロールストリーム • 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.
  • コントロールストリームのメソッド• ユーザーの追加 (POST)https://sitestream.twitter.com/2b/site/c/****/add_user.json" • パラメータ ‣ user_id: カンマ区切りのユーザーID(100人まで) Copyright(c) Yusuke Yamamoto All rights reserved.
  • コントロールストリームのメソッド • ユーザーの削除(POST)https://sitestream.twitter.com/2b/site/c/****/remove_user.json" • パラメータ ‣ user_id: カンマ区切りのユーザーID(100人まで) Copyright(c) Yusuke Yamamoto All rights reserved.
  • ベストプラクティス• とにかく使う • 参照系はレートリミット回避のためできるかぎりREST APIよりもStreaming APIを利用• gzipを使う • 帯域を節約• 接続ネットワークを確認 • 3G接続での利用は推奨されない。接続が切られることも Copyright(c) Yusuke Yamamoto All rights reserved.
  • FAQ• ストリーミングAPIはJavaScriptから使える? • 使えない。サーバサイドの仕組みが必要• 1%以上のツイートにアクセスしたい • http://gnip.com/• firehoseは? • 一般に提供はされていない Copyright(c) Yusuke Yamamoto All rights reserved.
  • Twitter API ポケットリファレンス• 好評発売中! http://amzn.to/twtr-ref Yusuke Yamamoto 27