29
Yusuke Yamamoto

第2.1回Twitter API勉強会 - 検索API

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: 第2.1回Twitter API勉強会 - 検索API

Yusuke Yamamoto

Page 2: 第2.1回Twitter API勉強会 - 検索API

Yusuke Yamamoto

第2.1回Twitter API勉強会

#twtr_hack

2011/12/18

Page 3: 第2.1回Twitter API勉強会 - 検索API

Yusuke Yamamoto

質問など

#twtr_hack #q

Page 4: 第2.1回Twitter API勉強会 - 検索API

Yusuke Yamamoto

Twitter API勉強会• 対象‣ Twitter APIに興味がある方であればどなたでも

• 目的‣ 技術情報のシェア / 技術者の交流

• 今回は第2.1回目

4

Page 5: 第2.1回Twitter API勉強会 - 検索API

Yusuke Yamamoto

Twitter APIハッカソン• Twitter と連携する何かを開発

‣ Webサービス

‣ デスクトップアプリケーション/ユーティリティ

‣ モバイルアプリ など

5

Page 6: 第2.1回Twitter API勉強会 - 検索API

Yusuke Yamamoto

第2.1回Twitter API勉強会• @yusukey

‣ Twitter の検索API等

• @knj77

‣ Zusaarについて何か

• LT

‣ @tkawa / @mike_neck / @ts_3156 / @sue445 / @imaoca

6

Page 7: 第2.1回Twitter API勉強会 - 検索API

Yusuke Yamamoto

今日のタイムテーブル19:00~ APIの基本と最新動向について @yusukey

19:40~ グループに分かれて自己紹介19:50~ Zusaarについて何か @knj77

20:20~ LT

- OAuth Echoについて@tkawa

- GroovyとQuartzとTwitter4Jの甘い生活G @mike_neck

- 認証なしで使えるAPIまとめ @ts_3156

- TDD @sue445- 放射線を自動計測してTwitterにつぶやくimaocandeの紹介 @imaoca

7

Page 8: 第2.1回Twitter API勉強会 - 検索API

Yusuke Yamamoto

Twitter API ポケットリファレンス

• 好評発売中!

http://amzn.to/twtr-ref8

Page 9: 第2.1回Twitter API勉強会 - 検索API

Yusuke Yamamoto

第2.1回Twitter API勉強会• 内容‣ Twitter APIの検索API

‣ 最近のTwitter APIアップデート

‣ t.coリンクの対応方法

9

Page 10: 第2.1回Twitter API勉強会 - 検索API

Yusuke Yamamoto

Twitter の検索API

Page 11: 第2.1回Twitter API勉強会 - 検索API

Yusuke Yamamoto 11

Twi$er'API�

REST'API'

��API�

�#05*4��API�

Web��#���API�

� :'-%�1�(0'��:'Java,'Objec8ve9C'

"��# (�(0,'�5&�'Java,'Python,'PHP,'Ruby,'Objec8ve9C'

� :'Web��#'��:'HTML,'JavaScript'

Streamed'Tweets'

.5�5�#05+� ��#�#05+�

!�5#)�4'

Web'Intents�

@Anywhere�

��+/�4'

!�5#'

'�35'

���4#'

��2�#, �5�'

0�#'

�����'

#24$'

��'

'�35)�4'

Page 12: 第2.1回Twitter API勉強会 - 検索API

Yusuke Yamamoto

検索 API• プル型‣ 最近のツイートを検索

• https://twitter.com/#!/search-homeとほぼ同じ機能

12

Page 13: 第2.1回Twitter API勉強会 - 検索API

Yusuke Yamamoto

REST APIと検索 API• 2008年にTwitter検索エンジン-Summize社を買収

• 検索APIも技術的にはREST API

• レスポンスのスキーマが異なる!!!

13

https://dev.twitter.com/docs/api/1/get/search

Page 14: 第2.1回Twitter API勉強会 - 検索API

Yusuke Yamamoto

検索 APIの呼び出し• エンドポイント(GET)

‣ http://search.twitter.com/search.json?q=****

• qパラメータq : 検索クエリ

・ #twtr_hackを含むツイート

q=#twtr_hack

・@yusukeyの#twtr_hackを含むツイート

q=#twtr_hack+from:yusukey

14

Page 15: 第2.1回Twitter API勉強会 - 検索API

Yusuke Yamamoto

検索 APIのレスポンス

15

{"completed_in": 0.055442, "max_id": 38516581864718336, "max_id_str": "38516581864718336", "next_page": "?page=2&max_id=38516581864718336&q=twitterapi", "page": 1, "query": "twitterapi", "refresh_url": "?since_id=38516581864718336&q=twitterapi", "results": [ {"created_at": "Fri, 18 Feb 2011 08:49:25 +0000", "from_user": "yusukey", "from_user_id": 10248, "from_user_id_str": "10248", "geo": null, "id": 38520449856045056, "id_str": "38520449856045056", "iso_language_code": "ja", "metadata": {"result_type": "recent"}, "profile_image_url": "http://a1.twimg.com/profile_images/1130177378/b_normal.jpg", "source": "<a href=\"http://sites.google.com/site/yorufukurou/\" rel=\"nofollow\">YoruFukurou<\/a>", "text": "twitterapi今日は安定してるなー", "to_user_id": null, "to_user_id_str": null}, ...]}

Page 16: 第2.1回Twitter API勉強会 - 検索API

Yusuke Yamamoto

期間を絞る・sinceオペレータ : 指定した日(UTC)以降のツイート

q=#twtr_hack+since:2011-12-21

・untilオペレータ : 指定した日(UTC)以前のツイート

q=#twtr_hack+until:2011-12-21

16

Page 17: 第2.1回Twitter API勉強会 - 検索API

Yusuke Yamamoto

ページ処理・rpp: 1レスポンス当たりの最大ツイート数(最大100まで指定可)

q=foobar&rpp=100

・page: ページ(初期値は1、最大15まで)

q=foobar&page=2

・max_idパラメータ : 指定したツイートID以前のツイート

q=foobar&max_id=149144352336265217

17

Page 18: 第2.1回Twitter API勉強会 - 検索API

Yusuke Yamamoto

ページ処理ベストプラクティス

・rppは100まで、pageは15まで

最大1500件までしか取れない→max_idパラメータで回せばok

Twitter4Jを使った例18

Query query = new Query(term); query.rpp(100);do { QueryResult qr = twitter.search(query); tweets = qr.getTweets(); for (Tweet tweet : tweets) { // ... } if (tweets.size() != 0) { query.setMaxId(tweets.get(tweets.size() - 1).getId() - 1); }} while (tweets.size() != 0);

Page 19: 第2.1回Twitter API勉強会 - 検索API

Yusuke Yamamoto

最近のTwitter APIアップデート

Page 20: 第2.1回Twitter API勉強会 - 検索API

Yusuke Yamamoto

ストリーミングAPIの変更・エンドポイントがSSLのみに(9月末~)

一般

https://stream.twitter.com/1/

ユーザーストリーム

https://userstream.twitter.com/2/

サイトストリーム

https://sitestream.twitter.com/2b/

20

Page 21: 第2.1回Twitter API勉強会 - 検索API

Yusuke Yamamoto

検索APIのスキーマ変更1・ユーザー名の追加(12月からデフォルト)

→ to_user_name / from_user_name

・in_reply_toの追加(12月からデフォルト)

→ 検索結果から会話を追える

21

Page 22: 第2.1回Twitter API勉強会 - 検索API

Yusuke Yamamoto

検索APIのスキーマ変更2・エンティティの追加(include_entities=true を指定)

22

"entities": { "hashtags": [{"indices": [9, 19], "text": "twitter4j"}], "urls": [{ "display_url": "twitter4j.org/ja/api-support\u2026", "expanded_url": "http://twitter4j.org/ja/api-support.html", "indices": [35, 54], "url": "http://t.co/b6l2xlU"}], "user_mentions": [{ "id": 4933401, "id_str": "4933401", "indices": [0, 8], "name": "山本 裕介", "screen_name": "yusukey"}]},"text": "@yusukey #twitter4j のAPIのページ更新しました http://t.co/b6l2xlU"

@yusukey #twitter4j のAPIのページ更新しました http://t.co/b6l2xlU

user_mention hashtag url

Page 23: 第2.1回Twitter API勉強会 - 検索API

Yusuke Yamamoto

t.coリンクの対応方法

Page 24: 第2.1回Twitter API勉強会 - 検索API

Yusuke Yamamoto

t.co• t.co: ティコ

• TwitterのURL短縮サービス

‣ 悪質なサイトへの誘導をブロック‣ リンクのクリックスルー測定‣ ツイート文字数制限を緩和

24

The t.co URL Wrapperhttps://dev.twitter.com/docs/tco-url-wrapper

Page 25: 第2.1回Twitter API勉強会 - 検索API

Yusuke Yamamoto

本当にあった怖いt.co• URLのつもりじゃないのにリンクになる

‣ 仕様です・・• 日本語(マルチバイト)を含むURLが・・・

‣ dev.twitter.com またはTwitter development Talkへ報告を

• リンク先のURLがわからない(クライアント依存)

25

Page 26: 第2.1回Twitter API勉強会 - 検索API

Yusuke Yamamoto

t.co FAQ• t.coバグだらけ!

‣ かなり直ってます• t.coのクリック数を取得するAPIは?

‣ 現在のところ非公開• 同じURLでも違うt.coリンクになる

‣ そういう仕様

26

Page 27: 第2.1回Twitter API勉強会 - 検索API

Yusuke Yamamoto

t.co FAQ• bit.lyのリンクをツイートした場合は?

‣ expanded_url / display_urlはbit.lyになる。2重展開はしない

• include_entities=trueを付け忘れた・・

‣ HEADリクエストでリダイレクト先を確認可能

27

Page 28: 第2.1回Twitter API勉強会 - 検索API

Yusuke Yamamoto

情報源• Twitter development talk-ja

• @twj_dev

• dev.twitter.com - Discussions

http://bit.ly/tdt-ja

https://dev.twitter.com/discussions

https://twtter.com/twj_dev

Page 29: 第2.1回Twitter API勉強会 - 検索API

Yusuke Yamamoto

今後の予定12月 検索 API

1月 Streaming API

2月 Webサイト向け API

3月 API 利用規約