Elsaの技術日記(徒然なるままに)

主に自分で作ったアプリとかの報告・日記を記載

MENU

Go言語 導入 (Ubuntuへの環境構築編)

最近フロントエンドを主に進めていたので、そろそろサーバサイドもやっていきたいなと思う今日この頃。


今までnodejsやdjango(python)とか使って見たけど、”別の言語学んでみたいな”と思い調べてみたところ、
最近はGo言語が徐々に伸びているとのこと。
f:id:Elsammit:20200824010216p:plain


ちょっと使って見ようかな?と思い、まずは環境構築を行うことにしました。



と思ったら、環境構築からエラー続きで躓いてしまったので今後困らないように備忘録残しておこうと思います。

■環境構築

今回用いた環境はこちらになります。

・ホストOS:WIndows10
・VM:VirtualBox 6.1.4
・ゲストOS:Ubuntu16.04


まずGoをインストールします。

sudo apt install golang


そして、動作確認のためのHello Worldを表示するこちらのソースを作成。

package main

import "fmt"

func main(){
        fmt.Printf("Hello World \n");
}

こちらのコマンドで実行!!

go run ファイル名.go

問題なく"Hello World"が表示されました。

■Go言語のWebアプリケーションフレームワークインストール

次にWebアプリケーションフレームワークであるGinをインストールします。

go get github.com/gin-gonic/gin

って、あれ?? 上手くいかない。。。

どうやらパスを通さなければならないらしいので、
こちらをbash_profileに書き込み。

export GOPATH=$HOME/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN

再起動を行って、もう一度Ginをインストール!!

。。。ダメやった泣
なぜや泣

こんなエラーが発生する。。。

Get compile error undefined: http.SameSite


色々調べてみると、どうやらバージョンが1.11以上でないとhttp.SameSiteが使えない模様。


早速こちらのコマンドでバージョンを確認したところ、1.6だった。。。
だから動かいないんじゃん!!

go version

ということで、go言語のバージョンアップを行うことにしました。

■go言語バージョンアップ

どうやってやるのだろう。。。apt-getを用いてダウンロードすると1.6になってしまうし。


調べてみるとこちらも手順があったので忘れないように残しておきます!!


まずバージョンを指定してインストールを実施。

sudo apt install golang-1.11


次にシンボリックリンクを再設定。
※こちらを実施しないとバージョン1.6のままになってしまうので注意

cd /usr/bin
sudo mv go go_back                                ←バックアップとして残しておく
sudo mv gofmt gofmt_back             ←バックアップとして残しておく
sudo ln -s /usr/lib/go-1.11/bin/go /usr/bin/go
sudo ln -s /usr/lib/go-1.11/bin/gofmt /usr/bin/gofmt


最後にバージョンを確認。

$ go version
go version go1.11.5 linux/amd64

そして、GInを再度インストールすると、、、OK!!できました!!

■サーバサイド実装

早速GInフレームワークを用いて動作確認!!

一旦、サンプルを展開してくれている方のソースをそのまま利用。

package main

import "github.com/gin-gonic/gin"

func main() {
        r := gin.Default()
        r.GET("/ping", func(c *gin.Context) {
                c.JSON(200, gin.H{
                        "message": "pong",
                })
        })
        r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}

こちらを保存して、

go run ファイル名.go

を実行!!

Webブラウザでアクセスしたところ、問題なく表示されることを確認。
f:id:Elsammit:20200824005717p:plain


ふぅ~~なんとかできたw

■最後に

今更だけど、サーバサイド側の言語とかフレームワークとか手を出しすぎだな。。と思ってきた。
どれかに絞っていかなきゃな。。。
今のところどれも中途半端で自分の知識じゃ使い物にならないし。。。


node.js、go言語、djangoどれが一番いいんだろう。。。後で調べてみようかな?