2011-04-02

Google App Engineを触ってみて感じたこと色々

  • 以外と動く。cronの設定を誤って"1分に1回実行"と書いてしまった時、1時間の間に60回ツイートしてくれた。(その後、設定の修正とツイートの削除対応に追われた)
  • 管理画面にCPU利用時間の警告が敏感に表示されて、結構ビビる。特にSpin-up(インスタンスの起動)は重い処理なので、後で確実に警告表示される。
  • データストアの使い方が想像以上に難しい。仮に時間を掛けて自作アプリ用の最適な使い方を見つけ出したとして、その後にGoogle App Engine以外のプラットフォームに移植できるかというと、何とも。
  • 小さいアプリなら、データストアへのアクセスは低レベルAPIでいいんじゃない? と思った。GoogleのチュートリアルはJDOの例だけ紹介しているのだが、ちょっと調べればサンプルコードは沢山あるので、データストア独特の仕組みを学習するハメになることを考えれば、最初から低レベルAPIで良いんじゃないかと。
  • 一度WebアプリをGoogle App Engineに載せると、(昔ながらのHTMLベースのアプリなら)パソコンが無くても古い携帯電話から利用できるわけで、これは便利だと思った。今、BOT用のテキストデータは、自分の古い携帯電話から自作の管理ページを介して登録している。こういうのは、今までアイデアはあっても簡単に出来る(なおかつ続けられる)ことじゃなかったので、非常に便利だと感じている。

Google App EngineにTwitter BOTを載せる

3時間に1回、ランダムなテキストをツイートする単純なBOTを作ってみた(@raulnylmsという名前で公開、2015年時点で削除済み)。
Twitterへのアクセスが必要な部分は、Twitter4Jのおかげで簡単に作れた。これはすごい便利だった。
「1時間に1回ツイートする」スケジューリングは、Google App Engineが提供するcronを使って、こちらも簡単に実現できた。設定ファイルに"every 1 hours"とか書けば済んだ。
問題はGoogle App Engineのデータストア(Bigtable)で、ファイルの読み書きとも従来のデータベースアクセスとも勝手が違うので、かなり戸惑った。あと、Java版だと、データを一度に大量アップロードする機能は付いてない...。まあ、今回はGoogle App EngineのFAQページに載ってたサンプルコードを参考に、アップロード機能を自作して済ませた。