SlideShare a Scribd company logo
1 of 29
Download to read offline
今日から
Goをはじめる人に伝えたい
$GOPATHではまった話
Go(Un)Conference(Goあんこ)LT大会 1kg
2018/04/17
Yuta Ohashi
2
blue_goheimochi
blue-goheimochi
はじめて1ヶ月
3
いっちょやってみっか!
go get github.com/xxxxx/xxxxx
4
いっちょやってみっか!
go get github.com/xxxxx/xxxxx
$ go get github.com/syossan27/kirimori
package github.com/syossan27/kirimori:
cannot download, $GOPATH not set. For
more details see: go help gopath
5
いっちょやってみっか!
go get github.com/xxxxx/xxxxx
$ go get github.com/syossan27/kirimori
package github.com/syossan27/kirimori:
cannot download, $GOPATH not set. For
more details see: go help gopath
6
$GOPATH not set
7
\(^o^)/
8
出だしからはまってつらい
死にたい
9
結論
10
結論
Go言語のバージョン 1.8 以上を使って、
export GOPATH=$HOME/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN
を .zshrc とか .bash_profile とかに追加しておく。
https://github.com/golang/go/wiki/SettingGOPATH
11
あなたは$GOPATH に悩まされる?
チェックしてみましょう
$ go version
go version go1.2.1 linux/amd64
1.7 未満の場合 → 悩まされる。
1.8 以上の場合 → 悩まされない。
12
なぜ 1.8 が分岐点なのか?
https://github.com/golang/go/issues/17262
Go言語のバージョンが 1.8 以上の場合は、
$HOME/go
がデフォルトとして
認識されるようになったため。
13
やったね!!
14
どういう人が悩まされる??
各OSのGo言語のバージョン状況(2018/04/17現在)
$ brew install go
$ go version
go version go1.10.1 darwin/amd64
http://formulae.brew.sh/formula/go
Mac
https://chocolatey.org/packages/golang
Windows
$ choco install golang
$ go version
go version go1.10.1 windows/amd64
15
あれ?だいじょうぶじゃん?
16
どういう人が悩まされる??
各OSのGo言語のバージョン状況(2018/04/17現在)
$ brew install go
$ go version
go version go1.6.2 linux/amd64
Ubuntu 16.04
Ubuntu 14.04
$ sudo apt-get install golang-go
$ go version
go version go1.2.1 linux/amd64
17
だめじゃん・・・・
18
どういう人が悩まされる??
新しいバージョンをインストールしよう・・!
$ sudo add-apt-repository ppa:gophers/archive
$ sudo apt-get update
$ sudo apt-get install golang-1.10-go
https://github.com/golang/go/wiki/Ubuntu
公式のWikiに書いてあるこの方法で新しいバージョンの
ものがインストールできる!(パスを通す必要あり)
19
ちなみに
各OSのGo言語のバージョン状況(2018/04/17現在)
sudo yum install golang
$ go version
go version go1.8.3 linux/amd64
CentOS 7
Ubuntu 18.04
$ sudo apt-get install golang-go
$ go version
go version go1.10.1 linux/amd64
20
え、じゃあ別に環境変数に
設定しておかなくてもいいじゃん?
21
ちゃんと設定しておくのがよさそう・・!
os.Getenv("GOPATH")
が
実装されているソースコードに対して
問題が発生する可能性があります。
https://medium.com/eureka-engineering/gopath-を-build-default-gopath-で適切に扱う-1f3ee50e9633
22
ま? ま?
23
マジでした
下記のコードを各環境で動かしてみた
package main
import (
"fmt"
"go/build"
"os"
)
func main () {
fmt.Println("os.Getenv(¥"GOPATH¥") : " + os.Getenv("GOPATH"))
fmt.Println("build.Default.GOPATH : " + build.Default.GOPATH)
}
test.go
24
マジでした
Mac
$ go run test.go
os.Getenv("GOPATH"):
build.Default.GOPATH: /home/blue-goheimochi/go
$GOPATH設定前
$GOPATH設定後
$ go run test.go
os.Getenv("GOPATH"): /home/blue-goheimochi/go
build.Default.GOPATH: /home/blue-goheimochi/go
25
マジでした
Windows
$ go run test.go
os.Getenv("GOPATH") :
build.Default.GOPATH : C:¥Users¥blue-goheimochi¥go
$GOPATH設定前
$GOPATH設定後
$ go run test.go
os.Getenv("GOPATH") : C:¥Users¥blue-goheimochi¥go
build.Default.GOPATH : C:¥Users¥blue-goheimochi¥go
26
マジでした
Ubuntu 16.04、Ubuntu 14.04
$ go run test.go
os.Getenv("GOPATH") :
build.Default.GOPATH :
$GOPATH設定前
$GOPATH設定後
$ go run test.go
os.Getenv("GOPATH"): /home/blue-goheimochi/go
build.Default.GOPATH: /home/blue-goheimochi/go
27
マジでした
CentOS 7
$ go run test.go
os.Getenv("GOPATH") :
build.Default.GOPATH : /home/blue-goheimochi/go
$GOPATH設定前
$GOPATH設定後
$ go run test.go
os.Getenv("GOPATH") : /home/blue-goheimochi/go
build.Default.GOPATH : /home/blue-goheimochi/go
28
まとめ
今日からGoをはじめる人は・・・
• バージョンは 1.8 以上ではじめる
• $GOPATH は明示的に設定する
export GOPATH=$HOME/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN
29
おわり

More Related Content

More from Yuta Ohashi

Laravel5.5から6.4にアップグレードしたときに必要だった7つのこと
Laravel5.5から6.4にアップグレードしたときに必要だった7つのことLaravel5.5から6.4にアップグレードしたときに必要だった7つのこと
Laravel5.5から6.4にアップグレードしたときに必要だった7つのこと
Yuta Ohashi
 
Vue.jsでFormをAtomic Designしてみた時のコンポーネント間のデータのやりとり
Vue.jsでFormをAtomic Designしてみた時のコンポーネント間のデータのやりとりVue.jsでFormをAtomic Designしてみた時のコンポーネント間のデータのやりとり
Vue.jsでFormをAtomic Designしてみた時のコンポーネント間のデータのやりとり
Yuta Ohashi
 
Laravelで式年遷宮中の現場で うまくいってること・ うまくいっていないこと
Laravelで式年遷宮中の現場でうまくいってること・うまくいっていないことLaravelで式年遷宮中の現場でうまくいってること・うまくいっていないこと
Laravelで式年遷宮中の現場で うまくいってること・ うまくいっていないこと
Yuta Ohashi
 
「Laravelから学びレガシーと闘いはじめた」のその後
「Laravelから学びレガシーと闘いはじめた」のその後「Laravelから学びレガシーと闘いはじめた」のその後
「Laravelから学びレガシーと闘いはじめた」のその後
Yuta Ohashi
 
Dockerをすこーしさわってみる
DockerをすこーしさわってみるDockerをすこーしさわってみる
Dockerをすこーしさわってみる
Yuta Ohashi
 
5分でなんとなーくわかるDocker
5分でなんとなーくわかるDocker5分でなんとなーくわかるDocker
5分でなんとなーくわかるDocker
Yuta Ohashi
 

More from Yuta Ohashi (17)

レガシーなWebアプリケーションと向き合う
レガシーなWebアプリケーションと向き合うレガシーなWebアプリケーションと向き合う
レガシーなWebアプリケーションと向き合う
 
Laravel5.5から6.4にアップグレードしたときに必要だった7つのこと
Laravel5.5から6.4にアップグレードしたときに必要だった7つのことLaravel5.5から6.4にアップグレードしたときに必要だった7つのこと
Laravel5.5から6.4にアップグレードしたときに必要だった7つのこと
 
Vue.jsでFormをAtomic Designしてみた時のコンポーネント間のデータのやりとり
Vue.jsでFormをAtomic Designしてみた時のコンポーネント間のデータのやりとりVue.jsでFormをAtomic Designしてみた時のコンポーネント間のデータのやりとり
Vue.jsでFormをAtomic Designしてみた時のコンポーネント間のデータのやりとり
 
Laravelで式年遷宮中の現場で うまくいってること・ うまくいっていないこと
Laravelで式年遷宮中の現場でうまくいってること・うまくいっていないことLaravelで式年遷宮中の現場でうまくいってること・うまくいっていないこと
Laravelで式年遷宮中の現場で うまくいってること・ うまくいっていないこと
 
GoでシュッとWebスクレイピングする
GoでシュッとWebスクレイピングするGoでシュッとWebスクレイピングする
GoでシュッとWebスクレイピングする
 
初心者がGoでCLIツール作ってみて学んだこと
初心者がGoでCLIツール作ってみて学んだこと初心者がGoでCLIツール作ってみて学んだこと
初心者がGoでCLIツール作ってみて学んだこと
 
「Laravelから学びレガシーと闘いはじめた」のその後
「Laravelから学びレガシーと闘いはじめた」のその後「Laravelから学びレガシーと闘いはじめた」のその後
「Laravelから学びレガシーと闘いはじめた」のその後
 
無知の表明でチームをビルドする
無知の表明でチームをビルドする無知の表明でチームをビルドする
無知の表明でチームをビルドする
 
許可を求めるな謝罪せよ?
許可を求めるな謝罪せよ?許可を求めるな謝罪せよ?
許可を求めるな謝罪せよ?
 
Laravelから学びレガシーと闘いはじめた
Laravelから学びレガシーと闘いはじめたLaravelから学びレガシーと闘いはじめた
Laravelから学びレガシーと闘いはじめた
 
2016年恥ずかしいふりかえり
2016年恥ずかしいふりかえり2016年恥ずかしいふりかえり
2016年恥ずかしいふりかえり
 
My開発環境の話
My開発環境の話My開発環境の話
My開発環境の話
 
テストを書くのに挫折したあとやったこと
テストを書くのに挫折したあとやったことテストを書くのに挫折したあとやったこと
テストを書くのに挫折したあとやったこと
 
LaravelアプリケーションをSeleniumでテストしてみた
LaravelアプリケーションをSeleniumでテストしてみたLaravelアプリケーションをSeleniumでテストしてみた
LaravelアプリケーションをSeleniumでテストしてみた
 
Dockerをすこーしさわってみる
DockerをすこーしさわってみるDockerをすこーしさわってみる
Dockerをすこーしさわってみる
 
5分でなんとなーくわかるDocker
5分でなんとなーくわかるDocker5分でなんとなーくわかるDocker
5分でなんとなーくわかるDocker
 
WindowsでもVagrantとChefでLaravelのローカル環境を(自分で)つくりたい!
WindowsでもVagrantとChefでLaravelのローカル環境を(自分で)つくりたい!WindowsでもVagrantとChefでLaravelのローカル環境を(自分で)つくりたい!
WindowsでもVagrantとChefでLaravelのローカル環境を(自分で)つくりたい!
 

今日からGoをはじめる人に伝えたい$GOPATHではまった話