【第8回】Go言語(Golang)入門~環境見直し編~
IT技術
第8回~Go言語(Golang)入門~
(株)ライトコードの笹川(ささがわ)です!
前回は、TwitterAPI を利用し、HTMLテンプレートでエゴサーチの結果を表示しました。
今回は、なんと、Goの環境やパッケージ管理を見直していきます!
それでは、いってみましょう!
前回の記事はこちら
環境の見直し
1回目の記事を書いた際に、弊社のメンバーから
「どうせだったら brew とか goenv で導入してみればよかったのに」
…というお言葉を頂いたので、折角なので、goenv で go の環境構築をやりなおしてみることにしました。
goenvとは
goenvとは、rbenv をベースとしたGo言語(Golang)のバージョン管理ツールです。
brew経由でインストールでき、バージョンを指定してインストール出来ることから、チーム開発や複数の環境での開発をしたいときに有用です。
goenvを導入してみよう
Go言語(Golnag)のバージョン1.13は、2019/10/2時点で、goenv の master には入っていないようなので、--HEADをつけてインストールします。
1brew install --HEAD goenv
PATHを通す
PATH を通します。
1echo 'export PATH=$HOME/.goenv/bin:$PATH' >> ~/.bash_profile
2echo 'export GOENV_DISABLE_GOPATH=1' >> ~/.bash_profile
3echo 'eval $(goenv init -)' >> ~/.bash_profile
ターミナルで PATH を読み直します。
1source ~/.bash_profile
インストール
Go言語(Golnag)のバージョン1.13をインストールします。
1goenv install 1.13.0
端末全体で使う Go言語(Golang)のバージョンを1.13に指定します。
1goenv global 1.13.0
GOPATH 等は、第1回目で設定したものと同じなので割愛します。
これで、goenv の導入は完了です。
なお、インストーラー経由でインストールしたものを、アンインストールしたい場合はこちらのドキュメントを参考にしてください。
第1回目の記事はこちら
2019.09.13【第1回】Go言語(Golang)入門~環境構築編~第1回~Go言語(Golang)を習得したい!~笹川先生(株)ライトコードでモバイルアプリケーション開発をしている笹川...
パッケージ管理見直し
1回目の記事を書いた際に、こんな「はてなブックマークのコメント」を頂きました。
【第1回】Go言語(Golang)入門~環境構築編~ – 株式会社ライトコード
Go 1.13を使うなら、depではなくて標準のGo Modulesを使ってみては?
なので、今回はパッケージ管理ツールを、dep から Go Modules に変更してみたいと思います。
depを削除する
まずは、Gopkg.toml と Gopkg.lock を削除します。
1rm -f Gopkg.*
次に、vender ディレクトリを削除します。
1rm -fr vendor
dep のアンインストールをします。
1brew uninstall dep
これで、dep の削除は完了しました。
下記のようにコメントを頂きましたので、もしかするとここの手順は不要かもしれません。
dep→Go modulesはgo mod initでGopkg.*を見て移行してくれるからdep削除の前にinitしたほうが楽かもしれない。2019/10/31
Go Modulesを入れてみよう
ターミナルで main.go がある場所まで移動し、Go Modules の初期化を実行します。
1go mod init
main.go のあるディレクトリ内に go.mod というファイルが作成できていたら成功です。
次に、main.go に簡単な処理を記述します。
1package main
2
3import (
4 "fmt"
5 "rsc.io/quote"
6)
7
8func main() {
9 fmt.Println(quote.Hello())
10}
Go Modules は、dep と異なり、go build コマンドでパッケージを導入してくれますので、go build コマンドを実行します。
1go build main.go
main.go のあるディレクトリに main というファイルが出来ていたら成功です。
実行
それでは、main.go を実行してみましょう。
1$ go run main.go
2こんにちは世界。
成功したようです。
このまま、以前に作成したhello.goの処理を呼び出してみます。
1package main
2
3import "go_example/hello"
4
5func main() {
6 hello.SayHello()
7}
main.go に処理を記述したら実行してみます。
1$ go run main.go
2hello, world
無事に呼び出しができました!
環境構築用のシェルで作ってみよう
複数の環境での goenv を利用することで開発環境構築が容易になったので、環境構築用のシェルファイルを作成してみたいと思います。
setup.sh を作成し、まずはいつもの定型文を追加します。
1#!/bin/bash
ディレクトリ作成
次に、作業用のディレクトリを作成します。
1mkdir -p development/go/src
goenvのインストールとPATH設定
ディレクトリ作成後は、先述の通りに goenv のインストールと PATH設定をします。
1brew install --HEAD goenv
2echo "# golang" >> ~/.bash_profile
3echo export PATH='$HOME/.goenv/bin:$PATH' >> ~/.bash_profile
4echo export GOENV_DISABLE_GOPATH=1 >> ~/.bash_profile
5echo eval "$(goenv init -)" >> ~/.bash_profile
6source ~/.bash_profile
7goenv install 1.13.0
8goenv global 1.13.0
9goenv rehash
GOPATHを通す
次に、GOPATH を通します。
1echo export GOPATH='$HOME/development/go' >> ~/.bash_profile
2echo export PATH='$PATH:$GOPATH/bin' >> ~/.bash_profile
3echo export PATH='$PATH:/usr/local/go/bin' >> ~/.bash_profile
4source ~/.bash_profile
リポジトリからclone
GOPATH を通したら、リポジトリから clone します。
1cd $GOPATH/src
2git clone https://github.com/noriyuki-sasagawa/go_example.git
実行
clone が終わったら、main.go を実行します。
1cd $GOPATH/src/go_example/
2go run main.go
まとめたものはこちらの setup.sh になります。
これで、シェルの作成は完了となります。
Go言語(Golang)の実行環境がない端末で下記を実行すると Hello, World と表示されるはずです。
1sh -c "$(curl -fsSL https://raw.githubusercontent.com/noriyuki-sasagawa/go_example/master/setup.sh)"
第9回につづく!
今回は、環境の見直しで Go言語(Golang)を、パッケージからではなく、goenv 経由でインストールしました。
バージョン管理については、使うコマンドとしては差異はあるものの、明らかに開発効率が悪くなることもないので、今後も Go Modules を利用して行きたいと思います。
なお、今回作成した goファイルは、こちらのリポジトリにて管理しています。
次回の記事はこちら
オススメのGo入門本
こちらの記事もオススメ!
2020.08.08Go言語 特集知識編人気急上昇中のGo言語(Golang)って何だ?実装編Go言語(Golang)入門...
2020.07.17ライトコード的「やってみた!」シリーズ「やってみた!」を集めました!(株)ライトコードが今まで作ってきた「やってみた!」記事を集めてみました!※作成日が新し...
第1回の記事はこちら
2019.09.13【第1回】Go言語(Golang)入門~環境構築編~第1回~Go言語(Golang)を習得したい!~笹川先生(株)ライトコードでモバイルアプリケーション開発をしている笹川...
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ
笹川(エンジニア)
新潟生まれ新潟育ち本業はモバイルアプリエンジニア。 日々、猫(犬)エンジニアとして活躍中!
おすすめ記事
移転したライトコード大阪オフィスを調査せよ!
広告メディア事業部
2024.04.03
日常
【GCP】BIG QUERYを触り程度に理解してみる
かねまさ(エンジニア)
2024.04.02
IT技術
【Android】Github ActionsでFirebase Test Labの実行を分散する
笹川(エンジニア)
2024.04.02
IT技術
【Next.js】App Router で使用できるキャッシュまとめ
モーリー(エンジニア)
2024.03.29
IT技術
GitHubActionsのランナーに触れてみた
こやまん(エンジニア)
2024.03.28
IT技術