このエントリは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 get
(Rubyでいう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触りながらブログにまとめていきたいと思います。