プログラマ行進曲第二章

主にソフトウェア関連の技術をネタにした記事を執筆するためのブログ

Go言語(golang)のWebアプリケーションフレームワーク、Martiniを動かしてみる

最近Go言語のWebアプリケーションフレームワークMartiniをいじってます。今日はそのMartiniの動かし方でも適当にアウトプットしようかなと思います。と言っても公式に書いているもののほぼ写しですが。

前準備

Go言語自体のインストールとかは割愛。1.1以降が必要みたいなので、最新版をインストールしましょう。

そうしたら次にフレームワークそのものをインストールしましょう。

go get github.com/codegangsta/martini

go getする際にグローバル環境を汚したくないという人は、お好みでgoenvとかgomとか、そういった類のツールを活用すると良いと思います。

動かす

ぶっちゃけREADMEに書いてあるものそのまんまですが、以下のようなコードを書いて保存しましょう。

gist8454383

これをserver.goみたいな名前で保存した後、go run server.goで実行すると動きます。デフォルトで使用するportは3000なので、http://localhost:3000/ にアクセスしましょう。画面にHello world!と出てきているはずです。

ちょっとした応用

上記コードを見れば何となく分かるように、martiniのインスタンスmを使ってm.Getの第一引数にURLパターンを指定し、第二引数にハンドラを指定します。上記の場合だとハンドラは単にstringを返す関数を指定しています。ちなみにm.Get()は見て分かるようにGETメソッドに対応しており、POSTを受け取りたいときはm.Post()、DELETEを受け取りたいときはm.Delete()などが用意されています。渡す引数の種類も同じ(はず)です。

で、少し書くだけで分かると思いますが、URLパターンの数が多くなって指定する数が増えるとmain関数内にm.Get()などをその分だけ書くのですが、その際、ハンドラをそのまま直に書いていると後でメンテしづらくなると思うので、関数を宣言しておいてそれを呼び出すようにするとスッキリすると思います。以下、上記のコードを分離した例です。

gist8454399

Martiniを使ってみての感想

今現在、実際にMartiniとGoogle App Engine使ってWebアプリを動かしている*1のですが、PythonにおけるFlaskのような感覚でWebアプリが作れるので、個人的にはシンプルで気に入っています。

あと何といっても、2014年1月16日現在ではMartiniのコード量もそう大して多くないので、挙動が気になったらソースコードを読みに行けば解決することができるのもいいですね。今までWebアプリとか作ったことなかったのですが、シンプルで薄いフレームワークなので勉強になります。

Google App EngineにデプロイしているMartiniを使ったWebアプリ(ただし単なるゲストブック)のエラーが戻せたら、MartiniとGoogle App Engineの組み合わせをどうやるかもブログにしてまとめたいですね。といっても公式READMEにやり方書いてあるんですけどね!

*1:といっても単なるゲストブックアプリで、しかも2014年1月16日22:15現在、デプロイの失敗のせいか、golang標準のhtml/templateのエラーが返ってきて動いていないのですが…