Go言語を使ったWEBアプリケーション作成の環境構築手順

# 概要
windowsでGo言語を使ったWEBアプリケーション作成の環境を構築する

※前提としてVSCodeはインストール済みである事とする。
参考
[VSCodeでGo言語の開発環境を構築する](https://qiita.com/melty_go/items/c977ba594efcffc8b567)

# 目次
[1. Go言語のインストール](#1-go言語のインストール)
[2. VSCodeのGo拡張機能をインストール](#2-vscodeのgo拡張機能をインストール)
[3. プロジェクトの作成](#3-プロジェクトの作成)
[4. echoを使ってWEBサーバーを作成](#4-echoを使ってwebサーバーを作成)
[5. goのコマンドのまとめ](#5-goのコマンドのまとめ)


# 1. Go言語のインストール
[ダウンロードページ](https://go.dev/dl/)よりwindows版のインストーラーをダウンロードする

![20221201-0011.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2749195/517c2c80-1c86-3a6e-8449-ec96c94f3872.jpeg)



インストーラーを実行する

![20221201-0021.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2749195/2bdedd08-386e-85a1-676b-6ef5dbbd585b.jpeg)
![20221201-0031.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2749195/1ac59aaa-bfdb-c20d-df7d-574aa4298d0c.jpeg)
![20221201-0041.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2749195/e343c427-c88d-64e9-2205-2bd1578ee33e.jpeg)
![20221201-0051.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2749195/bf645cd2-6d2d-78a1-463f-3b5f8e7b4c6b.jpeg)
![20221201-0061.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2749195/1d695cf4-ed8d-1867-d6b5-d8c7441b13eb.jpeg)


コマンドプロンプト等で下記コマンドを実行してバージョンが表示されればインストールOKです
```
$ go version

go version go1.19.3 windows/amd64
```


# 2. VSCodeのGo拡張機能をインストール

VSCodeを起動、拡張機能の検索で「go」と入力して検索
下記をインストールする

![20221201-0071.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2749195/e68aa852-0747-821c-0470-4b757ba758c2.jpeg)


コマンドパレット(Ctrl+Shift+P)を開いてGO: Install/Update toolsで検索

![20221201-0081.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2749195/96a1c229-242b-34de-881f-3f0461a58ab7.jpeg)


全ツールを選択し、OKボタンを押下してインストール

![20221201-0091.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2749195/09d07566-6210-0dec-81b4-bd420910aafe.jpeg)



# 3. プロジェクトの作成

プロジェクトのルートディレクトリを作成するフォルダを開く
新しいフォルダの作成でルートディレクトリを作成する（例はC:\do\sample-app)

![20221201-0101.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2749195/79cb6e18-8044-8cc1-aa8a-8cce2bf7fb6b.jpeg)


ターミナルを開き、コマンド go mod init sample-app を実行して初期化を行う

![20221201-0111.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2749195/2b2d93cb-3628-1e8e-9757-906e1a29ef1f.jpeg)


main.goファイルをルートディレクトリに作成

```go:main:go
package main

import "fmt"

func main() {
    name := "Go Developers"
    fmt.Println("Azure for", name)
}
```

デバックを実行(F5)、コンソールに「Azure for Go Developers」が表示されればOK

![20221201-0121.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2749195/8b0c1005-e150-275f-d489-e28888ee8f61.jpeg)



# 4. echoを使ってWEBサーバーを作成

コマンドプロンプトを起動、ルートディレクトリに移動して下記コマンドを実行

```
go get github.com/labstack/echo/v4
```

インストールが完了すればgo.modにモジュールのインポートパスとバージョン情報が記載される
※同時にgo.sumも作成される
go.sumは依存先モジュールのハッシュを記録するためのファイル
go.modを元に取得したモジュールにマルウェアが仕込まれていたりしてハッシュが食い違う場合にエラーが発生する


![20221201-0131.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2749195/d5be72e1-870c-c9c9-1083-04fac59b53b1.jpeg)



main.goを下記内容に書き換える

```go:main.go
package main

import (
  "net/http"

  "github.com/labstack/echo"
)

func main() {
  e := echo.New()
  e.GET("/", func(c echo.Context) error {
    return c.String(http.StatusOK, "Hello, World!")
  })
  e.Logger.Fatal(e.Start(":1323"))
}
```

VSCodeにてF5を押す、または「実行とデバック」をクリックしてデバックを実行

![20221201-0141.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2749195/e2716422-4987-e03e-db69-2c0078ef0abb.jpeg)


デバックコンソールに「→ http server started on [::]:1323」が表示されればサーバーの起動成功
※packegeが不足しているエラーが表示される場合は該当パッケージを「go get packege名」でインストールすること

![20221201-015.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2749195/0154f4cd-e2f2-ebcc-8a62-b4b9d8808805.jpeg)


ブラウザでhttp://localhost:1323/ にアクセスし、下記ページが表示されればOK

![20221201-0161.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2749195/0dc1849b-5ac1-1fa1-9f19-2a143deaa44e.jpeg)




# 5. goコマンドのまとめ

○go run
binaryファイルを作成せずにgoファイルを実行する

```
$ go run main.go
```

WEBサーバーが立ち上がる
終了するときは「Ctrl+C」


○go build
binaryファイルを作成する

```
$ go build main.go
```

main.exeが作成される
実行するとWEBサーバーが立ち上がる


○go clean
go buildやgo.testで出力されたファイルを削除する

```
$ go clean
```


○go get packege
パッケージをインストールする

```
$ go get pakege名
```