Google App Engineをいじる夏

Google App Engine Hackathon in Kyoto に参加した。Google App Engineを使って半日で何かを作るという内容のイベントだ。今回は20〜30人の参加者が2〜5人の6チームに分かれて競い合った。

うちのチームではHTML5で取り入れられるGeolocationと、Google Mapsを利用した、Twitter的なMicro bloggingサービスを作った。サイトを訪れるとまずユーザーの位置を検出し、その場所の近くで投稿されたメッセージがGoogle Mapsを使った地図上に浮かび上がるというものだ。

このアプリが参加者の投票により一位に選ばれて、Googleのノベルティーグッズの中からGoogle Developer Day Tシャツを頂戴した。ほかのグッズにはGoogle App EngineのロゴをあしらったTシャツやChrome開発を描いたコミック冊子やボールペンなどがあった。

私は今回のイベントのためにはじめてGoogle App Engineを使った。使ってみてわかったApp Engineの特徴は

  • データの出し入れが劇的にお手軽
  • サーバー側で重たい処理はできない
  • サイズの大きいデータは扱えない

という3点。データベースの設定とか拡張とかを考えなくていいというのは素晴らしい。その一方で、アップロードできるデータのサイズや保存できるデータのサイズに制約があったりするので、動画投稿サイトを作ったり高解像度の写真を保存したりするのは無理だったりする。また、一度あたりの処理時間を30秒以内に済ませなくてはいけないだとか、そもそも30秒もかかる処理をばんばん繰り返せば無料で使える範囲のCPU時間なんぞ瞬く間に使い尽くしてしまうといったリソースの制約もある。

Google App Engineだからできること」というものは特にないが、「Google App Engineだからやらなくてすむこと」ならいろいろあるよ、という環境なので、Google App Engineで何か作れというお題でその環境ならではのものを考えるのは難しい。

今のところGoogle App Engineに向いているアプリは

  • データはテキスト、軽量の画像、数値データ程度
  • 画像処理、統計処理、機械学習などの時間のかかりそうな処理をしない
  • Googleの他のサービスのデータをを利用する

といったところか。

プロトタイプをとりあえずGoogle App Engine上で作って、必要が出てきたら自分が好きにいじれるサーバーに移行するという使い方もいいかもね。アプリのロジック以外のことはあまり考えなくていい快適な環境なので、制約があるとは言え使わないのはもったいない。