参考になったサイト
実装したもの
手始めに簡単なつぶやきサイトをサンプルとして実装した。GAE上でどのようにDataStoreと連携できるのかを把握したかった。Githubにアップしている。
なお、経緯的にはGAEはDataStore(Big Table)と共にリリースされておりMySQLであるCloud SQLはどちらかというと後発のプロダクト。そのためか、統合の度合いはDataStoreのほうが高いらしい。また、課金に関してもCloud SQLはインスタンスの時間でかかるため割高となるようだ(DataStoreはストレージとI/Oで課金するが無料範囲内にだいたい収まる)。
Martini/Goで実装した感想
はじめてのGo実装。Martiniのルーティングとテンプレートエンジン部分の構造が素直なので労なく構造は飲み込め、Go言語の文法をほぼ知らないのにも関わらず動くものが作れた。当然かなり文法エラーをしでかしたのだが、コンパイラが教えてくれるのであまり極端なハマり方はしなかった。
途中、配列に値をpushする実装がよく分からなくて配列の文法を調べたが、いろんな書き方が出来そうだ。
また、あまりよく分かってないのだが、Martiniのルーティングで指定した関数の引数が受け手の関数次第で柔軟に受け取れるようだ。つまり、
func IndexRender(r render.Render, req *http.Request) {
これでも
func IndexRender(req *http.Request, r render.Render) {
これでも良かったりする。これはJSと違い型が存在するから出来る事なんだろう。
DataStore を使った感想
細かい事はまだ分からないが基本的にMongoDBと同じような感じだろうか。ただクラウドだけあって管理画面からデータを参照したりする事ができる。また、ローカルのSDKも対応しているため、goapp serveでローカルで起動した場合でも同様にDataStoreを動かしローカルで試験する事もできる。SDKがよく出来ているなと感じた。
また、今回Goで実装したという事もあるが、NoSQLをstructの定義で入れて行く事ができるので、JSで実装している時に比べ型への意識が強くなる。これはどちらかというとJSでやってるよりも個人的には心地よかった。JSの場合はプロトタイプベースで型はあまり信頼できず不安がある。