風柳メモ

ソフトウェア・プログラミング関連の覚書が中心

『GAE-Cron』のソース&サービス登録サイト公開

この記事は Google App Engine の Python 2.5 runtime 版 GAE-Cron について書かれたものです。
Python 2.7 runtime 版 GAE-Cron のソースファイルは、

GAE-Cronの説明書
GAE-Cronソースファイルダウンロード

furyutei/GAE-Cron · GitHub

にて公開中です。


2014年現在、Python 2.5 runtime 版アプリケーションは、Google App Engine 上では新規に作成できなくなっている模様です。
2013年以前に Python 2.5 runtime で作成したアプリケーションはまだ動作しています(将来的には動作しなくなる可能性があります)。

バージョン2.7への移行を:Google App Engine、Python 2.5ランタイムを非推奨に - @IT
Google App Engine Blog: Python 2.5, thanks for the good times



GAE-Cronがなぜか好評みたいで、おかわりぶんもなくなったみたいなので、

GAE-Cron Club GAE-Cron Club - プロバイダ一覧

ゼットンでも倒せそうな勢いのやっつけ仕事なので、いろいろ不具合はあるかと思いますが、ご容赦を。

GAE-Cronアップロード(デプロイ)手順

Google App Engineへの登録がまだの方は、先に

Google App Engineへの登録と開発環境のセットアップ(Python編)

の記事を参照して、登録を済ませておいてください。

また、新規にアプリケーションを作成する前提で説明してあります。
Google App Engine上のWebアプリケーションは、通常、
http://<appid>.appspot.com/
がトップページになりますが、このappidの部分(アプリケーションID)はユーザが決める必要が有ります。

既存のアプリケーションに相乗りさせる場合は、GAE-Cronのソースアーカイブ内にある、READMEを参照して下さい。

■ アプリケーション名の決定

Google App EngineのApplications Overviewページ
https://appengine.google.com/
へ行き(必要に応じてGoogleアカウントでのログインすること)、[Create an Application]ボタンを押すと、

の画面が出てくるので、

  1. アプリケーションID:Application Identifier(appidとも。デフォルトでは<appid>.appspot.comがドメイン名)
  2. タイトル:Application Title(英文しか受け付けない模様)

を決定し、[Save]。
appidは他のアプリケーションのものと重なるものは使用不可(<appid>.appspot.comがWeb上で一意である必要があるため、早い者勝ち)。使用できるかどうかは[Check Availability]ボタンで確認可能。

■ GAE-Cronのダウンロードと設定ファイル(app.yaml)の修正

GAE-Cronのソースアーカイブ(ZIPファイル)
https://github.com/furyutei/GAE-Cron/archive/master.zip
をダウンロードし、適当なフォルダに展開。
この例では、C:\GAE というフォルダを作り、その下に展開して C:\GAE\gaecron というフォルダができたものとして説明しています。自分で実際に展開したフォルダ名に適宜読み替えて下さい。

テキストエディタで app.yaml を開き、

application: gaecron

の行の"gaecron"を、自分で登録したアプリケーションID(appid)に書き換え。

■ GAE-Cronのアップロード(デプロイ)

SDKのランチャを起動し(Windows XPのデフォルトではC:\Program Files\Google\google_appengine\launcher\GoogleAppEngineLauncher.exeにある。デスクトップ上のショートカットがあれば、これをダブルクリック)、

[File]メニューから[Add Existing Application... Ctrl+Shift+N]を選択すると

のようなダイアログが出てくるので、 Application PATH にフォルダ名(例ではC:\GAE\gaecron)を入れて[Add]し、その後、[Deploy]アイコンを押して出てくる

のようなダイアログに、登録時に使用したGoogleアカウント及びパスワードを入れて(見切れているが)[OK]ボタンを押してアップロード(デプロイ)する。


最終的に、上記のように表示されたら、デプロイ完了。

■ 動作確認

Web上の管理画面(https://appengine.google.com/)にて、デプロイしたアプリケーション名(IDとタイトル)が表示されていることと(図のApplicationとTitleは例、実際は自分で登録したときのものが表示される)、


そのアプリのリンク→「Cron Jobs」リンクを辿って、


のように /gaetimer/timercycle/check_timer/gaetimer/restore の二つが登録されていることを確認。

また、実際にブラウザで http://<appid>.appspot.com/ にアクセスしてみて(<appid>は自分で登録したアプリケーションID)、GAE-Cronのトップページ

が表示され、ログインや設定などができるかどうかを確認。

GAE-Cron Clubへの登録→GAEの仕様変更に伴う負荷増大のため、現在は稼働しておりません

自分だけで使うのも悪いとはいいませんが(笑)、どうせなら公開して、皆で共有できるようにしましょう。
というわけで、

GAE-Cron Club GAE-Cron Club - プロバイダ一覧

へ行って、自分のアプリを登録したアカウントでログインし、自分のGAE-CronのトップページのURLを登録して下さい。ご協力お願いいたします。
登録した人と提供した人が同じかどうか調べるためにちょっと変なことをやっているので、登録するとメールが行くと思いますが、気にしないで下さい(苦笑)。

Google App Engineへの登録と開発環境のセットアップ(Python編)

この記事は、Google App Engine の Python 2.5 runtime 環境用に書かれたものです。
2014年現在、推奨環境が Python 2.7 runtime へと移行し、Python 2.5 runtime では新規アプリケーションの作成は出来なくなっています。
Python 2.7 runtime 環境を使用するには、



Google App Engineへの登録から、Python版の開発環境セットアップまでの手順です(当方の環境:Windows XP上での例です)。
Google App Engineへの登録には、

  1. Googleアカウント(GMail等で使っているものでOK。未取得時はこちらから無料で取得可
  2. 携帯電話

が必要となりますので、あらかじめ用意しておいてください。
Google App Engine(GAE)は自分のWebアプリケーションをGoogleのインフラ上で実行出来るプラットホームです。
基本無料で使用出来ます*1

Google App Engine への登録

■ Googleアカウントでログイン

https://appengine.google.com/へとアクセスして、Googleアカウントでログイン。

Googleのアカウントを持っていない場合には、こちらから作成

■ 携帯電話(SMS)による認証

ログインしたところにある、

というボタンを押すと、


のような、SMS(携帯電話のショートメッセージサービス)認証用の画面がでるので、Country は Japan を選び(日本の携帯の場合)、その横の Carrier は、使っている携帯電話に合わせたキャリアを選択。
Usernameのところには、携帯電話のメールアドレスの@よりも前の部分(@は含まない)を入力し、[Send]を押す。

しばらくすると、Googleより、

from: noreply@google.com
to: (あなたの携帯電話のメールアドレス)
subject: Google App Engine Code

のようなヘッダが付き、本文に

Google App Engine Code: *******

となったメールが送られてくるので、このGoogle App Engine Code(********部分、実際は数字)を


に入力して[Send]を押す。これで登録自体は完了。


のような画面が出てくるが、アプリケーション名がすぐに決められなければ[Cancel]しておき、決まった時点で再度
https://appengine.google.com/
にアクセスし、[Create an Application]ボタンを押せばよい。

アプリケーションのアップロード(デプロイ)の前にはアプリケーションID(Application Identifier、appid)を決定しておく必要が有るので注意(ローカルでのテストだけなら未決定でも可)。なお、appidは、デプロイ前にapp.yaml(アプリケーションの設定ファイル)に予め記述しておく。

開発環境のセットアップ

■ Python 2.5.x のインストール*2

Pythonのリリースページ
http://www.python.org/download/releases/
に行って、開発環境に応じた2.5.x系をダウンロードし、インストール。

なお、Python には 2.6.x や、3.x.x 系もあるが、こちらだと動かない場合やWeb上の実行環境と条件が異なる場合があるので、必ず 2.5.x 系を使用すること。

【2011.04.09追記】
Windowsの場合には
http://www.python.org/download/releases/2.5.4/
にある、
python-2.5.4.msi
をダウンロードし、ダブルクリックしてインストールするのが吉。

また、そのままでは、デプロイ時等に

WARNING appengine_rpc.py:xxx ssl module not found.

のような警告が出るので、気になる方はSSLモジュールインストーラー
ssl-1.15.win32-py2.5.exe
をダウンロードし、ダブルクリックしてインストールすること。
参考:Holy (K)night [Python] GAEにおけるSSLの警告とSSLのインストール [GAE]

■ GAE SDK(GAE/Python開発キット)のインストール

SDKのダウンロードページ
http://code.google.com/intl/en/appengine/downloads.html
に行って、開発環境に応じたGoogle App Engine SDK for Pythonをダウンロードする。
Windows XPの場合、Windows用のもの(Packageにmsiという拡張子付きのもの)をダウンロード後、ダブルクリックしてインストール。
2010/01/17現在の最新版はhttp://googleappengine.googlecode.com/files/GoogleAppEngine_1.3.0.msiでしたが、SDKはよく更新されているので、必ずダウンロードページに行って最新版を確認して下さい。
完了すると、

というショートカットがデスクトップ上に作成される。


以上で完了です。お疲れ様でした。
実際のアプリケーションの開発手順は、http://code.google.com/intl/ja/appengine/docs/python/gettingstarted/を参照して下さい。

*1:無料分=Free Quotaは使えるリソース(CPU時間、アクセス頻度など)に制限があり、上限を越えるとリセットされるまでアクセスできなくなります(1日毎・太平洋時間(PT)の0時頃にリセットされます。日本時間(JST)だと午後4時頃(太平洋夏時間(PDT)0時)または5時頃(太平洋標準時(PST)0時)です)。別途、有料プランを選択することで、使用可能なリソースを増やすことができます(課金は上限を設定可能)。

*2:開発では無くデプロイだけならば開発環境だけで出来ると思っていたのですが、『このcronサービスは凄すぎて紹介せずにはいられない - ある日のほしみつの(まわりの?)おしゃべり』によれば、Pythonをインストールしておかないとデプロイが出来ないということでしたので、2010/01/17追記しました。ご迷惑をおかけしました、ご指摘有り難うございます。

いったい世の中にはbotが何体いるのだろう……

GAE-Cronはもともと、EasyBotter - プログラミングができなくても作れるTwitter botの作り方でcronの設定が難関だということで作ってみたサービスだったのですが、一週間も経たぬ間に150アカウントがなくなってしまったわけで……。
やっぱりほとんどがbot用なんですかねぇ?
だとするといったいどれほどのbotが世に溢れていることやら……空恐ろしい気もしますね。

ところで、TwitBot Clubの方も別に見放したわけじゃなく、いろいろと手を入れているのですが、やはり今くらいの数(アカウント数で180強、bot数で300強)をさばくには、単体アプリ・Free Quotaの範囲では無理が有りすぎるようなので……抜本的対策を検討中です。
今のところ、タイマを外出しすることを考えているけれど……上手い方法あれば教えて下さい。

同じようなサービスで、

twittbot - enjoy
http://nyoro-n.appspot.com/twitter

のようなものがあるのだけれども、これらは負荷をどうしているのかな?

データカードでもメールアドレスが取れたのですねぇ

Google App Engineのアプリ数がもう満杯、でも携帯はPHS一台だけだし、どうしよう…と思っていたのですが、データカード(自分のはAH-N401C)でもちゃんとメールアドレス取得できるんですね。
『H″問屋』で出来た…知らなんだ(恥)。とにかく、これで10アプリ増えたのでちょっと一息。