ページ

2011年5月20日

GAE for Goをセットアップ

GAE for Goがでたので、試してみました。Golangはとっても好きな言語ではあるんですが、まだ、それでちゃんとしたモノを作る、っていう気にはなれませんでした。僕はわりと言語には保守的なんです。でもGAE for Goがでたので、この用途にはちょうどいいかな?と。Google App Engineの日本語のサイトではGoの情報はまだ、でていません。SDKのリンクすら見当たりません。なので、英語のサイトをみます。

まずは、DownloadのページからGoogle App Engine SDK for GoをCPU/OSにあったものをダウンロードします。僕はMacの64bitです。GolangのWindowsの対応状況はしらないし、興味もありませんが、SDKはLinuxとMacしかありません。きっと普通の開発者ならWindowsなんて使わないよね、っていうことです。

ダウンロードしたモノを展開します。展開したディレクトリをみると、Golangのコンパイラと標準ライブラリが同梱されています。別途Golangの環境を整える必要はないのはすばらしいことです。もっと言えば、自分でコンパイルすることすら必要ないです。Pythonのように、コードを書けばすぐに反映されて実行されます。dev_appserverを再起動する必要がないです。GAE for Javaは全く興味がないので、どうなっているかは知りません。それからGAE上で使えるライブラリしか同梱していません。
GolangのGoroutineも使えるらしいですが、本当に"並列"には動作はしないらしいです。一つのスレッド上でタイムシェアリングのように動くだけです。

さて、僕のMacの環境ですが、.bashrcに次のように書いています。ごめんね、僕は未だにbashを使い続けています。若者は内緒です。シェルの中でgae-goってやれば、gae用にpython2.5と展開したgoogle_appengeへのパスをPATHにセットされます。わかりやすいようにプロンプトも変えてます(僕の昔からの流儀です)。

gae-go() {
 export PATH=/System/Library/Frameworks/Python.framework/Versions/2.5/bin:$HOME/proj/google_appengine:$PATH
  PS1='(gae-go) \W\$ '
}

テスト用サーバは「dev_appserver.py ディレクトリ」で起動します。プロジェクトの構成は
+ appname
   - app.yaml
   + appname
      - appname.go
      - somename.go
          :

のようにすればいいです。goのソースコードの名前は何でもいいんだけど・・・。golangではWebアプリケーションのフレームワークとしてコアパッケージのhttpを利用します。テンプレートもコアパッケージのtemplateを使います。テンプレートファイルは一番上のappname直下において、template.MustParseFile(template_file_name, nil)でロードして利用できます。
SDKのdemosの下にいくつかのサンプルアプリがあるので、それ見れば大体分かります。

開発するときに、基本的には明示的に自分でコンパイルする必要はないです。スクリプトの感覚で使えます。でも、GolangはJavaとかと違ってコンパイルが一瞬なので、やっぱり実行前に一瞬で分かるものはコンパイルして見つけておきたいよね。

ということで、やっと生きる道を見いだした感があるgolangでした。また、golangで遊べそうです。

でわでわ

0 件のコメント: