the industrial

ブログと言うより自分のためのメモ以外の何モノでもないです。でも読んでくださってありがとうございます。

golang製Web Framework 「echo」事始め

はじめに

なんだか今日は早く目が覚めてしまったので、久しぶりの朝活。

golang

最近 golang が気になり過ぎているのと、Webアプリ作るフレームワークも出てきている様なので、JavaScalaときて、第三の言語として扱えたらいいなーなんて思い、今年は真面目に勉強してみようかと。

実は前から既にちょくちょく書いていたのだけど、ちゃんとメモなりなんなりに残すのが大事なんだよね。

golang で書けるフレームワーク

フレームワークは僕が調べた中では、 martini というものが一番人気らしいのだけど、みんなが使っているものを勉強してもなーという天邪鬼な所があるので(Scalaの勉強を始めた時、周りの誰も使っていなかった)、 各フレームワークのベンチマーク を参考に、 echo というフレームワークを試すことにした。

なお、フレームワーク選びについては、下記Qiitaの記事を参考にさせていただいた。僕のブログ、というかこのエントリー含めてただのメモに比べると、こういう有益な記事には頭が上がらないっすね。

概観からGoのWebFrameworkを選ぶ

golang のインストール

いつも通りにbrew

$ brew install go

$GOPATH の設定

GOPATHが無いと色々不便(というか動かない?)みたい。

bashrcのPATHに、下記の様な感じで追加する。

export GOPATH=$HOME/.go
export PATH=$PATH:$GOPATH
$ go version
go version go1.7.5 darwin/amd64

echo の入手

go get コマンドで入手

go get -u github.com/labstack/echo

入手すると、 $GOPATHディレクトリに格納される(ココらへんは go get コマンドの話か)。

Helloworld

メモとか言っておきながら、やっぱり参考にする オフィシャルサイトのガイド そのまま。

HelloWorld

package main

import (
    "net/http"

    "github.com/labstack/echo"
)

func main() {
    e := echo.New()
    e.GET("/", func(c echo.Context) error {
        return c.String(http.StatusOK, "Hello, World!")
    })
    e.Logger.Fatal(e.Start(":1323"))
}

起動

$ go run helloworld.go
⇛ http server started on [::]:1323

localhost:1323 にアクセスすると、 Hello, World! と表示されるハズ。

echo のサンプルソース

下記に echo のサンプルソースが存在する。非常に参考になる。

~/.go/src/github.com/labstack/echo/cookbook
  • auto-tls
  • cors
  • crud
  • embed-resources
  • file-upload
  • google-app-engine
  • graceful-shutdown
  • hello-world
  • http2
  • jsonp
  • jwt
  • middleware
  • streaming-response
  • subdomains
  • twitter
  • websocket

見た感じ、crudやらfile uploadやらtwitter oath認証やらなんでも揃っているので、組み合わせるだけでアプリが作れそうな勢いw

次回は、このcrudを参考にし、MVCモデルの様にアプリを構築出来るようにするための第1歩として

  • router.go
  • listUser.go
  • createUser.go
  • updateUser.go
  • deleteUser.go

に分割してみる。