GoogleAppEngineでGo言語によるHelloWorld

2011/5/20 8487hit

GoogleCodeを見ていたら、
GoogleAppEngineでGo言語が動かせるようになってるじゃないですか
ということで基本のHelloWorld! HelloGoと表示するだけのアプリを作ってみたよ。

余談ながら九州GTUG第ゼロ回勉強会の打ち上げで聞いたのですが
Go言語のGoは英語の「ゴー」ではなく、囲碁の「碁」なので、ごを伸ばさず「ごげんご」と呼ぶのが正式な呼び方だとか、
まるでゴダイゴみたいだな・・・
そういえば公式サイトでも
HelloWorldではなく、Hello世界 と日本語まじりのサンプルが用意されてたりする。

GoをGoogleAppEngine上で動かすにはGoogleAppEngineのデータベースをhigh replication datastoreが構築する必要がある。
それと、GoogleAppEngine SDK for GoがLinuxとMac版しか提供されていないので、Windowsではまだ開発できない。

ということで、今回はSnowLeopard上にGoogleAppEngine for GOの環境を構築しローカルで実行させてみる。

Python2.5のインストール

今回の開発はGo言語で行うが、ローカルサーバーでの実行やサーバーへのアップロードにGoogleが提供したPythonのスクリプトを使うのでPython2.5のインストールが必要になる。

ここでやっかいなのが2.5というバージョン。
SnowLeopardは標準で2.6が入っているので、ダウングレードが必要。
コンソールを開きPython2.5のインストール、Pythonのバージョンを切り替えられるようにpython_selectのインストール、
そしてPhtyon2.5への切り替えを行う。

$ sudo port install pytyon25
$ sudo port install python_select
$ sudo python_select python25

Google App Engine SDK for Goのインストール

Google CodeよりGoogle Engine SDK for Goをダウンロードして展開

プロジェクトを作る

お楽しみコーディングの時間
新規フォルダを作ってプロジェクトを作成する。
プロジェクトの作成はpython同様、フォルダを作ればそれでOK
フォルダ名は"hellogo"
直下にPython編でおなじみapp.yamlを作る。
内容は以下のとおり

application: hellogo
version: 1
runtime: go
api_version: 1

handlers:
- url: /.*
script: _go_app

application: hellogo
はローカルで動かすには好きな名前でいいけれど、もしデプロイするのであれば、デプロイ先のアプリケーション名を指定すること、フォルダー名とは一致させる必要ない。

書いてあることを日本語にすると
アプリケーション名は hellogo
アプリのバージョンは1
実行形式はgo
必要なapiのバージョンは1
ハンドル
/フォルダにアクセスされたら
_go_appを実行

Goコーディング

プログラムを格納するフォルダをhellogoフォルダに作成する。
フォルダ名はsrcとする。(任意のフォルダ名で良いようだが予約されていない名前を使う必要がある)
srcフォルダ内にプログラムを実行するためのmain.goファイルを作る。
main.goファイルの中身は以下のとおり


package main
import (
"fmt"
"http"
)
func init() {
http.HandleFunc("/", handler)
}
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Hello Go!")
}

package mainはパッケージ名を指定。
今回はファイルが一つなので単純だけれど、ファイル数が増えた場合はパッケージ名で管理することが出来る。
importでは使用するライブラリを指定する。
fmtは入出力を行うライブラリ、httpはwebの遣り取りをするライブラリ。
initではパッケージの初期処理を行う。
httpで"/"が呼ばれた場合、handlerを実行させるように設定。

実際にサイトに接続するとhandlerが呼ばれる
handlerではHello Go!を出力している。

ここまでのファイル構造は以下のとおり
hellogo
|app.yaml
+src
|main.go

ローカル環境での実行
ローカル環境で実行するにはGoogleAppEngine SDK for Goに添付していたdev_appserver.pyを使用する。
コンソールにて以下のようにタイプする
dev.appserver.pyのパス プロジェクトのパス

dev_appserver.pyが/google_appengine/に存在し、
プロジェクトが/gae/hellogoに存在する場合

$ /google_appengine/dev_appserver.py /gae/hellogo/

コマンドを実行すると、処理が走り
http://localhost:/8080 とか出てくるので、出てきたアドレスにブラウザでアクセス
Hello Go!が表示される。

GoogleAppEngineサーバーにアップロード

サーバーにアップロードするにはhigh replication datastoreが必要ですが、あとはpythonと同じやり方
appcfg.pyのフルパス update hellogo
上記の例なら

$ /google_appengine/appcfg.py update /gae/hellogo/

アカウントとパスワードを聞かれるのでそれぞれ実行するだけ
あとはhttp://プログラム名.appspot.com/へアクセスするだけ

Goに関してはプログラムそのものより、ゆるゆるなキャラクターが注目されてたり、Google肝いりかと思えば未だにAndroidには乗っていないなど不透明感ただよう言語ですが、コンセプトとしては面白いところにある言語だと思います。



前:第2回Hack for Japan福岡同時開催決定 次:締め切り迫るAndroid Study Nightのお知らせ

関連キーワード

[Python][HTML5][IT]

コメントを投稿する