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

MENU

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

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

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

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

こんにちは、ぴかしです。前回、Kay Frameworkでアプリケーションを作成し、Helloを表示させてみました。今回は、アプリケーション内の各ファイルについて説明しながら、Twitterクライアントの基本的な機能を作ってみます。開発環境はMac OS 10.8、Python2.7、GAE SDK 1.8.3、Kay Framework2.0です。

前回作成したアプリケーションclientは、以下の構造になっています。機能ごとにファイルが分割されています。

client
├── __init__.py
├── models.py
├── templates
│ └── index.html
├── urls.py
├── views.py

今回は、この中のview.py、templates/index.htmlについて見ていきます。views.pyは、処理のメインロジックを担当し、templatesはUIを担当します。views.pyはMVCにおけるM(モデル)、templatesはV(ビュー)にそれぞれ相当します。名前が少し分かりにくいので注意して下さい。

views.pyでTwitterのデータ(タイムライン)を取得し、それをtemplates/index.htmlで表示させてみようと思います。

今回もTwitter APIを利用するので、第2回でダウンロードしたtwitter.py、simplejson、httplib2、python-oauth2を、以下の構造になるように置いてください。

client
├── __init__.py
├── httplib2/
├── oauth2/
├── simplejson-3.3.0/
├── twitter.py
├── models.py
├── templates
│   └── index.html
├── urls.py
└── views.py

次に、自分の普段利用しているTwitterアカウントのConsumer key、Consumersecret、Access token、Access token secretを、第2回と同じ方法で取得して下さい。

以下、ホーム画面のタイムラインをapi.GetHomeTimeline()で取得し、各ツイ
ートの情報をtemplates/index.htmlに渡してみます。今回は、ツイートのid、ア
カウント名、ユーザ名、ツイート内容、投稿時間を取得します。

views.py

# -*- coding: utf-8 -*-
from kay.utils import render_to_response
from datetime import datetime
import twitter
def index(request):
 # XXXXXXXXXXの部分は、先程取得したものに置き換えて下さい
 CONSUMER_KEY='XXXXXXXXXX'
 CONSUMER_SECRET=' XXXXXXXXXX '
 ACCESS_TOKEN=' XXXXXXXXXX '
 ACCESS_TOKEN_SECRET=' XXXXXXXXXX '
 api = twitter.Api(consumer_key=CONSUMER_KEY,
 consumer_secret=CONSUMER_SECRET,
 access_token_key=ACCESS_TOKEN,
 access_token_secret=ACCESS_TOKEN_SECRET,
 cache=None)
 tweet_list = []
 # ホーム画面のタイムラインを取得します
 TL = api.GetHomeTimeline()
 for tweet in TL:
 # ツイートのid、アカウント名、ユーザ名、ツイート内容、投稿時間を取得
します
 id, screen_name = tweet.id, tweet.user.screen_name
 name, text = tweet.user.name, tweet.text
 time = datetime.fromtimestamp(tweet.created_at_in_seconds)
 # 取得した情報をdictに格納します
 tweet_info = {'id':id, 'screen_name':screen_name, 'name':name,
 'time':time, 'text':text}
 tweet_list.append(tweet_info)
 # index.htmlをレンダリングします
 # 各ツイートがの情報(dict)が格納されたリストtweet_listを渡します
 return render_to_response('client/index.html', {'timeline': tweet_list})

view.pyから渡された各ツイートの情報を表示してみましょう。Kayでは、
Jinja2というテンプレートエンジンを使っています。基本的には、以下の2つのことを覚えておけば大丈夫です。

  • {{ }}でviews.pyから渡された値を表示
  • {% %}にif、forなどの制御構造を記述

以下では、timelineというリストに各ツイートの情報(dict)が格納されているの
で、for文を使って順に表示させています。 

index.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://
www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Top Page - client</title>
</head>
<body>
{% for tweet in timeline %}
{{ tweet['screen_name'] }}<br>
{{ tweet['name'] }}<br>
{{ tweet['time'] }}<br>
{{ tweet['text']}}<br><br>
{% endfor %}
</body>
</html>

では、前回と同様に、以下のコマンドでアプリケーションを起動し、http://localhost:8080 にアクセスしてみましょう。

python manage.py runserver

以下のように、タイムラインが表示されていれば成功です。

これで、Twitterクライアントの基本的な機能は完成しました。次回は、models.pyでモデルを定義し、データストアを利用してみようと思います。最後まで読んでいただき、ありがとうございました。次回もご期待ください。

オススメ記事一覧

もっと見る
完全無料!

1で登録完了!

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

今すぐ新規会員登録
Page Top