Help us understand the problem. What is going on with this article?

Go言語の開発環境セットアップ

More than 3 years have passed since last update.

※このドキュメントは、Go速習会で、事前にGolangを動かせる環境を用意してもらうために書いたものです。

ここでやること

  • Goのインストール
  • GOPATHの設定
  • エディタ(Atom)の設定
  • とりあえず"Hello world!"が出来るか確認
  • もっと準備したい人のための情報

Goのインストール

https://golang.org/doc/install

に各OS用のインストール方法がまとまってます。

Macなら、Homebrewを使い、

brew install go

でいけます。

GOPATHの設定

Goを使うためには、GOPATHを設定する必要があります。ほぼ必須です。
ここにimportする外部のライブラリが入りますし、僕はこのGOPATH以下で開発しています。

GOPATH以下のディレクトリ構成

GOPATHをどこにするか決める上でも、GOPATH以下に作成されるディレクトリ構成を知っておくと良いです。

GOPATH=/home/user/gocode

/home/user/gocode/
    src/
        foo/
            bar/               (go code in package bar)
                x.go
            quux/              (go code in package main)
                y.go
    bin/
        quux                   (installed command)
    pkg/
        linux_amd64/
            foo/
                bar.a          (installed package object)

https://golang.org/cmd/go/#hdr-GOPATH_environment_variable

GOPATHは何処がいいか

大きく以下2つの選択肢があり、それぞれメリット・デメリットあります。

  1. ルートディレクトリ GOPATH=~
  2. home以下のgoディレクトリ GOPATH=~/go
    • ディレクトリ名としては、go, .go, gocode が主流

これからはじめる人は、既存のディレクトリ構造の移行とか諸々面倒だと思うので、2でgoでやることをオススメします。
gocodeは本家の例でいくつか使われていますが、個人的には長い必要がないと思います。.goは自分のコードの開発をこのディレクトリ以下でやらない派の人にはいいかもしれません。

ちなみに、自分はパソコンを買い変えたタイミングで1の設定で運用しています。
そうすると自分がいじるすべての言語のコードを置く場所が~/src/github.com/<ユーザー名>/<レポジトリ名>になるので迷いがなくなるし、
レポジトリを移動するコマンドcrや、go以外のコードもgo getの用に取ってくるコマンドghqを使うことで全言語のソースコード管理が楽になります。
デメリットとして、goimportsが遅くなりますが、まぁgofmtがあるし、goimportsあんまり使わないという手があるのであまり困っていないです。

環境変数への設定方法

.bash_profile, .zshenv

.bash_profile
export GOPATH=/Users/your-user-name/go  # GOPATHにすると決めた場所
export PATH=$GOPATH/bin:$PATH

と設定します。

エディタの設定 - Atom

ここでは、Atomでやる場合を解説します。
go-plus のパッケージを入れましょう。以下の機能がまとめて入ります。

  • コード補完 (gocode)
  • コード整形 (goformats, goimports)
  • 静的エラー解析 (golint, go vet)
  • ビルドとテスト (go build, go test)

go-plus.png

あとは、Settingsに行って、GOPATHとか必要な設定をすると良いです。
これだけで基本は十分なはずです。

簡単なコードが動くか確認

どこかのディレクトリにmain.goを作って、

main.go
package main

import "fmt"

func main() {
    fmt.Println("Hello world!")
}

と書いて保存します。

$ go run main.go
Hello world!

と出力されればOKです。

おまけ

公式サイトでの導入

普通、公式のドキュメントを読んでGoをはじめようと思ったら以下のドキュメントを読むはずです。
ここで書いたことや、テストをどう書くかまでまとまっているので目を通しておくと良いかもしれません。

How to write go code (日本語訳)

基本文法を知るには

速習会では、APIサーバーを作るのをゴールにするため、基本的な文法(if文や、ループの仕方や構造体どう作るのか等)は使ったタイミングで軽く触れる以上のことはしないつもりです。
これを知るには、以下のTour of Goというのがその場で実行できるSandbox付きでめちゃくちゃ良いので、"Basics"の部分までで良いので事前に見ておくことをおすすめします。ただやるのは必須ではないです。

https://tour.golang.org/list

他に知っておくと便利なツール

  • godep
    • 依存解決ツール。依存するライブラリを自分ディレクトリ以下に取ってくる
    • goでは主流、と言うか必須になってきている
  • ghq
    • 便利なgo getghq getコマンドとして提供
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした