SlideShare a Scribd company logo
Submit Search
Upload
Login
Signup
第3回Twitter API勉強会 - ストリーミングAPI #twtr_hack
Report
Yusuke Yamamoto
Follow
Project lead at Twitter4J.org
Jan. 26, 2012
•
0 likes
•
27,557 views
1
of
27
第3回Twitter API勉強会 - ストリーミングAPI #twtr_hack
Jan. 26, 2012
•
0 likes
•
27,557 views
Download Now
Download to read offline
Report
Technology
Yusuke Yamamoto
Follow
Project lead at Twitter4J.org
Recommended
HttpClient詳解、或いは非同期の落とし穴について
Yoshifumi Kawai
90K views
•
37 slides
Apache Spark + Arrow
Takeshi Yamamuro
1.2K views
•
16 slides
Obsのプラグイン作ってみた
Yoshimura Soichiro
18.9K views
•
25 slides
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
sasezaki
7.6K views
•
51 slides
Hive on Tezのベストプラクティス
Yahoo!デベロッパーネットワーク
3.5K views
•
40 slides
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Yahoo!デベロッパーネットワーク
22.7K views
•
47 slides
More Related Content
What's hot
今更聞けない!?Microsoft Graph で始める Office 365 データ活用と事例の紹介
Kenichiro Nakamura
4.7K views
•
64 slides
モダンオフショア開発のすすめ
Arata Fujimura
5.5K views
•
135 slides
[よくわかるクラウドデータベース] Amazon RDS for PostgreSQL検証報告
Amazon Web Services Japan
13K views
•
56 slides
メディアコンテンツ向け記事検索DBとして使うElasticsearch
Yasuhiro Murata
1.9K views
•
32 slides
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Ryosuke Uchitate
16.8K views
•
102 slides
デプロイメントパイプラインって何?
ke-m kamekoopa
11.6K views
•
26 slides
What's hot
(20)
今更聞けない!?Microsoft Graph で始める Office 365 データ活用と事例の紹介
Kenichiro Nakamura
•
4.7K views
モダンオフショア開発のすすめ
Arata Fujimura
•
5.5K views
[よくわかるクラウドデータベース] Amazon RDS for PostgreSQL検証報告
Amazon Web Services Japan
•
13K views
メディアコンテンツ向け記事検索DBとして使うElasticsearch
Yasuhiro Murata
•
1.9K views
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Ryosuke Uchitate
•
16.8K views
デプロイメントパイプラインって何?
ke-m kamekoopa
•
11.6K views
Prestoクエリログの保存/分析機能の構築 #yjdsnight
Yahoo!デベロッパーネットワーク
•
2.6K views
他社製品と比較した際のAuth0のいいところ
Satoshi Takayanagi
•
3.7K views
Microsoft Graph APIを活用した社内アプリケーション開発
Yuki Hattori
•
23.1K views
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
•
24.1K views
20190821 AWS Black Belt Online Seminar AWS AppSync
Amazon Web Services Japan
•
33.9K views
Digdagによる大規模データ処理の自動化とエラー処理
Sadayuki Furuhashi
•
23.6K views
Lambda + SQS アクセス負荷を下げた話
AiKitago
•
1.9K views
[CTO Night & Day 2019] グローバルのサービス展開に向けたマルチリージョンアーキテクチャ- #ctonight
Amazon Web Services Japan
•
1.8K views
ヤフーの検索基盤と機械学習検索ランキング #yjtc / YJTC21 B-7
Yahoo!デベロッパーネットワーク
•
1.3K views
キャッシュコヒーレントに囚われない並列カウンタ達
Kumazaki Hiroki
•
5.9K views
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
Hibino Hisashi
•
13.5K views
REST API マスターへの道 - Office 365 パワーユーザー向け
Hirofumi Ota
•
7.7K views
jaws aws-nuke
kota tomimatsu
•
637 views
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
Trainocate Japan, Ltd.
•
12.7K views
Similar to 第3回Twitter API勉強会 - ストリーミングAPI #twtr_hack
Webサイト向けAPI #twtr_hack
Yusuke Yamamoto
1.1K views
•
14 slides
第2.1回Twitter API勉強会 - 検索API
Yusuke Yamamoto
4.2K views
•
29 slides
Twitter4jハンズオン 5/1 #twtr_hack
Yusuke Yamamoto
3K views
•
51 slides
Twitter API最新事情 - API Meetup Tokyo #1 #apijp
Yusuke Yamamoto
10.1K views
•
88 slides
Mobage Connect と Identity 関連技術への取り組み - OpenID Summit Tokyo 2015
Toru Yamaguchi
3.8K views
•
29 slides
Twitter API1.1 #twtr_hack
Yusuke Yamamoto
2.4K views
•
26 slides
Similar to 第3回Twitter API勉強会 - ストリーミングAPI #twtr_hack
(20)
Webサイト向けAPI #twtr_hack
Yusuke Yamamoto
•
1.1K views
第2.1回Twitter API勉強会 - 検索API
Yusuke Yamamoto
•
4.2K views
Twitter4jハンズオン 5/1 #twtr_hack
Yusuke Yamamoto
•
3K views
Twitter API最新事情 - API Meetup Tokyo #1 #apijp
Yusuke Yamamoto
•
10.1K views
Mobage Connect と Identity 関連技術への取り組み - OpenID Summit Tokyo 2015
Toru Yamaguchi
•
3.8K views
Twitter API1.1 #twtr_hack
Yusuke Yamamoto
•
2.4K views
Getting Started with Graph Database with Python
ロフト くん
•
402 views
Reactor Netty & Apache Kafka Stack #jsug
Yahoo!デベロッパーネットワーク
•
1.1K views
オタク×Node.js勉強会
虎の穴 開発室
•
5.3K views
ネットワークAPI のあれこれ (ENOG37)
Kentaro Ebisawa
•
5.5K views
TwitterのStreaming APIについて
Hidenori Goto
•
5K views
JavaからAkkaハンズオン
TIS Inc.
•
1.8K views
ServerlessConf Tokyo2018 サーバーレスなシステムのがんばらない運用監視
Takanori Suzuki
•
5.2K views
広島IT勉強会カレンダー(仮)はRubyを使っています
Yoshitake Takata
•
1.3K views
Azure App Service Overview LT
Keiji Kamebuchi
•
2.4K views
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
•
30K views
Retrofit2 &OkHttp でAndroidのHTTP通信が快適だにゃん
Yukari Sakurai
•
18.5K views
MicrometerとPrometheusによる LINEファミリーアプリのモニタリング
LINE Corporation
•
3.7K views
Chatterを使ったカスタムソーシャル
Salesforce Developers Japan
•
4.3K views
20211209 lt runtime_field
Nomura Yuta
•
150 views
More from Yusuke Yamamoto
株式会社サムライズム 新製品発表会 物理イカリングのご紹介 #gbdaitokai
Yusuke Yamamoto
1.6K views
•
23 slides
これからはじめるGit、GitHub #stapy
Yusuke Yamamoto
1.9K views
•
31 slides
誰も知らない IntelliJ IDEA凄技100選 #kotlin_sansan
Yusuke Yamamoto
4.1K views
•
24 slides
JetBrains IDEハンズオン
Yusuke Yamamoto
1.3K views
•
32 slides
Java Küche 2016 LT 在室状況自動通知ボット #JavaKueche
Yusuke Yamamoto
661 views
•
59 slides
Java Küche 2016 #JavaKueche
Yusuke Yamamoto
650 views
•
68 slides
More from Yusuke Yamamoto
(20)
株式会社サムライズム 新製品発表会 物理イカリングのご紹介 #gbdaitokai
Yusuke Yamamoto
•
1.6K views
これからはじめるGit、GitHub #stapy
Yusuke Yamamoto
•
1.9K views
誰も知らない IntelliJ IDEA凄技100選 #kotlin_sansan
Yusuke Yamamoto
•
4.1K views
JetBrains IDEハンズオン
Yusuke Yamamoto
•
1.3K views
Java Küche 2016 LT 在室状況自動通知ボット #JavaKueche
Yusuke Yamamoto
•
661 views
Java Küche 2016 #JavaKueche
Yusuke Yamamoto
•
650 views
JavaOne2016 #CON5929 Time-Saving Tips and Tricks for Building Quality Java Ap...
Yusuke Yamamoto
•
933 views
WebStormから始まる快適Web開発ワークフロー #html5jk
Yusuke Yamamoto
•
1.4K views
データクラスから始めるKotlin / JetBrainsに行ってきました #kotlin_kansai #jkug
Yusuke Yamamoto
•
22.3K views
Troubleshooting Slowdowns, Freezes, Deadlocks : Introduction to Thread Dump #...
Yusuke Yamamoto
•
2.3K views
カジュアルにスレッドダンプ - @yusuke #javacasual
Yusuke Yamamoto
•
6.7K views
Excel方眼紙アプリケーションサーバと侍の新機能 #jjug
Yusuke Yamamoto
•
3.2K views
株式会社サムライズム@samuraismがcoincheck for ECを使ってビットコイン決済に対応した話 #gbdaitokai
Yusuke Yamamoto
•
9.6K views
Botを使った業務効率化 / Java8を使ったBot実装効率化 @yusuke #jjug
Yusuke Yamamoto
•
6.2K views
Java デバッガ活用術 ~勘デバッグ・print デバッグから抜けだそう~ #jjug_ccc #ccc_h4
Yusuke Yamamoto
•
22.1K views
貧乏人のHeroku活用術 #herokujp
Yusuke Yamamoto
•
3.6K views
リーンスタートアップ x Java #jjug #jjug_ccc #ccc_h4
Yusuke Yamamoto
•
5.7K views
JavaScript時代のJava #kansumiB7 #kansumi
Yusuke Yamamoto
•
15K views
テンプレートエンジンの話 #jjug
Yusuke Yamamoto
•
9.2K views
失敗から学ぶAPI設計 #ccc_h4 #jjug #jjug_ccc JJUG CCC 2013 Spring
Yusuke Yamamoto
•
17.5K views
Recently uploaded
2023情報処理学会関西支部大会-G12.pdf
KoseiShimoda1
7 views
•
11 slides
松下研究室紹介_関西大学高槻キャンパスオープンキャンパス
Matsushita Laboratory
27 views
•
23 slides
テスト自動化.pdf
ssuserf8ea02
23 views
•
26 slides
20230921_IoTLT_vol103_kitazaki_v1.pdf
Ayachika Kitazaki
151 views
•
16 slides
遠隔お酌IoTLT2309.pptx
Yoshiaki Ito
134 views
•
12 slides
IGDA Japan SIG Audio #20-1 室内・野外でのマイク収録と整音.pdf
IGDA Japan SIG-Audio
108 views
•
31 slides
Recently uploaded
(12)
2023情報処理学会関西支部大会-G12.pdf
KoseiShimoda1
•
7 views
松下研究室紹介_関西大学高槻キャンパスオープンキャンパス
Matsushita Laboratory
•
27 views
テスト自動化.pdf
ssuserf8ea02
•
23 views
20230921_IoTLT_vol103_kitazaki_v1.pdf
Ayachika Kitazaki
•
151 views
遠隔お酌IoTLT2309.pptx
Yoshiaki Ito
•
134 views
IGDA Japan SIG Audio #20-1 室内・野外でのマイク収録と整音.pdf
IGDA Japan SIG-Audio
•
108 views
CCoE実践者コミュニティ#1_CCoEが進めるセキュリティカイゼンの旅.pptx
Tomoaki Tada
•
43 views
GraphQLはどんな時に使うか
Yutaka Tachibana
•
8 views
CatBoost on GPU のひみつ
Takuji Tahara
•
495 views
MLOps Course Slides_JP(配布用).pdf
Yuya Yamamoto
•
39 views
gtk4_gem_usage.pdf
ssuser0ef4681
•
14 views
画像生成AIの問題点
iPride Co., Ltd.
•
10 views
第3回Twitter API勉強会 - ストリーミングAPI #twtr_hack
1.
Streaming API Yusuke Yamamoto
2.
Twi$er'API REST'API'
' ' ' ' ' ' ' ' ' :' ' API :'Java,'Objec8ve9C ' API Streamed'Tweets' ,' ' Java,'Python,'PHP,'Ruby,'Objec8ve9C ' Web API ' Web'Intents :'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ポケットリファレンス P265 https://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
Editor's Notes
\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