• トップ
  • ブログ一覧
  • 【第8回】Go言語(Golang)入門~環境見直し編~
  • 【第8回】Go言語(Golang)入門~環境見直し編~

    笹川(エンジニア)笹川(エンジニア)
    2019.10.30

    IT技術

    第8回~Go言語(Golang)入門~

    秋山笹川先生

    (株)ライトコードの笹川(ささがわ)です!

    前回は、TwitterAPI を利用し、HTMLテンプレートでエゴサーチの結果を表示しました。

    今回は、なんと、Goの環境やパッケージ管理を見直していきます!

    それでは、いってみましょう!

    前回の記事はこちら

    featureImg2019.10.23【第7回】Go言語(Golang)入門~HTMLテンプレート利用編~第7回~Go言語(Golang)入門~笹川先生(株)ライトコードの笹川(ささがわ)です!今回は、前回に引き続き、Twi...

    環境の見直し

    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回目の記事はこちら

    featureImg2019.09.13【第1回】Go言語(Golang)入門~環境構築編~第1回~Go言語(Golang)を習得したい!~笹川先生(株)ライトコードでモバイルアプリケーション開発をしている笹川...

    パッケージ管理見直し

    1回目の記事を書いた際に、こんな「はてなブックマークのコメント」を頂きました。

    【第1回】Go言語(Golang)入門~環境構築編~ – 株式会社ライトコード

    Go 1.13を使うなら、depではなくて標準のGo Modulesを使ってみては?

    2019/09/14 02:59

    なので、今回はパッケージ管理ツールを、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ファイルは、こちらのリポジトリにて管理しています。

    次回の記事はこちら

    featureImg2019.11.06【第9回】Go言語(Golang)入門~ObjectBox導入編~第9回~Go言語(Golang)入門~笹川先生(株)ライトコードの笹川(ささがわ)です!前回は、Goの環境やパッケージ...

    オススメのGo入門本

    Goプログラミング実践入門 標準ライブラリでゼロからWebアプリを作る
    Goプログラミング実践入門 標準ライブラリでゼロからWebアプリを作る

     

    こちらの記事もオススメ!

    featureImg2020.08.08Go言語 特集知識編人気急上昇中のGo言語(Golang)って何だ?実装編Go言語(Golang)入門...

    featureImg2020.07.17ライトコード的「やってみた!」シリーズ「やってみた!」を集めました!(株)ライトコードが今まで作ってきた「やってみた!」記事を集めてみました!※作成日が新し...

    第1回の記事はこちら

    featureImg2019.09.13【第1回】Go言語(Golang)入門~環境構築編~第1回~Go言語(Golang)を習得したい!~笹川先生(株)ライトコードでモバイルアプリケーション開発をしている笹川...

    笹川(エンジニア)

    笹川(エンジニア)

    おすすめ記事