このページの本文へ

前へ 1 2 3 4 5 次へ

  • twitterでつぶやく
  • はてなブックマークに登録
  • del.icio.usに登録
  • livedoorクリップに登録
  • Buzzurlに登録
  • StumbleUponに登録
  • Google Bookmarksに登録
  • Facebookでシェア
  • Yahoo!ブックマークに登録
  • お気に入りに登録
  • 本文印刷

Twitter&Google App Engineで始めるWebプログラミング入門 ― 第3回

サンプルコードで分かるGAE&Twitter API開発

2010年04月28日 11時00分更新

文● 飯島進仁/株式会社ふむふむソフト


Twitter API関数(メソッド)へのアクセス(発言の取得、発言の追加、削除など)

 Twitter API関数のアクセスにも、TwitterClientクラス、Cookiesクラスを利用します。ここでは自分の発言(タイムライン)の取得と表示について説明します。

 タイムラインの取得・表示処理をしているのが、MainHandlerクラス内に定義されている「ShowMyTimeline」関数です。

 まず、Twitter APIにアクセスしてタイムラインを取得する部分です。


[main.py:275 ~ 280行目]


param = {'count': TIMELINE_COUNT}
timeline_url = "http://api.twitter.com/1/statuses/home_timeline.json"
response = client.make_request(url=timeline_url,
            token=cookie["user_token"], 
            secret=cookie["user_secret"],
            additional_params=param)


 関数の冒頭では、取得する発言の個数をパラメーター用オブジェクトとして指定した後、TwitterClientクラスの機能を使ってリクエストを作成しています。ここで、先ほどCookieに保存した情報を利用しています。

 ここでは、Twitter APIの「home_timeline」関数を利用し、JSON形式で呼び出しています。home_timeline関数の詳細は以下を参照してください。


 次に、API関数から取得した結果を表示用に加工する部分です。


[main.py:287 ~ 290行目]


result = simplejson.loads(response.content)

#表示用にデータを調整 display_result = FormatResult(result)

 まず、JSON形式取得した結果をPythonで利用可能な形に変換します。その後、表示の下準備として、「FormatResult」関数で表示用に加工しています。詳細はコードを見ていただくとして、実際は以下のような処理をしています。

  • ユーザー名、発言内のURLをリンクタグに変更
  • 表示時間の形式を変更

 準備が完了したら、いよいよテンプレートHTMLを利用して画面を表示します。


取得したデータの表示

 取得したデータの表示も、先ほどと同じく「ShowMyTimeline」関数内の処理を例に説明します。先ほど下準備しておいたデータを、以下のような処理でテンプレートに沿って出力します。


[main.py:292 ~ 301行目]


template_values = {
    'IsMyHome': True,
    'MyScreenName' : cookie["screen_name"],
    'OwnerName' : cookie["screen_name"],
    'result': display_result
}
#テンプレートの読み込み
tmpl = os.path.join(os.path.dirname(__file__), HOME_TEMPLATE_NAME)
   #画面表示
return self.response.out.write(template.render(tmpl, template_values))


 「template_values」がテンプレート側で利用するためのパラメーターオブジェクトです。ここではテンプレート側で表示を切り替えるための値とともに、下準備しておいた「display_result」というデータを指定しています。

 その後、テンプレート用HTMLのファイル名を指定して読み込み、パラメーターオブジェクトとともに表示します。これらの処理はGAEにおけるテンプレート利用のお約束の書き方です。

 今度は、テンプレートHTML側の処理を見てみましょう。呼び出されているテンプレートHTMLは「home.html」ですので、home.htmlファイルの中身を確認してみます。

 home.htmlには、パラメーターオブジェクトとして渡したのと同じ変数名が見られます。Twitter APIから取得した発言を表示しているのは以下の部分です。


[home.html:27 ~ 40行目]


    <!-- timeline -->
      {% for st in result %}
        <div style="margin-bottom:10px;">
            <a href="/friends/{{ st.user.screen_name }}">{{ st.user.screen_name }} </a> : {{ st.display_text }}
            <!-- 自分の発言に対してのみ削除リンクを表示 -->
            {% ifequal st.user.screen_name MyScreenName %}
            &nbsp;&nbsp;<a href="/delete?id={{ st.id }}">削除</a>
            {% endifequal %}
            <br />
            from {{ st.source }} &nbsp;&nbsp {{ st.display_time }}
        </div>
      {% endfor %}
    <!-- //timeline -->


 この部分で、main.pyから渡された「result」という発言データを表示しています。発言データは取得した個数の配列になっていますので、ループ処理で1つずつ取り出しながら表示するわけです。

 Twitter APIから取得したデータをテンプレート内で利用するには「st_user_screen_name」のように指定する必要がありますが、データ構造はTwitter APIの使用に依存しますから、以下のページを見ながら調べます。

Twitter API Wiki ―Twitter API Documentation
http://apiwiki.twitter.com/Twitter-API-Documentation


 たとえば自分の発言(タイムライン)を取得するAPIメソッドは以下のページに記載されています。

Twitter API Wiki ―Twitter REST API Method: statuses home_timeline
http://apiwiki.twitter.com/Twitter-REST-API-Method%3A-statuses-home_timeline


 ページの下に「Response」という項目がありますが、このXMLフォーマットとテンプレートの記述が対応しています。上の例なら「st.user.screen_name」は<status>というXML要素の子である<user>要素、そのさらに子である<screen_name>要素と対応しているわけです。

 慣れるまではちょっと大変ですが、データ構造が理解できてしまえばこっちのものですから、地道にトライ&エラーを繰り返しながら自分のモノにしていきましょう。

 次回はサンプルコードを改造してデザインを変更する方法、GAEのサーバーにアップロードしてWeb上に公開する手順について解説したいと思います。読者のみなさんも今回の記事を参考に、サンプルコードを改造したり、オリジナルのサービスを作ってみたりと、公開へ向けて準備を進めておいてください。

 それではまた!

執筆/サンプル制作:株式会社ふむふむソフト

ふむふむソフト

飯島進仁を代表取締役として2006年7月設立。業務委託でのソフトウェアやWeb開発を中心に、企画、制作、執筆活動などを行なっています。Silverlightなどを使った地味な研究や、日々の雑記、一部の方々に好評なガジェットなどをブログにて公開中。Twitterもはじめました。

執筆:飯島進仁
はとぽっぽ時計開発:園部智子

前へ 1 2 3 4 5 次へ

カテゴリートップへ

この連載の記事

ASCII.jp会員サービス 週刊Web Professional登録

Webディレクター江口明日香が行く

みんなが買ってる最新アイテムはコレだ!

Microsoft Windows 7 Home Premium 通常版 Service Pack 1 適用済み

iPhone 4S/4 防指紋性・高光沢機能性フィルム PRO GUARD AF for iPhone 4S/4 / PGAF-IPH4

iPhone 4S/4 防指紋性・高光沢機能性フィルム PRO GUARD AF for iPhone 4S/4 / PGAF-IPH4

マイクロソリューション Micro Solution Inc.

83人が購入

BenQ 24型 LCDワイドモニタ XL2420T

BenQ 24型 LCDワイドモニタ XL2420T

ベンキュージャパン

37,238円〜

3人が購入

jQuery Mobile スマートフォンサイト デザイン入門 (WEB PROFESSIONAL)

jQuery Mobile スマートフォンサイト デザイン入門 (WEB PROFESSIONAL)

アスキー・メディアワークス

2,499円〜

20人が購入

メモリーカード 32GB (PCH-Z321J)

メモリーカード 32GB (PCH-Z321J)

ソニー・コンピュータエンタテインメント

7,772円〜

6人が購入

Amazon.co.jp