2013年7月3日水曜日

Google App Engine + Go の開発環境構築

Google App Engine では無料でウェブアプリをホスティングすることができます。
また、データベースやユーザ管理など便利な機能が色々と付いています。

サーバサイドとして使える言語は Java, Python, Go, PHP です。
今回は Go を使った場合の開発環境の整え方です。


Python のインストール

まず、Python をインストールします。
GAE の SDK に Python スクリプトが含まれているため必要となります。
Mac OS X の場合はデフォルトでインストールされているので不用です。
Windows を使っている場合は以下からダウンロード、インストールしてください。

    Python.org


SDK のインストール

GAE の開発キットをインストールします。
公式サイトの Downloads をクリックして SDK のダウンロードをしてください。

    Google App Engine - Google Developers


PHP, Python, Java, Go 用の4種類があるので Go を落とします。
また、OS 毎に SDK が異なるので自分の OS に合わせてダウンロードして下さい。

zip を展開すると google_appengine というフォルダが出来ます。
フォルダを好きな場所に置き、パスを通しておいてください。
Mac なら Application ディレクトリに入れておけば OK です。

ターミナルを開いて以下のコマンドが実行できるか確認します。
何かしら表示されれば OK です。
$ dev_appserver.py


Hello World!

GAE の開発用ローカルサーバを立てて Go から Hello World! します。
好きな場所に GAE フォルダを作成し、その中に helloworld フォルダを作成します。
helloworld フォルダの中身が Web アプリになります。
GAE フォルダは Web アプリをまとめておくために作っています。

helloworld フォルダ内に app.yaml という名前のファイルを作成します。
これは Web アプリの設定ファイルです。
app.yaml 内に以下をコピペします。
application: helloworld
version: 1
runtime: go
api_version: go1

handlers:
- url: /.*
  script: _go_app

helloworld フォルダ内に app フォルダを作成します。
app フォルダの中に helloworld.go を作成します。
go スクリプトはサブディレクトリ内に置かなければならないので、appフォルダを作成しました。
helloworld.go に以下をコピペします。
package helloworld

import (
 "net/http"
 "fmt"
)

func init() {
 http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
  fmt.Fprintf(w, "Hello World!")
 })
}

ターミナルを開きます。
GAE/ フォルダまで移動して、以下を実行します。
$ dev_appserver.py helloworld

エラーがなければ開発サーバが起動します。
ターミナルにはサーバのログが表示され続けます。
⌘ + C でサーバを終了出来ます。

サーバが起動している状態で Web ブラウザで

http://localhost:8080/

にアクセスすると Hello World! と表示されます。



これで開発環境の構築は完了です。