Google App Engine について知っておきたいこと
まだベータリリースではありますが,4月8日に Google App Engine が公開されました。ひと言でいうと,Webアプリケーションを簡単に公開することができる開発/ホスティング環境です。
特徴としては,
- アプリケーションごとに500MBのストレージ,月に5,000,000ページビューまで利用可能
- 無料(正式リリース後は有料オプションで上記の上限超過にも対応)
- 現時点で開発言語は Python のみ対応(Djangoベース)
- SDKをダウンロードすることでローカルで開発可能,デプロイも簡単
- 管理用ダッシュボードが用意されていてCPU使用率,ログなどを閲覧可能
で,Google App Engineは何がいいのか?ということなのですが,僕は次のように考えています。
まず,個人や小さなベンチャー企業がWeb上でサービスを公開しようとした時に必要な初期投資がほぼ要らなくなります。現在は,さくらなどでレンタルサーバを借りてサーバをセットアップして…といった作業をしているかと思いますが,これが必要なくなります。
次に,サービス初期の段階ではサーバ1台で始めて,アクセス数が多くなってきたら負荷分散を考えるといった「小さく始めて大きく育てる」ということが,Googleの誇るインフラを使って非常に簡単にできます。通常はアクセス数が増えると,それに対応できるようにシステムに大幅な改修が必要になります。それが,Googleが培ってきた技術を用いることで,アプリケーション開発者が全く意識することなく,スケールと負荷分散を自動的に行ってくれます。数百人しか利用していないサービスが突如人気が出て,数万人規模になっても何もしなくてもGoogle App Engineのインフラがよきに計らってくれます。
ここの部分は非常に重要で,大手の会社でもこの作業に失敗して何日もサービスを止めるなんてことがざらにあります(昨年もありましたね…)。Webアプリケーションを開発できるエンジニアというのは世の中にたくさんいますが,スケール可能な設計にしたり,それを実際に構築したりすることができるエンジニアっていうのは割と少なくて,僕が前に在籍していたウノウでも,CTOの尾藤さんや最近退職したid:dandasoくらいだったと思います(俺もできるよって人がいたらごめんなさい)。しかしこれからは,サーバの知識がなくても「優れたアイデア」と「少しのプログラム開発力」さえあれば,魅力的なサービスの運営ができてしまうということになります。
次に開発環境の話になりますが,現時点で対応している言語は Python のみです。開発用のフレームワークとしては,標準で Django が利用可能です(実はこのブログもDjangoで動いています)。ただし,Google のインフラを利用するために Model まわりに大きく手が入っていて,既存の Django アプリケーションをそのまま移行することはできません。データの取得方法も慣れ親しんだO/Rマッパー方式ではなく,ほぼ SQL と同一ではありますが独自の GQL という形式で記述が必要です。この辺りは,少しだけネックになるかもしれません。一度,Google App Engine用に作ってしまうと,他の環境に移すことが難しくなります。また,開発効率の高さから一部では盛り上がっている Django ですが,まだまだ開発者がそんなに多いわけではないのも少し問題です。しかし,これは逆にエンジニアにとっては新たなチャンスになるかもしれません。Django は比較的習得が容易ですし,ちょっとやる気を出すだけで Google のインフラを使って差別化ができるわけですから。
最後に,あまりよく知られていないであろう部分をまとめておきます。
■ Django以外のPythonフレームワークも使える
標準でサポートしているのは,Djangoベースのものになりますが,他のPython製フレームワークが使えないわけではありません。WSGIに準拠したCherryPy, Pylons, web.pyなどが利用可能です。
利用可能なんですが… 後述するようにネイティブCの一部ライブラリが使えないために例えば Pylons を簡単に動かせるかというとちょっと難しいようです。
■ 独自ドメインも使える
登録したアプリケーションは,***.appspot.comという名前がデフォルトですが,Google Appsの設定をすることで独自ドメインも使えます。詳細はこちら。
» http://code.google.com/appengine/articles/domains.html■ 1アカウントで3アプリケーションまで登録可能,ただし削除できない
開発用のアカウントを登録すると,***.appspot.comといったアプリケーションを3つまで登録可能です。でも,今のところ削除することができません。もし,ミスタイプして変なidを取ってしまったら最悪です。注意しましょう。
■ socketやftplibなどのライブラリは使えない
「Google App Engine Python Library Support」に記載されている一部のネイティブCのライブラリが利用可能です。他にピュアPythonで記述されたライブラリはだいたい使えるようです。ただし,子プロセスやスレッド機能は使えません。また,imp, ftplib, select, socket, tempfileなどのモジュールも使えません。HTTP/HTTPS以外で通信したり,動画変換などを行うサービスはできないと考えたほうがよいです。
■ 何から始めたらいいか
まずはチュートリアルを順番にやってみることをお勧めします。Web開発をしたことがある人であれば,Pythonの知識がなくても分かりやすいと思います。次に Datastore API や Users API に目を通してみましょう。そして,一通り使えるようになったら,Samples for Google App Engineを見ると,さらに発見があるかもしれません。
以上で,自分なりにまとめてみた Google App Engine の概要は終わりです。近々,ウノウに会場をお借りして,Google App Engine 勉強会を開催できたらいいなぁなどと考えています。興味のある人がどれだけいるのかは分かりませんが,詳細が決まりましたらまた追ってお知らせしたいと思います。







