LoginSignup
5
5

More than 5 years have passed since last update.

Martini + DataStore(GAE) の実装

Posted at

参考になったサイト

実装したもの

手始めに簡単なつぶやきサイトをサンプルとして実装した。GAE上でどのようにDataStoreと連携できるのかを把握したかった。Githubにアップしている。

Martini_GAE_DataStore_Sample

GAEにデプロイしたサイト

なお、経緯的にはGAEはDataStore(Big Table)と共にリリースされておりMySQLであるCloud SQLはどちらかというと後発のプロダクト。そのためか、統合の度合いはDataStoreのほうが高いらしい。また、課金に関してもCloud SQLはインスタンスの時間でかかるため割高となるようだ(DataStoreはストレージとI/Oで課金するが無料範囲内にだいたい収まる)。

Martini/Goで実装した感想

はじめてのGo実装。Martiniのルーティングとテンプレートエンジン部分の構造が素直なので労なく構造は飲み込め、Go言語の文法をほぼ知らないのにも関わらず動くものが作れた。当然かなり文法エラーをしでかしたのだが、コンパイラが教えてくれるのであまり極端なハマり方はしなかった。

途中、配列に値をpushする実装がよく分からなくて配列の文法を調べたが、いろんな書き方が出来そうだ。

Go 言語の基礎知識 (2)

また、あまりよく分かってないのだが、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の場合はプロトタイプベースで型はあまり信頼できず不安がある。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5