Submit Search
Twitter API最新事情 - API Meetup Tokyo #1 #apijp
•
33 likes
•
10,140 views
Yusuke Yamamoto
Follow
1 of 88
Download now
Downloaded 58 times
More Related Content
Twitter API最新事情 - API Meetup Tokyo #1 #apijp
1.
#apijp API Meetup Tokyo
#1 Twitter API最新事情 @yusuke 株式会社サムライズム 山本 裕介
2.
• 山本 裕介(@yusuke)! •
株式会社サムライズム 代表取締役! • 過去の職場: 自己紹介 2000年∼ 新日鉄情報通信システム! 2002年∼ BEA Systems! 2006年∼ FAST Search & Transfer! 2008年∼ RedHat! 2011年∼ Twitter, Inc.
3.
• 山本 裕介(@yusuke)! •
株式会社サムライズム 代表取締役! • 過去の職場: 自己紹介 2000年∼ 新日鉄情報通信システム! 2002年∼ BEA Systems! 2006年∼ FAST Search & Transfer! 2008年∼ RedHat! 2011年∼ Twitter, Inc. SOAPに悩まされるSOAPに悩まされるSOAPに悩まされる
4.
#apijp 自己紹介 • API大好き
5.
#apijp 自己紹介 • API大好き
6.
#apijp 自己紹介 Java用Twitter APIライブラリ • API大好き
7.
http://amzn.to/twtr-ref Twitter APIポケットリファレンス
8.
• 山本 裕介(@yusuke)! •
株式会社サムライズム 代表取締役! • 過去の職場: 自己紹介 2000年∼ 新日鉄情報通信システム! 2002年∼ BEA Systems! 2006年∼ FAST Search & Transfer! 2008年∼ RedHat! 2011年∼ Twitter, Inc.
9.
• 開発ツール販売! • Twitter
API導入、運用支援サービス 株式会社サムライズム
10.
• 開発ツール販売! • Twitter
API導入、運用支援サービス 株式会社サムライズム http://samuraism.com/service
11.
#apijp Twitter API最新事情 • Twitter
APIの概要 • Twitter API設計の歴史 • Twitter API最新事例 • Twitter APIの現在
12.
#apijp Twitter APIの概要
13.
Twi$er'API REST'API' API Web 'API :' ' :'Java,'Objec8ve9C
' :' ,' ' :'Java,'PHP,'Ruby,'.Net,'Objec8ve9C ' :'Web ' :'HTML,'JavaScript' Streamed'Tweets' ' ' ' ' ' ' ' ' ' ' ' ' '
14.
Twitter APIの概要 • アプリケーションの登録と権限 •
OAuth認証 • 認証の種類
15.
アプリケーション • Twitterにアクセスする単位 • ユーザーとは異なる •
ユーザーはアプリケーションにアクセ ス権限を委譲する
16.
アプリケーションの登録 • https://dev.twitter.com/apps/new より
17.
Application Type :
重要
18.
アクセスタイプ アクセスタイプ Read,Write, & Access direct
messages Read & Write Read only タイムラインなどの取得 ○ ○ ○ ツイート ○ ○ × ダイレクトメッセージ送信 ○ ○ × ダイレクトメッセージ受信・削除 ○ × × デフォルト
19.
OAuth
20.
Sign in with
Twitter
21.
XAuth
22.
難しいので詳しくは…
23.
http://amzn.to/twtr-ref Twitter APIポケットリファレンス
24.
REST API
25.
REST API • プル型 ‣
タイムラインの取得 ‣ ユーザーのフォロー ‣ ツイート ‣ ダイレクトメッセージの送受信 等々100近くのエンドポイント
26.
REST API • REST:
REpresentational State Transfer • HTTPでAPI呼び出し GET /1.1/statuses/public_timeline.json HTTP/1.1 Host: api.twitter.com ! ! HTTP/1.1 200 OK Date: Tue, 08 Feb 2011 07:52:51 GMT Server: hi Status: 200 OK Content-Type: application/json; charset=utf-8 Vary: Accept-Encoding Connection: close ! [{"source": "<a href="http://foursquare.com" rel="nofollow">foursquare</a>", "text": "I'm at IKEA 新三郷店 (新三郷ららシティ2-2-2, 三郷市) [pic]: http://4sq.com/ eOHZdS", ... "user": { "description": "Javaエンジニア山本裕介。rn映画、アーチェリー、Java 好きrn#twitter4j #samurai", "name": "山本 裕介", ...} }, ...] リクエスト レスポンスヘッダ レスポンスボディ
27.
Twitter のREST API •
全部で100近くのエンドポイント • 15の「リソース」に分類されている • リソース毎にパスが異なる(RESTful) Timelineリソース https://api.twitter.com/1.1/statuses/***.json Userリソース https://api.twitter.com/1.1/users/***.json Direct messageリソース https://api.twitter.com/1.1/direct_messages/ ***.json 等
28.
REST APIのテスト • https://dev.twitter.com/console
より
29.
REST APIのエンドポイントは たくさんあるので…
31.
ストリーミング API • プッシュ型 ‣
特定のユーザーのアクティビティをリアルタイ ムに取得 または ‣ 指定したキーワードにマッチするツイートをリ アルタイムに取得
32.
ストリーミング API • ツイート、DMなどを受信し続けられる •
レートリミットがない • 利用出来る場面ではREST APIより優先的に利用 • 技術 • 普通のHTTP • レスポンスに終わりがない • cometでもWebSocketでもない
33.
デモ $ twitter4j/bin/stream/printSampleStream.sh
34.
ストリーミングAPIの接続 • 十分に帯域のある環境で利用 • 3G接続は推奨されない(モバイルアプリ不可) ! •
再接続アルゴリズムを正しく実装 • アグレッシブに再接続すると一時的に使えなく なる
35.
再接続アルゴリズム 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
36.
ストリーミングAPIの種類 • Streamed Tweets •
パブリックタイムラインを取得 • User Stream • 単一ユーザーのタイムライン、イベントを取得 • Site Stream • 複数ユーザーのタイムライン、イベントを取得
37.
Streamed Tweets • sample •
filter • firehose • links • retweet
38.
Streamed Tweets • sample •
filter • firehose • links • retweet
39.
sample • パブリックなツイートのうち1%を取得 • エンドポイント(GET) ‣
https://stream.twitter.com/1.1/statuses/sample.json • パラメータ ‣ なし • レスポンス ‣ statusオブジェクトのjson (REST APIと同じ)
40.
sample • 使いどころ • ツイート分析 ‣
言語 ‣ クライアント ‣ 流行の固有名詞抽出 • 等々
41.
FAQ • sample.jsonを複数接続すれば・・・・ • 同じツイートが返るので無意味。1%以上はとれない
42.
filter • 指定した条件のツイートを取得 • エンドポイント(POST) ‣
https://stream.twitter.com/1.1/statuses/filter.json • パラメータ ‣ 色々(次ページ) • レスポンス ‣ statusオブジェクトのjson (REST APIと同じ)
43.
filterのパラメータ • follow • 指定したユーザーIDのツイートを取得 ! •
track • 指定したキーワードを含むツイートを取得 • 1キーワードは60文字まで • 日本語はトークナイズされない ‣ 日本語ハッシュタグは指定可能 follow=1235,5678 track=%25twtr_hack,%25twtter4j
44.
filterのパラメータ(続き) • locations • 区域を指定してツイートを取得 locations=138.927,35.500,139.932,35.795 138.927,35.500 139.932,35.795 南西
北東 経度・緯度順なのに注意
45.
FAQ • 日本全体をカバーする区域を指定すれば・・ • ヒットするツイートが多すぎる場合はその旨が通知される ! •
大量の区域を指定したい場合は? • 要相談 • プロテクトアカウントのツイートは? • 取得できない。User StreamかSite Streamを利用 {"limit":{"track":1234}}
46.
User Stream • 単一ユーザーのタイムライン、イベントを取得 ! •
目的: デスクトップの通知ツールなど • タイムラインのツイート、DM、fav / follow等を受信 • プロテクトアカウントのツイートも受信可能 • 要OAuth( or XAuth)
47.
User Stream • エンドポイント(POST) ‣
https://userstream.twitter.com/1.1/user.json • レスポンス ‣ statusオブジェクトのjson等
48.
Site Stream(beta) • 複数ユーザーのタイムライン、イベントを取得 ! •
目的: Twitter連携するサービスなど • タイムラインのツイート、DM、fav / follow等を受信 • プロテクトアカウントのツイートも受信可能 • 要OAuth
49.
Site Stream • エンドポイント(POST) ‣
https://sitestream.twitter.com/1.1/site.json • パラメータ ‣ follow: 受信するユーザーIDをカンマ区切りで指定、100人まで ! ! • レスポンス ‣ statusオブジェクトのjson等 follow=1234,5678,91023,45324....
50.
Site Streamのコネクション管理 • 接続時に指定できるユーザーは100人まで •
事前にOAuth認証しておく必要がある ! • コントロールストリームでユーザーの追加、 削除可能 • 1コネクションで最大1000人まで受信可能
51.
コントロールストリーム • Site Stream接続時にコントロール用エンドポ イントが返る ! ! •
RESTでコントロール用エンドポイントを操作 https://dev.twitter.com/docs/streaming-api/control-streams {"control": { “control_uri":"/1.1/site/c/ 1_1_54e345d655ee3e8d" }} https://sitestream.twitter.com/1.1/site/c/1_1_54e345d655ee3e8d”
52.
コントロールストリームのメソッド • ユーザーの追加 (POST) ! •
パラメータ ‣ user_id: カンマ区切りのユーザーID(100人まで) https://sitestream.twitter.com/1.1/site/c/****/add_user.json”
53.
コントロールストリームのメソッド • ユーザーの削除(POST) ! • パラメータ ‣
user_id: カンマ区切りのユーザーID(100人まで) https://sitestream.twitter.com/1.1/site/c/****/remove_user.json”
54.
ベストプラクティス • 可能な限りストリーミング APIを使う •
参照系はレートリミット回避のためできるかぎりREST APIよりもストリーミング APIを利用 • gzipを使う • 帯域を節約 • 接続ネットワークを確認 • 3G接続での利用は推奨されない。接続が切られることも
55.
FAQ • ストリーミングAPIはJavaScriptから使える? • 使えない。サーバサイドの仕組みが必要 •
1%以上のツイートにアクセスしたい • http://gnip.com/ • firehoseは? • 一般に提供はされていない
56.
Webサイト向けAPI • サーバサイドの実装不要 • Web
Intents • フォローボタン • Twitterボタン • ウィジェット
57.
Web Intents • リンクで簡単にTwitterと連携 http://bit.ly/web-intents <script
type="text/javascript" src="http:// platform.twitter.com/widgets.js"></script> ! <a href="http://twitter.com/intent/ retweet?tweet_id=163049746431348736">リツイー ト</a>
58.
Twitterボタン
59.
ウィジェット
60.
情報源 • dev.twitter.com -
Discussions ! ! • @TwitterDevJP ! ! • The Twitter Japan Developer Blog https://dev.twitter.com/discussions https://twitter.com/TwitterDevJP https://blog.twitter.com/ja/developer
61.
APIたくさんあるので詳しくは…
62.
http://amzn.to/twtr-ref Twitter APIポケットリファレンス
63.
#apijp Twitter APIの応用範囲
64.
Twitter APIの応用範囲 • 認証 •
ソーシャルログイン https://manage.doorkeeper.jp/ より
65.
Twitter APIの応用範囲 • キュレーション http://togetter.com
より
66.
Twitter APIの応用範囲 • 出力系 •
通知 / アラート
67.
Twitter APIの応用範囲 • 出力系 •
告知
68.
Twitter APIの応用範囲 ∞
69.
#apijp Twitter API最新事例
70.
#apijp Twitter API最新事例 • YAYOI
SMART CONNECT https://www.yayoi-kk.co.jp/smart/index.html より
71.
#apijp Twitter API最新事例 https://www.yayoi-kk.co.jp/smart/index.html より
73.
#apijp https://www.yayoi-kk.co.jp/smart/index.html より
74.
#apijp Twitter API最新事例 • YAYOI
SMART CONNECT • Twitterが入力ソースの1つ Twitter APIが弥生のAPIにもなる
75.
#apijp Twitter API最新事例 • #アマゾンポチ https://blog.twitter.com/node/4502
より
76.
#apijp Twitter API設計の歴史
77.
#apijp Twitter API設計の歴史 • 2006年
Twitter / Twitter APIリリース • 2009年3月 OAuth対応 • 2009年5月 Streaming APIリリース • 2009年9月 Twitter Web AJAX化 / 検索APIリリース • 2012年9月 Twitter API 1.1リリース • 2013年6月 Twitter API 1.0 / Twitter Anywhere 廃止 • 2014年1月 全面SSL化
78.
Twitter API設計の歴史 • 2006年
Twitter / Twitter APIリリース • 2009年3月 OAuth対応 • 2009年5月 Streaming APIリリース • 2009年9月 Twitter Web AJAX化 / 検索APIリリース • 2012年9月 Twitter API 1.1リリース • 2013年6月 Twitter API 1.0 / Twitter Anywhere 廃止 • 2014年1月 全面SSL化 セキュリティ スケーラビリティ 新機能追従 セキュリティ
79.
#apijp 人気を支えてきたAPIの設計 • シンプルなセキュリティモデル • 全部アクセス可のBASIC認証 •
OAuthは読み・書き・DMアクセス可の3種のみ
80.
#apijp Twitter APIの設計 • ゆるい設計:
スキーマ定義なし • 実態に応じてフレキシブルに変更 • 不定期に増える属性 • 大きな変更はAPIバージョニングにて対応
81.
#apijp 人気を支えてきたAPIの設計 • レートリミット • 2007年∼
150回/h • 2009年∼ 350回/h • 2012年∼ 15回/15分:エンドポイント レスポンスより詳細を取得可
82.
#apijp Twitter APIの現在
83.
#apijp Twitter APIの現在 • 2006年∼2012年
: 2ヶ月に1回くらい新機能追加 • 2012年9月Twitter API 1.1リリース、安定期突入
84.
#apijp Twitter APIの現在 • 今年に入り多くの新機能 •
ダイレクトメッセージへの画像添付 • 複数画像添付 • ミュート
85.
#apijp 締め
86.
#apijp Twitter APIの今後
87.
#apijp Twitter APIの今後 Webの進化 Twitterの進化 Twitter APIの進化
88.
#apijp ありがとうございました @yusuke
Download