• ログインログイン
  • 新規登録新規登録

MENU

Google App Engineで遊んでみよう! 第2回

連載Google App Engineで遊んでみよう!

GoogleAppEngineを使った開発レシピです。AWSやさくらインターネットのVPSやレンタルサーバなどの他の有名なクラウド環境と比べると少しクセがあるものの、慣れると非常に楽に開発やローンチができます。一定の範囲内まで無料で活用できるようになっているので、これを機会にぜひ活用してみましょう。

前回までのプログラミング学習コラムに続き2回目の勉強内容です。

こんにちは! ぴかし です。

前回は、GAEの概略を説明しました。今回から3〜4回で、Twitter BotをPythonで作成し、GAE上で動かしてみます。ぜひ手を動かして一緒にやってみて下さい。今回は、Twitter APIの説明や、Pythonからの利用方法について解説します。

Twitter API

Twitter APIを用いることで、プログラムからTwitterの主な機能を利用することができます。

Twitter APIは今年6月にv1.0からv1.1に完全に移行し、各エンドポイントごとに15分15回と、制限がかなり厳しくなりました。 したがって、同じ機能(例えばTL取得など)を短時間に何度も利用することはできなくなったので、APIを利用して何か作成する際には、制限に引っかからないように注意して下さい。 

まず、Bot用のTwitterアカウントを作成しましょう。ここでは、「歯医者こわい」というツイートをしている人に「歯医者こわくないよ!がんば!」とリプライするだけのBotを作成してみます。

Twitter APIを利用するには、Twitter Developersへのアプリケーション登録が必要ですので、アプリケーション名やその説明などを登録して下さい。登録が完了すると、アプリケーション一覧ページに今登録したものが表示されます。

次に、アプリケーションの設定を行います。下図の赤枠の部分で、どの機能を利用するのかを設定します。

Read onlyにするとデータ取得関連APIのみ利用可能、Read and Writeにすると、それに加えてデータ更新(ツイート投稿やフォローなど)も可能になります。今回は、ツイートを投稿したいのでRead and Writeにしておきます。

そして更新すると、Access TokenとAccess Token Secretが得られます。それらとConsumer key、Consumer secretを合わせた4つが、後にAPIを利用する際に必要になります。

python-twitterを使ってみる

PythonからTwitter APIを利用するにあたって、今回はpython-twitterというラッパーを利用します。まず、以下の3つのライブラリをダウンロードします。

そして、python-twitterをダウンロードし、以下のような構造になるように、twitter.pyを置いて下さい。

├── httplib2/
├── oauth2/
├── simplejson-3.3.0/
└── twitter.py

これで準備が整ったので、いよいよメインのプログラムを作成します。以下のコード(post_tweet.py)をtwitter.pyと同じ階層に置きます。

# -*- coding: utf-8 -*-
import twitter 
# XXXXXXXXXXXXの部分は、先程取得したものに置き換えて下さい
CONSUMER_KEY="XXXXXXXXXXXX"
CONSUMER_SECRET="XXXXXXXXXXXX"
ACCESS_TOKEN="XXXXXXXXXXXX"
ACCESS_TOKEN_SECRET="XXXXXXXXXXXX" 
api = twitter.Api(consumer_key=CONSUMER_KEY,consumer_secret=CONSUMER_SECRET,access_token_key=ACCESS_TOKEN,access_token_secret=ACCESS_TOKEN_SECRET,cache=None)
api.PostUpdate("歯医者こわくないよ!がんば!".decode("utf-8"))

このプログラムをターミナルから実行してみましょう。

python post_tweet.py

すると、記事が投稿されるはずです。以下の投稿がTwitterアカウントから確認できれば成功です。

ちなみに、以下の部分でツイートの投稿を行なっています。python-twitterのモジュールが実際に何をしているのかに関しては、次回詳しく解説します。

api.PostUpdate("歯医者こわくないよ!がんば!".decode("utf-8"))

ただし、これだとただ勝手に「歯医者こわくないよ!」と言っているだけなので、誰も見てくれません。次回は、「歯医者こわい!」と言っている人に対してリプライする機能を実装していきます。

最後まで読んでいただき、ありがとうございました。次回もご期待下さい。

オススメ記事一覧

もっと見る
完全無料!

1で登録完了!

エンジニアの仕事・年収や選考ノウハウ記事が読めるほか、
会員にはプログラミング講習やES・面接対策などリアルな無料サポートも充実。
ここだけの求人情報も多数。

今すぐ新規会員登録
Page Top