Twitter API proxyをGoogle App Engine上で動かす方法

プロキシの必要性

プロキシを経由してAPIにアクセスすると何がいいのか

  • TwitterのAPIはアカウント&IPアドレスでカウントされているので、APIの使用回数を増やせる。
    グローバルIPアドレスをPCごとに変えられない環境で2台のPCから見るときに便利
  • Twitterへのアクセスが制限されている環境でも使用できる。
    元々GFW(グレート・ファイアー・ウォール)を超えるために作られたっぽい
  • ちゃんと確認してないけど、GAEはホワイトリストに入ってる気がするので、API回数が20000になったりする事もある。

要はAPI使用回数を増やせるよって話。

必要なもの

まずはGoogle App Engineのアカウントを作成します。(すでに持ってる人は、新しいアプリケーションを作成するだけ)
Google App Engineのアカウント登録とアプリ作成 – 130単位 を参考にアカウントとアプリケーションを作成します。
このときのアプリケーションのIDは後で必要になるので控えといて下さい(Google App Engineのページにアクセスすればいつでも見られるけど)

次に開発環境 – Google App Engine – Google Codeを参考にPythonの実行環境とSDKをダウンロード&インストールします。(ここも既にやってる人はスルー)
Pythonは2.5が推奨されているのでできればそちらをダウンロードした方がいいです。(一応2.6でも動きました)

次に今回、Google App Engine上で動かすプロキシのスクリプトである、birdnestをダウンロードします。
http://birdnest.googlecode.com/svn/branches/gae/ 以下のファイルを全部ダウンロードするのですが、そのままだと面倒なので、
【第17回】EclipseでSubversion – Tech [Friday] プロモバイルエンジニアブログ などを参考にEclipseを使ってSVNをチェックアウトしてまとめてダウンロードしました。


ダウンロードしたファイル

ダウンロードしたファイル
これらのファイルを先ほど作成したアプリケーションID名のフォルダを作りその中に入れておきます。(これは説明を統一するためなので絶対必要な操作ではないかも)
アプリケーションのIDがtwitproxyならtwitproxyというフォルダを作りその中に入れる。

ファイルの編集

ダウンロードしたapp.yamlを編集する必要があります。
一行目のアプリケーション名を先ほど控えてた自分が作成したGoogle App EngineのアプリケーションIDに変更します。

application: アプリケーションのID

テスト&アップロード

Pythonが入っていれば、コマンドプロンプトでPythonと打ち込むとバージョンが表示されます。(エラーになる場合はPython周りがおかしい)
まずは動くかどうかをテストします。
GAEではローカルでテストするためにSDKにサーバがあるのでそのスクリプトを起動して確認します。
同じくコマンドプロンプト上で、

Python "C:Program FilesGooglegoogle_appenginedev_appserver.py" 先ほど作成したフォルダへのパス

と打ち込んだ状態(コマンドプロンプトは閉じない)でhttp://localhost:8080/にアクセスとページが表示されると思います。
この上でTwitterクライアントのAPIURLをhttp://localhost:8080/api/ にして使えるか確認できるといいです。
Google App Engineを使ったTwitterBotの作り方 – 星屑日記 を詳しく読むといいかも。

アップロード

次に編集したファイルをGAEにアップロードします。
先ほど同様にコマンドプロンプト上から

Python "C:Program FilesGooglegoogle_appengineappcfg.py update 先ほど作成したフォルダへのパス

と打ち込むとアップロードが始まります。

そしてhttp://アプリケーション名.appspot.com/にアクセスしてテストの時と同じページが表示されればアップロードは成功です。

実際にプロキシとして使用する

Echofonをインストールしてextensionフォルダに行きます

vista

C:Usersユーザー名AppDataRoamingMozillaFirefoxProfileseプロファイル名[email protected]

XP

C:Documents and Settingsユーザー名Application DataMozillaFirefoxProfilesプロファイル名[email protected]

ここにあるnsTwitterFox.jsを編集します。

var TWITTER_API_URL = “http://アプリケーション名.appspot.com/api/”;

と変更すると、GAE上で動いているプロキシを通してAPIにアクセスすることができます。
基本的にAPIのURL指定を変更できるソフトなら同じ方法でプロキシを通してアクセスできる。

海外のクライアントだとAPIを指定できるソフトも多いです。

Spazの場合だと設定画面にBase API URLを指定できるので、同じようにhttp://アプリケーション名.appspot.com/api/を入れればプロキシ経由で使用できます。
sshot-2009-12-12-2


設置が凄い面倒でセキュリティを気にしない人は

birdnest – a twitter api proxyを同じように使えるかもね。

以下参考

birdnest – Project Hosting on Google Code : http://code.google.com/p/birdnest/

How to set up Twitter API Proxy with Google App Engine | Bruce Yo’s Blog : http://www.bruceyo.info/archives/402

Google App Engineを使ったTwitterBotの作り方 – 星屑日記 : http://d.hatena.ne.jp/intheflight/20090611/p1

GFW(グレート・ファイアー・ウォール)