現在、新しくプロダクトを作っています。さて、サーバーサイドの開発言語を選定する過程で、いつもなら慣れているPythonを迷わず選ぶのですが、「最近Goって流行ってるよなあ、キラキラしてていいなあ、俺もキラキラしたい!」と思うようになりました。
茶番はこれくらいにして、今回はGoで作るAPIサーバーの開発について、セットアップから運用まで備忘録も兼ねて何回かに分けて述べようと思います。
Go言語のインストール
Go言語を使うには、まずGoのコンパイラをインストールしなければなりません。
macOSの場合はHomebrewで直接インストールすることができます
$ brew update && brew install go
パッケージマネージャー dep
まず、APIサーバーを開発するのに必要なフレームワークやライブラリを一式揃えます。
ここでは、depというパッケージマネージャーを用いて導入を行います。Go言語には他にも便利で強力なパッケージマネージャーがいつくか存在しますが、
- Goの公式チームが開発していること
- Go標準のパッケージマネージャになることを目指していること
- 競合のGlideもdepへの移行を推奨していること
上記のような理由でdepを採用します。
macOSを利用している場合, Homebrewを用いて比較的簡単に導入することができます。
$ brew update
$ brew install dep
Linuxの場合はgo get
を利用して導入してください。
$ go get -u github.com/golang/dep/cmd/dep
dep version
を実行して以下のような出力がされたらインストールに成功しています。
dep:
version : v0.5.1
build date : 2019-03-11
git hash : faa6189
go version : go1.12
go compiler : gc
platform : darwin/amd64
features : ImportDuringSolve=false
プロジェクトの作成
次に、以下のようなディレクトリ構成で新しいGoプロジェクトを作成します。$GOPATH/src
配下に自分のプロジェクトベースのディレクトリを作成します。ここでは、ソースをGithubに置く場合を示していますが、BitbucketやオンプレミスのGitLabに置く場合はgithub.com
をself_hosting_git.com
などに変更するだけで対応することができます。
$ mkdir $GOPATH/src/github.com/user_name/your_repo
$ cd $GOPATH/src/github.com/user_name/your_repo
$ dep init
dep init
を実行するとGopkg.toml
が作成されます。
ライブラリの導入
depはソースに書いてあるimport
文を自動的に認識してライブラリの導入を行うことができますが、ここではソースを書き始める前に事前に行おうと思います。depでのライブラリ追加コマンドはdep ensure -add github.com/org/repo
です。まずは、今回APIサーバーを構築するに当たって重要となるマイクロフレームワークechoの導入を行います。
$ dep ensure -add github.com/labstack/echo
Echo Serverの作成
プロジェクトルートにmain.go
ファイルを作成し、以下のようなコードを書きます。
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 main.go
でコンパイルが成功するとサーバーが立ち上がるはずです。http://localhost:1323にアクセスして**Hello, World!**と表示されるか確認しましょう。

無事, Hello, World!と表示されました。成功です。
次回は、Goの基本の書き方を踏まえながらRoutingについて投稿したいと思います。