google app engineでtwitterアプリを作ろう
DESCRIPTION
TRANSCRIPT
![Page 1: Google App EngineでTwitterアプリを作ろう](https://reader035.vdocuments.mx/reader035/viewer/2022081414/54b7578e4a7959410b8b456a/html5/thumbnails/1.jpg)
Google App Engine でTwitter アプリを作ろう
2010 年 8 月S-cubism 技術勉強会
細田謙二
![Page 2: Google App EngineでTwitterアプリを作ろう](https://reader035.vdocuments.mx/reader035/viewer/2022081414/54b7578e4a7959410b8b456a/html5/thumbnails/2.jpg)
Twitter について
![Page 3: Google App EngineでTwitterアプリを作ろう](https://reader035.vdocuments.mx/reader035/viewer/2022081414/54b7578e4a7959410b8b456a/html5/thumbnails/3.jpg)
Google App Engine について
![Page 4: Google App EngineでTwitterアプリを作ろう](https://reader035.vdocuments.mx/reader035/viewer/2022081414/54b7578e4a7959410b8b456a/html5/thumbnails/4.jpg)
Google App Engine でできること
なんといってもタダ!
ウェブサービスだけではない
URL フェッチやクーロンタスクも可能
![Page 5: Google App EngineでTwitterアプリを作ろう](https://reader035.vdocuments.mx/reader035/viewer/2022081414/54b7578e4a7959410b8b456a/html5/thumbnails/5.jpg)
こんなことが可能
ダウンロード個人レベルでのデータ集約&解析
![Page 6: Google App EngineでTwitterアプリを作ろう](https://reader035.vdocuments.mx/reader035/viewer/2022081414/54b7578e4a7959410b8b456a/html5/thumbnails/6.jpg)
本日のレシピ本日のレシピGoogle App Engine で
Tweet Aggregator を作る
Web2pyWeb2py
OAuthOAuth
Twitter APITwitter API
Google App EngineGoogle App Engine
![Page 7: Google App EngineでTwitterアプリを作ろう](https://reader035.vdocuments.mx/reader035/viewer/2022081414/54b7578e4a7959410b8b456a/html5/thumbnails/7.jpg)
tweepy ライブラリを利用する
• Twitter API の Python ラッパー
• OAuth 認証が利用可能
ん。。 OAuth って?
![Page 8: Google App EngineでTwitterアプリを作ろう](https://reader035.vdocuments.mx/reader035/viewer/2022081414/54b7578e4a7959410b8b456a/html5/thumbnails/8.jpg)
Twitter の利用制限
• 匿名リクエストは、 IP 毎に、 1 時間に 150 回まで
• Google App Engine では IP を共有利用• → すぐ制約にひっかかる
• OAuth 認証を利用すれば、 IP 制約がない– 1 時間に 350 回まで– Twitter にログインした状態と同じことができる
![Page 9: Google App EngineでTwitterアプリを作ろう](https://reader035.vdocuments.mx/reader035/viewer/2022081414/54b7578e4a7959410b8b456a/html5/thumbnails/9.jpg)
OAuth の設定1
• 適当なアプリ名を入力すれば OK–認証後、指定 URL にリダイレクトするか否か
の設定なども行う
• Cunsumer Key と Consumer secret を取得
Twitter にてアプリケーション登録
![Page 10: Google App EngineでTwitterアプリを作ろう](https://reader035.vdocuments.mx/reader035/viewer/2022081414/54b7578e4a7959410b8b456a/html5/thumbnails/10.jpg)
OAuth の設定2
import tweepyauth = tweepy.OAuthHandler(
consumer_key, consumer_secret)
(以降 tweepy を利用)取得した "consumer token" から
auth オブジェクトを作成
![Page 11: Google App EngineでTwitterアプリを作ろう](https://reader035.vdocuments.mx/reader035/viewer/2022081414/54b7578e4a7959410b8b456a/html5/thumbnails/11.jpg)
OAuth の設定3
redirect_url = auth.get_authorization_url()request_key = auth.request_token.keyrequest_secret = auth.request_token.secret
これらの出力をメモ
"redirect url" と "request token" を取得
![Page 12: Google App EngineでTwitterアプリを作ろう](https://reader035.vdocuments.mx/reader035/viewer/2022081414/54b7578e4a7959410b8b456a/html5/thumbnails/12.jpg)
OAuth の設定4
12345677 桁の数字が表示されるので、
これもメモ
取得した "redirect url" を( twitter にログインした状態で)開く
![Page 13: Google App EngineでTwitterアプリを作ろう](https://reader035.vdocuments.mx/reader035/viewer/2022081414/54b7578e4a7959410b8b456a/html5/thumbnails/13.jpg)
OAuth の設定5
auth.set_request_token(request_key, request_secret)
auth.get_access_token(verifier_digits)
access_key = auth.access_token.key access_secret = auth.access_token.secret
取得した 7 桁の数字
これらの出力をメモ
"access token" の取得
![Page 14: Google App EngineでTwitterアプリを作ろう](https://reader035.vdocuments.mx/reader035/viewer/2022081414/54b7578e4a7959410b8b456a/html5/thumbnails/14.jpg)
OAuth の設定6
auth.set_access_token(access_key, access_secret)
# これで API が利用可能に!api = tweepy.API(auth)
api オブジェクトの作成
![Page 15: Google App EngineでTwitterアプリを作ろう](https://reader035.vdocuments.mx/reader035/viewer/2022081414/54b7578e4a7959410b8b456a/html5/thumbnails/15.jpg)
こんな感じでツイートを収集
# since_id 以降のツイートを最大 200 件取得tweets = api.home_timeline(
since_id, count=200)
for tweet in tweets:tweet.id
tweet.text ...
![Page 16: Google App EngineでTwitterアプリを作ろう](https://reader035.vdocuments.mx/reader035/viewer/2022081414/54b7578e4a7959410b8b456a/html5/thumbnails/16.jpg)
Aggregator を作る
• ツイートの定期収集– URL フェッチ– DB へ保存 (Web2py だと簡単 )–クーロンで回す ( 設定ファイルで可能 )
• 未読 / 既読を設定してみる
![Page 17: Google App EngineでTwitterアプリを作ろう](https://reader035.vdocuments.mx/reader035/viewer/2022081414/54b7578e4a7959410b8b456a/html5/thumbnails/17.jpg)
Web2py を利用する• Python のウェブフレームワーク
• Google App Engine 上でも動作する
• 習得が容易– 大学での教育用として開発
![Page 18: Google App EngineでTwitterアプリを作ろう](https://reader035.vdocuments.mx/reader035/viewer/2022081414/54b7578e4a7959410b8b456a/html5/thumbnails/18.jpg)
ツイートモデルを定義
db.define_table('tweet', Field('uuid', 'integer'), Field('tweeted_at', 'datetime'), Field('content', 'string'), Field('user_name', 'string'), Field('user_image', 'string'), Field('read_flg', 'boolean', default=False),))
Web2py の db オブジェクト
Web2py のmodel 内で定義
未読 / 既読の設定
![Page 19: Google App EngineでTwitterアプリを作ろう](https://reader035.vdocuments.mx/reader035/viewer/2022081414/54b7578e4a7959410b8b456a/html5/thumbnails/19.jpg)
未読のみ表示してみる# 未読ツイートの取得tweets = db(db.tweet.read_flg==False
).select(limitby=(start, end),orderby=~db.tweet.tweeted_at)
# 既読に設定for tweet in tweets: tweet.update_record(read_flg=True) # ビューで表示return dict(tweets=tweets)
Web2py のcontroller 内の関数
![Page 20: Google App EngineでTwitterアプリを作ろう](https://reader035.vdocuments.mx/reader035/viewer/2022081414/54b7578e4a7959410b8b456a/html5/thumbnails/20.jpg)
Google App Engine にデプロイ
• Google App Engine のアプリケーションの登録
• SDK のインストール• 設定ファイルの記述–アプリケーション名を登録– DB インデックスや、クーロンタスクなどを設定
• (web2py の ) ソースをコミット
![Page 21: Google App EngineでTwitterアプリを作ろう](https://reader035.vdocuments.mx/reader035/viewer/2022081414/54b7578e4a7959410b8b456a/html5/thumbnails/21.jpg)
デモ
![Page 22: Google App EngineでTwitterアプリを作ろう](https://reader035.vdocuments.mx/reader035/viewer/2022081414/54b7578e4a7959410b8b456a/html5/thumbnails/22.jpg)
こんなことができる(かも)
• ユーザー毎に未読数・既読数の表示
• メンションやリツイートなどに関する詳細分析
• 頻出単語の算出
• 個人の嗜好を反映したツイートの分類