関連 : microneを使ったらApp EngineのTwitter botが14行で書けた
Flaskというフレームワークを使って,Google App EngineでTwitterのBotを作ってみたら15行で書けてしまった(あと5行短くなるけど,PEP 8というPythonのスタイルガイドを破ることになるのでそこまで短くしない)。
まずはコードを見てもらいましょう。
#coding: utf-8
from random import choice
from twython import core
from flask import Flask
app = Flask(__name__)
@app.route('/post_update')
def post_update():
post=choice(list(open('messages.txt')))
api=core.setup('TwitterのID', 'Twitterのパスワード')
api.updateStatus(post)
return post
if __name__ == '__main__':
app.run()
Bot公開までの手順は以下。
- Google App Engine Pythonをダウンロード,設定。アプリケーションを作っておきます
- ここからプロジェクトのひな形をダウンロード
「Download Sorce」というボタンを押せばOK。展開してできたフォルダを「flaskbot」などと名前を変えておきます - PythonのTwitterライブラリTwythonをダウンロード,twythonというフォルダを2のフォルダ直下に移動しておきます
- 2で作ったフォルダの下にあるapplication.pyのコードを,上のコードに入れ替えます。IDとパスワードは書き換えてくださいね
- application.pyと同じ階層に「messages.txt」というファイルを作ります。UTF8でBotにつぶやかせたい文字列を改行区切りで書いておきます
- app.yamlの1行目「application: XXXX」の「XXXX」を,1で作ったアプリケーションIDに書き換え,最後の「login: required」を削除します
5まで行ったら,1回ローカルの開発環境でテストしてみてもよいかも。
App Engineにアップロードして,ブラウザで「http://アプリケーションID.appspot.com/post_update」を開いてみて,つぶやきが流れたら成功:-)。
次のような「cron.yaml」ファイルを作ると,Botが定期的につぶやきます。
cron:
- description: post update to twitter
url: /post_update
schedule: every 1 minutes
こんなに簡単にBotが作れてしまう秘密は,なんと言ってもFlaskというフレームワークにあります。このフレームワーク,実はここで紹介したエイプリルフールのジョークが元になって作られたフレームワーク。ネタのつもりがコンセプトがあまりにも良すぎたためか反響が大きく,作者が正式に開発を始めてしまった。
コードを見れば分かると思うけど,依存関係が少なくて実働するWebアプリケーションを最小の労力で作れる,というのが魅力。デコレータを使ってURLを定義し,関数を書くだけでWebアプリが作れてしまう。最近のフレームワークは巨大化しすぎていて依存関係が多く,使い方を覚えるのが大変。でも,Flaskならほとんどなにも覚えなくても使い始めることができるはず。それくらい手軽で簡単なのだ。
ひな形にはApp Engine + Flaskで作ったToDo管理アプリのサンプルになっている。テンプレートやDatasotreを使った,より本格的なWebアプリを作りたくなったら,参考にするといい。