Go言語の環境構築!コードを書き始める前に必要なあれこれ - inokawablog

Go言語の環境構築!コードを書き始める前に必要なあれこれ

まずはGo言語でアプリを作り始める前に、Goを実行するための環境を整えましょう!

Goをインストール

まずはGoをインストールしなければ何も始まりません。

インストールにはgoenvを使用する場合と、普通にGoの公式サイトからでもGoをダウンロードする場合があります。

どこでもGoを使えるようにするためにgoenvで管理する方が良いと思いますが、今回は両方を紹介します。

bashを使用していますがzshの方は適宜読み替えてください。

goenvを使う場合

brewgoenvをインストールします。

$ brew install goenv

GOPATHを設定

パッケージ等がインストールされるディレクトリを指定します。

export GOPATH=$HOME/go
export PATH=$GOPATH/bin:$PATH

この場合、$HOME/go以下にパッケージ等がインストールされます。

goenvのパスを設定

export GOENV_ROOT=$HOME/.goenv
export PATH=$GOENV_ROOT/bin:$PATH
export PATH=$HOME/.goenv/bin:$PATH
eval "$(goenv init -)"

設定を反映させます

$ source ~/.bashrc

Goをインストール

いよいよインストールです。インストール可能バージョン一覧を表示して指定したものをインストールします。

$ goenv install -l
Available versions:
  1.2.2
  1.3.0
  ...
  ...
  1.11.3
  1.11.4
  1.12beta1
...

$ goenv install 1.8.3
Downloading go1.8.3.darwin-amd64.tar.gz...
-> https://storage.googleapis.com/golang/go1.8.3.darwin-amd64.tar.gz
Installing Go Darwin 64bit 1.8.3...
Installed Go Darwin 64bit 1.8.3 to /Users/sugiyamaryo/.goenv/versions/1.8.3
$ which go
~/.goenv/shims/go

Goのバージョンを指定

環境によってバージョン切り替えることができます。使用したいバージョンをインストールし、globalの設定を行います。

# 使用したいバージョンをインストール
$ goenv install 1.8.3

# globalの設定
$ goenv global 1.8.3

# rehashしないと変更されない場合があります
$ goenv rehash

また、特定リポジトリ以下のバージョンを指定する場合は、以下のように指定のリポジトリにいき、localで設定します。

$ cd /path/to/repository
$ goenv local 1.8.3

次にインストーラーを使った場合を紹介します。

インストーラーを使う場合

Goの公式サイトへいきGoをダウンロードします。

ダウンロードが完了後 ダウンロードされたファイルをクリックし、インストーラーが立ち上がるので続けるを押していって閉じるを押せばインストール終了です。日本語なので大丈夫だと思います。

次にGoがインストールされたか確認します。

$ which go
/usr/local/bin/go

$ go version
go version go1.14 darwin/amd64

以上が確認できればインストールは終了です。

次にGoのパスを通します。

PATHを通す

GOPATHがどこを向いているのかを確認します。

$ go env GOPATH
# binを追加
$ export PATH=$PATH:$(go env GOPATH)/bin

# GOPATHにパスを通す。
$ export GOPATH=$(go env GOPATH)

参考

次にエディターの設定をします。

vscode

vscodeを使っている方はGoの拡張機能をインストール

コマンドパレットcmd+shift+PからGo:Install/Update Toolsを選択。全ての選択肢を✅してOKを選択。

lintの設定

lint大事ですよね。

cmd + ,で設定を開き、右上のファイルマークをクリックしてsettings.jsonを開いてください。
そして以下の設定を追記して、setting.jsonを保存してください。そうすると、右下にインストールを促すダイアログが表示されると思います。迷わずInstallボタンをクリックしてください。

{
    ...
    "go.lintTool": "golangci-lint",
    // ソースコード保存時の自動フォーマットを有効にする
    "go.formatOnSave": true
    ...
}

/go/bin/golangci-lintが追加されていると思います。

参考


Goの基礎

さて、開発環境が整ったらGoの基礎を学びましょう。

公式のA Tour of GoではGoのチュートリアルをやることができます。基礎を学ぶ上で重要なので、一通りやってみると良いと思います。

また以下も素晴らしいチュートリアルになっています。
How I Start Go tutorial

参考

Go言語:文法基礎まとめ
【Go】基本文法総まとめ

Go言語のフレームワーク選定

慣れてきたらフレームワークに手を出したくなりますね。

フレームワークには、gin,beego,go-kit,RevelIrisEchoMacaronBuffalo などがあります。

Goはフレームワークに頼らずアプリを作り上げることが推奨されていますが、使った方が早く作り上げることができるのは明白です。Goにも様々なフレームワークがありますが、有力なものは数個しかありません。なので、行くつか試して見て自分にあったフレームワークを選択すれば良いと思います。

今の所それぞれの状況に応じて使い分けるのがいいといった印象。

シンプルな CRUD API を実装しようとしている場合は、フレームワークを使った方がいいようです。

フレームワーク選定に関して、詳しくは以下の参考を見てください。

参考

go-web-framework-stars
Golang フレームワーク比較
Go言語Webフレームワークランキング
Comparison of popular web frameworks in Go
Top Web Frameworks for Development in Golang

Hello, world

最小構成でhello, worldを出力します。

hello.goファイルを作成します。

$ touch hello.go

ファイルの内容を以下にしてください。

package main

import "fmt"

func main() {
    fmt.Printf("hello, world")
}
$ go build

まとめ

おまけで読んでおきたい

Let's Go!!