April 9, 2008

Google App Engine が公開されました

Google App Engine が公開されました。

http://code.google.com/appengine/

Googleが提供するインフラ上に自作のWebアプリを乗せられ、データベースまで利用できるというモノです。

しかも、初期費用無料で。

私自身このニュースを見たとたん「来たっ!」と思いましたが、
マスコミの反響も大きいようです。

Googleのインフラでアプリを動かせる「Google App Engine」(ITmedia)
http://www.itmedia.co.jp/enterprise/articles/0804/08/news056.html

グーグル、「App Engine」を発表--オンラインアプリケーション開発用にインフラ提供 (CNET Japan)
http://japan.cnet.com/news/media/story/0,2000056023,20370974,00.htm

クラウドサービスに参入【詳報】「Google App Engine」ってなんだ (@IT)
http://www.atmarkit.co.jp/news/200804/08/appengine.html

「Google App Engine」発表、Googleのインフラ上でWebアプリ構築 (マイコミジャーナル)
http://journal.mycom.co.jp/news/2008/04/09/002/index.html

技術系ブログでも大盛況ですね。
Google ブログ検索の結果

Google App Engine は、Amazon の EC2/S3/SimpleDB や、Salesforce.com の force.com と競合するサービスになり得ますね。

Amazon や Salesforce.com がこれらのサービスを始めたときよりも反響が大きい印象です。改めて Google の影響や注目の大きさを感じます。

Salesforce.com に転職した後輩が、「Google が始めたとしても、Salesforce.com はもう8年もやっている実績がありますから」と言ってました。

Salesforce.com の force.com は、既存の高機能なCRMシステムを持っていて連携できるのが強みでしょうか。さらにリッチな GUI 開発環境を SaaS 形式で提供しているのが特徴です。アプリケーションのコードは Apex という、Java によく似た独自言語で記述します。

Goole App Engine は、背後に GoogleのBigTable、GFSという基盤を持っているのが強みだと思います。これは非常にスケーラビリティの高いシステムを構築できる可能性を持っていることを意味します。
mixi のような大規模 SNS もホスティングできたら、これはすごいことになりますね。世の中のインターネットサービスやエンタープライズシステムのあり方を一変させる可能性を秘めています。自らインフラを持たずとも初期投資ほぼ0からスタートして、大規模エンタープライズシステムやmixi のような規模を持つコンシューマサービスを運営できることになるのです。
多くのサービスやエンタープライズシステムが、自社サーバではなく Amazon や Google のクラウド上に移行するということがさらに現実味を帯びてきた感があります。Google のことですから、それぐらいの野望は持っているでしょう。

Web 上で Service を提供する SaaS から、プラットフォームを提供する PaaS (Platform as a Service) 時代へシフトする未来が見えてきた感があります。

Goole App Engine の正式サービス開始時の料金体系がまだ発表になっていませんが、Google の大容量ストレージを格安で利用できるメリットを打ち出してきそうな予感がします。

プログラム言語としては、現在は Python のみのサポートですが、将来的には他言語にも対応予定とのこと。Salesforce.com の force.com が独自開発言語と SaaS 形式のリッチな GUI 開発環境を提供するというアプローチに対して、Google App Engine は多言語対応で、開発環境は「自分の好きなものを使ってね」的なアプローチです。

Salesforce force.comGoogle App Engine
開発言語ApexPython
他言語もサポート予定
開発環境専用GUI環境(SaaSで提供)SDK提供
統合開発環境は無し。
開発者が好きなものを利用。
インフラSalesforce.com
(恐らく市販商用サーバ + 商用DB)
GFS + Google BigTable
最低限の
初期投資
0円0円
他サービス
との連携
強力・高機能なCRMシステムGoogleアカウントを利用した
認証等
独自ドメイン
の利用
不可


Yahoo! や MS はこの流れに追従するのでしょうか?MS はやりそうな気がしていますが・・・

まあ、Google と SalesForce.com ではターゲットとするユーザ・アプリが違う気もしますが・・・
平たく言うと Web2.0 的コンシューマサービスをゲリラ的に立ち上げやすい Google と、あくまで企業ユーザをターゲットにした SalesForce.com という感はあります。



ともあれ、Getting Started Guide に従って少しいじってみました。
(Windows XP Professional 環境です。)

トップページ http://code.google.com/appengine/ から、サインアップし、SDK をダウンロードします



msi 形式の Windows インストーラが用意されているので、それをダウンロードしました。

さて、インストール・・・

と思いインストーラを起動したら、Python2.5 が必要なので、まずはそっちをインストールしなさい・・・と怒られました。



Mac OS X 10.5 Leopard ならデフォルトで入っているんですけどね。

というわけで、Python をインストールしてから、GoogleAppEngine SDKのインストール。



インストール作業は、ライセンス同意と、インストールディレクトリの選択のみのシンプルな構成。「I Agree」とか「Next」を押しているだけで特に問題なく終了しました。
インストール時に、インストーディレクトリに PATH を通すかどうかのチェックボックスがありますが、チェックを入れておくとサーバの起動やアプリケーションのアップロードの時にコマンドをフルパス指定しなくて済みます。というだけです。

開発環境(SDK)には、開発用アプリケーションサーバ、ローカル環境専用データベースが含まれています。

Getting Started Guide に従って、最も簡単な Hello World アプリケーションを作ってみました。

まず、適当な場所にhelloworldディレクトリを作成し、その中にテキストベースで helloworld.py という名前のファイルを作成します。
ファイルの中はこんな感じ。


print 'Content-Type: text/plain'
print ''
print 'Hello, world!'



Google App Engine では、app.yaml という名前の設定ファイルが必要なので、同じディレクトリ内に作成します。


application: helloworld
version: 1
runtime: python
api_version: 1

handlers:
- url: /.*
script: helloworld.py



application: App Engine がアプリケーションを識別するためのユニークな名前を付けます。
  • version: アプリケーションのバージョン番号。アップロードする前にバージョン番号を編集する必要があるそうです。App Engine はバージョン番号を認識しているので、管理コンソールで前のバージョンに戻したりできるらしいです。
  • runtime: と api_version: エントリは、現在は python、1 で固定です。将来別の言語を使えるような計画もあるので、その際に拡張されるみたいです。
  • handlers: 上記の設定は、すべてのリクエストに対して helloworld.py スクリプトが動作するということを意味します。スクリプトの他にも、ディレクトリを指定したり、指定したURIは管理者のみがログイン可を指定したりが可能です。
YAMLのリファレンスはこちら。
http://code.google.com/appengine/docs/configuringanapp.html


これで準備完了です。

コマンドラインから Google App Engine のサーバを起動します。その際にスペース区切りでアプリケーションの配備ディレクトリを指定します。


dev_appserver.py アプリケーションのディレクトリパス




あとは、ブラウザから http://localhost:8080/ にアクセスすると・・・



これを、Google App Engine のサーバにアップロードすれば公開できます。

アップロードするには、まず http://appengine.google.com/start/createapp からアプリケーションを作成します。



このとき、Application Identifier の項目は app.yaml の application エントリに登録した文字列と合わせておく必要があります。
この文字列はアプリケーションの識別子となるのですが、ユニークであるスコープはユーザ単位ではなく、Google App Engine サーバ全体です。つまり、同一のアプリケーション名を他人に使われていたら使えません。
というわけで、helloworld が(当然のように)使われていたので、ここでは「liebejudith-helloworld」に変更しました。app.yaml の application エントリもこれに合わせて修正しています。

そして、アップロード。Web 管理インタフェースからアップロードするのかと思いきや、Google App Engine ではコマンドラインから appcfg.py コマンドを実行してアプリケーションをアップロードします。


appcfg.py --email=登録メールアドレス update アプリケーション配備ディレクトリ



これで完了。ブラウザから次のURLにアクセスします。


http://アプリケーション名.appspot.com/







Google App Engine は、Pure Python アプリも動作しますし、アプリケーションと一緒にアップロードすれば多くのフレームワークを動作させることができます。

SDKに同梱されているのは、Django v0.96.1 と、オリジナルのWebアプリケーションフレームワーク "webapp" です。

webappフレームワークには、下記のような機能が含まれています。
  • Google アカウントと連動したユーザ認証API
  • データストアAPI。データ操作には、SQLによく似たクエリ言語"GQL"を利用
  • Webページ作成のためのテンプレートエンジン
  • Mail API


私は Java しか知らない人間なので Python はほとんど触ったことはないのですが、Google App Engine アプリを作るために Python を覚えてもいいかな?という気にさせてくれます。


次回は、Getting Started Guide で紹介されているゲストブックアプリケーションを参考にして、掲示板アプリでも作成してみたいと思います。

0 コメント:

Post a Comment