言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

Google App Engine

無料でホームページが作れると聞いて、Google App Engine というのを試してみた。

知りたい事。

  • Google App Engine で出来る事と出来ない事を知りたい。
  • ホームページ作成のおおまかな手順を知りたい。
  • ユーザ認証とデータベースを使ったプログラムがどれだけ簡単か知りたい。

という事で、Google App EnginePython 版でサンプルプログラムをアップするまでの手順を書きます。

登録

Google App Engine を使うには http://code.google.com/appengine/ へ行って登録します。登録には携帯電話のアドレスが必要という変な仕組み。

次に Create Application の画面で Identifier と Title を決めます。Identifier がサイトの URL になりますが、こんなのありえんだろうと思う名前さえ既に取られています。私は安易に propellatest という名前にしました。

このページの説明によると、ユーザ認証も Google で面倒を見てくれるらしいです。これはありがたい。

SDK の入手

開発には SDK が必要です。これは Google のサーバーを開発マシンでシミュレートする物らしいです。 http://code.google.com/appengine/downloads.html で私は一番簡単そうな python SDKMac 版を選んびました。ダウンロードした Google App Engine Launcher を Applications ディレクトリにコピーして起動すると、シンボリックリンクを作るか聞かれるので作ると、シェルからコマンドが実行出来るようになる。これで準備は完了。

サンプルコードで遊ぶ。

真面目な人はちゃんと Hello World から始めた方がいいですが、とりあえずサンプルコードを試してみます。http://code.google.com/p/google-app-engine-samples/ から、面白そうな cccwiki というのを選びました。

次に、先ほどの SDK でインストールされたコマンドを使ってローカルで実行します。

$ dev_appserver.py cccwiki/

とシェルから dev_appserver.py コマンドで展開された cccwiki を指定するだけです。http://localhost:8080 にアクセスすると wiki が表示されます。さっそくこれをアップしてみます。

cccwiki/app.yaml というファイルが設定ファイルです。この中の application: という項目が Identifier なので、先ほど登録した propellatest に変更します。

$ appcfg.py update cccwiki/

これで登録完了です。http://propellatest.appspot.com からアクセス出来ます。

プログラムの書き方。

あとは丁寧な日本語の説明があるので、簡単にウェブサイトが作れます。例えば最初に CGI を使った説明があって、これなら昔の CGI の移植も簡単だと思います。

http://code.google.com/intl/ja/appengine/docs/python/gettingstarted/

Google App EnginePython 版で出来る事。

  • CGI を使った昔ながらの動的ホームページが作れる。
  • webapp というシンプルなウェブフレームワークが添付されている。他のフレームワークも使える。
  • ユーザ認証とデータベースは Google が用意した物を使える。
  • Django のテンプレートも添付されている。

出来ない事。

  • ストリーミング。
  • 自分でデーモンを作って裏で走らせる事。
  • データベースのバックアップ/リストアは自動化されていないみたい。

ホームページの管理

https://appengine.google.com/ からホームページの管理が出来ます。アクセス解析もある優れものです。

まとめ/分かった事。

Google App Engine というのは、CGI サーバを貸してくれるサービスです。言語は PythonJava が使えます。ある程度まで無料です。SDK として開発用サーバソフトが提供されていて、ローカルでそれを走らせて開発します。データベースには Google 独自のデータストアというのを使います。ファイルシステムに直接書き込む事は出来ません。CGI で出来る事は何でも出来ますが、出来ない事はだいたい出来ません。