AdventCalendar駆動でGoのWebアプリケーションを作ってみた

このエントリはGo Advent Calendar 2013の(本当は)15日目の記事です。遅れてごめんなさい…

Goを勉強するためにAdvent Calendarに登録した

タイトルの通り、僕はGoについては初心者です。なので、他の方のような凄い記事は書けませんが、ご容赦いただければと思います。

僕の同じようなGo初心者がGoでWebアプリケーションを実装する際の一助にでもなれば幸いです。

Go製WebアプリケーションフレームワークRevel

Google大先生に聞いてみたところ、どうもRevelというフレームワークが多くヒットしたのでインストールして使ってみました。

インストールについてはこれの通りにやったらほとんど詰まることなくできました。

Goのインストール

Go自体はhomebrewで簡単に入ります。

% brew install go

ちゃんと入ってる。

% go version
go version go1.1.1 darwin/amd64

GOPATHの設定

まずはGOPATHを設定する。GOPATHはgo getRubyでいうgemみたいなもの)でライブラリ等をインストールする場合のインストール先を指定するものらしい。

これは結構自由に設定してよいらしく、Revelのチュートリアルでは~/gocodeというディレクトリを作成してそこに設定しているのでそれを真似する。

% mkdir ~/gocode
% export GOPATH=$HOME/gocode

Revelのインストール

$GOPATHを指定すればRevelはgo getで簡単にインストールできます*1

% go get github.com/robfig/revel

コマンドラインツールのインストールは以下。

% go get github.com/robfig/revel/revel

インストールを確認する。

% revel help
zsh: command not found: revel

PATHを通す。ちゃんとインストールされている模様。

% export PATH="$PATH:$GOPATH/bin"
% revel help
~ revel! http://robfig.github.com/revel
~
usage: revel command [arguments]

The commands are:

    new         create a skeleton Revel application
    run         run a Revel application
    build       build a Revel application (e.g. for deployment)
    package     package a Revel application (e.g. for deployment)
    clean       clean a Revel application's temp files
    test        run all tests from the command-line

Use "revel help [command]" for more information.

アプリケーションを作成/起動

demoという名前のアプリケーションを作成してみた。

% revel new demo
~
~ revel! http://robfig.github.com/revel
~
Your application is ready:   /Users/suenami/gocode/src/demo
You can run it with:
   revel run demo

起動。9000番ポートで立ち上がるっぽい。

% revel run demo
~
~ revel! http://robfig.github.com/revel
~
INFO  2013/12/17 08:09:09 revel.go:292: Loaded module testrunner
INFO  2013/12/17 08:09:09 revel.go:292: Loaded module static
INFO  2013/12/17 08:09:09 run.go:57: Running demo (demo) in dev mode
INFO  2013/12/17 08:09:09 harness.go:157: Listening on :9000

これで http://localhost:9000 にアクセスするとアクセスできるようになる。

続く

ひとまずRevelを用いてアプリケーションの作成/起動までは行うことができました。 まだまだ何も実装していないので、特徴や他のフレームワークとの比較など気の利いたコメントは何もできないのですが、引き続きRevel触りながらブログにまとめていきたいと思います。

*1:Mercurialがインストールしていない場合はインストールを求められます