引き続き、「作ればわかる! 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-oauth2
同じく、「python-twitter」の依存ライブラリ。現時点での最新版(build 211)をダウンロード。
GitHub - simplegeo / python-oauth2
Twitterのアクセストークンの取得
本p296の「アクセストークンを取得する」のような方法を取らなくても、現在は容易にアクセストークンを取得できた。
ついーたーTweeter.jp - これでデベロッパーの手間激減!自分のoAauth用アクセストークンの取得が簡単に!
Twitterのアカウントとか、Yahooのアカウントについては、本の記載のまま。
■実装時に困ったことと対応
集合に含まれるかをチェックするには
本ではフォロー一覧・フォロワー一覧を取得し、バイナリサーチにて相互フォローとなっているかを確認していた。
Pythonではどのような方法があるのかを調べてみたところ、set型の存在を知り、使ってみた。
Yahoo!日本語係り受け解析について
公開されているモジュールがあるかもしれないと思い、探してみたところいくつか見つかった。
UkyoWeb - Yahoo!テキスト解析APIのPythonラッパー全部
ただし、今回はfeatureタグの中身しか使わず、モジュールを使うのは重厚すぎたことから、参考にして自作することにした。
JavaのMessageFormat.formatのようなもの
文字列のformat()で指定すればよいらしい。
Python 2.7ja1 documentation - 7.1. string ― 一般的な文字列操作 - 7.1.3.2. 書式指定例
stackoverflow - Using Python String Formatting with Lists