体験ルポ「Google App Engineでアプリを作って公開してみた」

次の記事

[RoboBusiness 2008ハイライト] 棒に登る蛇ロボット(動画)

昨夜(米国時間4/7)グーグルがホスト付きウェブアプリ専用プラットフォームのApp Engineを公開した。早速ここでもappengine.crunchbase.comというスタートアップ各社を人気投票でアゲサゲするテストアプリを書いて発行、サービスに直接触れてみた。アプリ構築・公開で得た体験を以下にまとめておこう。

グーグルがApp Engineで開発者に実現を約束したポイントは2つ。「コード書きからウェブサーバーへの発行(デプロイメント)までにかかる時間を短縮すること」と「グーグルの膨大なインフラをレバレッジすること」だ。 ここでは、このプラットフォーム上でシンプルなアプリを書いて発行、そこにトラフィックを流しこんでみて、App Engineが実際のところどれだけ簡単か見てみることにした。

はじめに

デベロッパー用ドキュメンテーションを見ると、App EngineはとてもパワフルなAPIを誇っている。そのプラットフォームはPythonのスクリプティング・ランタイム、スタティック・ファイル配信機能が組み込まれており、グーグルのユーザーアカウントとメールサービスへの統合も容易かつ緊密にできる(これは大きく出たものだ)。また、クエリーやトランザクションサポート(つまり本当に優れたデータベース)ではパワフルな永続化エンジンに簡単にアクセスできるし、ほぼリアルタイムでサイトを監視し統計も取れる。さらに安定した高パフォーマンス性、本質的にリニアなスケーラビリティも約束している。

その潜在パワー、洗練された技術の基礎にも関わらず、App Engineは着手が驚くほど簡単だった。僕は普段はRuby on Railsを使っているので、サポート言語が当座はPythonだけと聞いてちょっと凹んだが、それでもグーグルが提供するSDKは死ぬほど簡単に使えた。 最初に作ったアプリは単一のPythonスクリプトに閉じ込め、リスポンスを生む際にコードが辿るべきパスを非常にクリアに示すことができた。機能もどんどん追加し、まずフォームにユーザーが入力する情報を受付ける機能、それからグーグルが提供する永続性APIを活用してデータを保存・検索できる機能を加え、最後にユーザーの目に触れるウェブページの専用コードを適正なDjangoテンプレートに割り付けてみた。

アプリ

こうして仕上がったウェブアプリは超シンプルなものだ。恥も外聞もなく自己宣伝でき、アゲサゲの不正操作も簡単にできる、そんなページ1枚分の投票サイトだ。企業ロゴは僕らのメインプロジェクトのCrunchBaseからソックリいただいてきて使った。このアプリには2つのリクエストしかない。:ページのレンダリング用と投票記録用だ(ひとつはGET、もうひとつはPOSTリクエストとした)。 最初にぶつかった問題らしい問題は、イニシャルのデータ(URLと名前)を拾ってきてデータベースに入れるところで、後になってグーグルがスリックな大量アップデート専用ツールを出していると知ったが、僕らはコンマ区切りのバリューを手動で分析してデータベースに入れる単純作業を自分たちの手で行った。

あと、このサービスは独自ドメインで配信したいと考えていた。グーグルではApp Engine全プロジェクトに「プロジェクト名.appspot.com」というドメインをデフォルトでつける(これはBloggerのblogspot.comみたいなもの)のだが、Google Appsでもドメインサービスは提供している。で、これは全く問題なく設定できたので、App Engineの機能だけ使いたい人などには便利だろう。

SDKにはApp Engineプラットフォームをエミュレートするサーバーもあるので、アプリはローカルで開発してからGoogleのクラウドに簡単に発行できる。人前に出せそうな最初のアプリのコードを書き上げてローカルでテストが済んだら、あとはアプリをグーグルのサーバーに発行するだけだ。これはコマンドラインから無茶苦茶簡単にできた。 これまではウェブアプリを比較的小さなサーバーに発行するとなると何時間、いや何日がかりの作業だっただけに、これは特に魅力的なポイント。

まとめ

総じてサインアップ登録から公開までのプロセスにかかった所要時間は約4時間。その大部分は何をしたいか自分たちの考えを煮詰め、Python言語で配列をソートしたりの手順を思い出すのにかかった時間だ(あと隠れたHTML領域にフォーマットがいい加減なところがちょっとあって、情けない話、それにも15分かかってしまった)。

アプリのプロトタイプ設定が迅速でデプロイメントも簡単なところが今のApp Engineの大きな強み。それは明らかだが、App Engineのスケーラビリティは素晴らしいのは分かるが今ひとつ実感に欠ける。というのも大概のアプリには必要のないものだし、そんなにスケーラビリティが要るアプリはグーグルなんて使わないだろうからね。Amazon EC2も今ちょうどリニア・スケーリングの実現に努めている最中だけに、実際どれぐらいスケーラブルなのか、その辺も調べてみたら面白そうだが、現段階ではむしろ冗長性とデプロイメントの容易なところがデベロッパーにとっては差し当たりの魅力となるに違いない。

僕たちが作ったアプリを試してみたい方はこちら。: appengine.crunchbase.com

サイト向けコード作成はMark McGranaghanがリードし、本稿執筆にもかなり貢献してくれた。

Update: 僕らのアプリ、ちょっと人が集まり過ぎたみたいだね。:


(訳)「このGoogle App Engineアプリは現在一時的にディスクスペースをオーバーしています。後ほどお試しください」

Update #2: さきほど復活した。大成功!

[原文へ]

(翻訳:satomi)