「作ればわかる! Google App Engine for Java プログラミング」本をPythonで書いてみる (7)

引き続き、「作ればわかる! Google App Engine for Java プログラミング」本にてPythonを修行中。


今回はTwitterボットの作成。
PythonでのTwitterの扱い方をメインに学んだ。
また、公式サポートサイトにはSentenceの削除も掲載されていたので、合わせてそちらも実装した。

■開発する前の準備

必要なライブラリのダウンロード・配置

以下のライブラリをダウンロード。ローカルへのインストールは不要だった。
なお、「simplejson」については、ソースコードを見る限りjsonライブラリがあれば不要そうだった。 (使用中のGAEはPython2.7であったため、jsonライブラリが存在)

 著者のnakaken0629さんより教わった、「twitter.py」モジュール。現時点での最新版は、「0.8.2」。
 使い方は、同梱の「python_twitter_help.html」に詳しく記載されているため、迷うことはなかった。
 GitHubには、nakaken0629さんが使用した時のソースもあったので、そちらも参考にした。
 以前の情報では、cacheまわりに不具合があるためにGAEでは使いづらかった模様だが、現在はcacheの使用可否を指定できるため、パッチは不要。

 「python-twitter」の依存ライブラリ。現時点での最新版、「httplib2-0.7.6.zip」をダウンロード。
 

 同じく、「python-twitter」の依存ライブラリ。現時点での最新版(build 211)をダウンロード。
 GitHub - simplegeo / python-oauth2



Twitterのアクセストークンの取得

本p296の「アクセストークンを取得する」のような方法を取らなくても、現在は容易にアクセストークンを取得できた。
ついーたーTweeter.jp - これでデベロッパーの手間激減!自分のoAauth用アクセストークンの取得が簡単に!


Twitterのアカウントとか、Yahooのアカウントについては、本の記載のまま。



■実装時に困ったことと対応

複数の戻り値を取得するには

クラスを作ることも考えたが、複数の戻り値も戻せそうなので、今回はそちらにて実装。
オダろぐ - 複数の返り値があるとき,どう返すべきか?



集合に含まれるかをチェックするには

本ではフォロー一覧・フォロワー一覧を取得し、バイナリサーチにて相互フォローとなっているかを確認していた。
Pythonではどのような方法があるのかを調べてみたところ、set型の存在を知り、使ってみた。

Yahoo!日本語係り受け解析について

公開されているモジュールがあるかもしれないと思い、探してみたところいくつか見つかった。
UkyoWeb - Yahoo!テキスト解析APIのPythonラッパー全部


ただし、今回はfeatureタグの中身しか使わず、モジュールを使うのは重厚すぎたことから、参考にして自作することにした。



ランダムでデータを取得するには

randamモジュールを使えば実現できた。
Python 2.7ja1 documentation - 9.6. random ― 擬似乱数を生成する



データストアからキーの値を取得

Keyインスタンスのid()メソッドで取得できる。
Google Developers - Google App Engine - Key クラス



ソースコード

GitHubのChap8へアップ。