• トップ
  • ブログ一覧
  • 【第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)を習得したい!~笹川先生(株)ライトコードでモバイルアプリケーション開発をしている笹川...

    ライトコードでは、エンジニアを積極採用中!

    ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。

    採用情報へ

    笹川(エンジニア)

    笹川(エンジニア)

    おすすめ記事

    エンジニア大募集中!

    ライトコードでは、エンジニアを積極採用中です。

    特に、WEBエンジニアとモバイルエンジニアは是非ご応募お待ちしております!

    また、フリーランスエンジニア様も大募集中です。

    background